NetCDF

Last updated
Network Common Data Form
Filename extension
.nc
Internet media type application/netcdf
application/x-netcdf
Magic number CDF\001
\211HDF\r\n\032\n
Developed by University Corporation for Atmospheric Research (UCAR)
Latest release
4.9.2 [1]   OOjs UI icon edit-ltr-progressive.svg (17 March 2023;18 months ago (17 March 2023))
Type of formatscientific binary data
Extended from Common Data Format (CDF)
Hierarchical Data Format (HDF)
Website www.unidata.ucar.edu/software/netcdf/ OOjs UI icon edit-ltr-progressive.svg

NetCDF (Network Common Data Form) is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. The project homepage [2] is hosted by the Unidata program at the University Corporation for Atmospheric Research (UCAR). They are also the chief source of netCDF software, standards development, updates, etc. The format is an open standard. NetCDF Classic and 64-bit Offset Format are an international standard of the Open Geospatial Consortium. [3]

Contents

History

The project started in 1988 and is still actively supported by UCAR. The original netCDF binary format (released in 1990, now known as "netCDF classic format") is still widely used across the world and continues to be fully supported in all netCDF releases. Version 4.0 (released in 2008) allowed the use of the HDF5 data file format. Version 4.1 (2010) added support for C and Fortran client access to specified subsets of remote data via OPeNDAP. Version 4.3.0 (2012) added a CMake build system for Windows builds. Version 4.7.0 (2019) added support for reading Amazon S3 objects. Version 4.8.0 (2021) added further support for Zarr. Version 4.9.0 (2022) added support for Zstandard compression. Further releases are planned to improve performance, add features, and fix bugs.

The format was originally based on the conceptual model of the Common Data Format developed by NASA, but has since diverged and is not compatible with it. [4] [5]

Format description

The netCDF libraries support multiple different binary formats for netCDF files:

All formats are "self-describing". This means that there is a header which describes the layout of the rest of the file, in particular the data arrays, as well as arbitrary file metadata in the form of name/value attributes. The format is platform independent, with issues such as endianness being addressed in the software libraries. The data are stored in a fashion that allows efficient subsetting.

Starting with version 4.0, the netCDF API [6] allows the use of the HDF5 data format. NetCDF users can create HDF5 files with benefits not available with the netCDF format, such as much larger files and multiple unlimited dimensions.

Full backward compatibility in accessing old netCDF files and using previous versions of the C and Fortran APIs is supported.

Software

Access libraries

The software libraries supplied by UCAR provide read-write access to netCDF files, encoding and decoding the necessary arrays and metadata. The core library is written in C, and provides an application programming interface (API) for C, C++ and two APIs for Fortran applications, one for Fortran 77, and one for Fortran 90. An independent implementation, also developed and maintained by Unidata, is written in 100% Java, which extends the core data model and adds additional functionality. Interfaces to netCDF based on the C library are also available in other languages including R (ncdf, [7] ncvar and RNetCDF [8] packages), Perl Data Language, Python, Ruby, Haskell, [9] Mathematica, MATLAB, Interactive Data Language (IDL), Julia and Octave. The specification of the API calls is very similar across the different languages, apart from inevitable differences of syntax. The API calls for version 2 were rather different from those in version 3, but are also supported by versions 3 and 4 for backward compatibility. Application programmers using supported languages need not normally be concerned with the file structure itself, even though it is available as open formats.

Applications

A wide range of application software has been written which makes use of netCDF files. These range from command line utilities to graphical visualization packages. A number are listed below, and a longer list [10] is on the UCAR website.

Common uses

It is commonly used in climatology, meteorology and oceanography applications (e.g., weather forecasting, climate change) and GIS applications.

It is an input/output format for many GIS applications, and for general scientific data exchange. To quote from their site: [27]

"NetCDF (network Common Data Form) is a set of interfaces for array-oriented data access and a freely-distributed collection of data access libraries for C, Fortran, C++, Java, and other languages. The netCDF libraries support a machine-independent format for representing scientific data. Together, the interfaces, libraries, and format support the creation, access, and sharing of scientific data."

Conventions

The Climate and Forecast (CF) conventions are metadata conventions for earth science data, intended to promote the processing and sharing of files created with the NetCDF Application Programmer Interface (API). The conventions define metadata that are included in the same file as the data (thus making the file "self-describing"), that provide a definitive description of what the data in each variable represents, and of the spatial and temporal properties of the data (including information about grids, such as grid cell bounds and cell averaging methods). This enables users of data from different sources to decide which data are comparable, and allows building applications with powerful extraction, regridding, and display capabilities.

Parallel-NetCDF

An extension of netCDF for parallel computing called Parallel-NetCDF (or PnetCDF) has been developed by Argonne National Laboratory and Northwestern University. [28] This is built upon MPI-IO, the I/O extension to MPI communications. Using the high-level netCDF data structures, the Parallel-NetCDF libraries can make use of optimizations to efficiently distribute the file read and write applications between multiple processors. The Parallel-NetCDF package can read/write only classic and 64-bit offset formats. Parallel-NetCDF cannot read or write the HDF5-based format available with netCDF-4.0. The Parallel-NetCDF package uses different, but similar APIs in Fortran and C.

Parallel I/O in the Unidata netCDF library has been supported since release 4.0, for HDF5 data files. Since version 4.1.1 the Unidata NetCDF C library supports parallel I/O to classic and 64-bit offset files using the Parallel-NetCDF library, but with the NetCDF API.

Interoperability of C/Fortran/C++ libraries with other formats

The netCDF C library, and the libraries based on it (Fortran 77 and Fortran 90, C++, and all third-party libraries) can, starting with version 4.1.1, read some data in other data formats. Data in the HDF5 format can be read, with some restrictions. Data in the HDF4 format can be read by the netCDF C library if created using the HDF4 Scientific Data (SD) API.

NetCDF-Java common data model

The NetCDF-Java library currently reads the following file formats and remote access protocols:

There are a number of other formats in development. Since each of these is accessed transparently through the NetCDF API, the NetCDF-Java library is said to implement a common data model for scientific datasets.

The Java common data model has three layers, which build on top of each other to add successively richer semantics:

  1. The data access layer, also known as the syntactic layer, handles data reading.
  2. The coordinate system layer identifies the coordinates of the data arrays. Coordinates are a completely general concept for scientific data; specialized georeferencing coordinate systems, important to the Earth Science community, are specially annotated.
  3. The scientific data type layer identifies specific types of data, such as grids, images, and point data, and adds specialized methods for each kind of data.

The data model of the data access layer is a generalization of the NetCDF-3 data model, and substantially the same as the NetCDF-4 data model. The coordinate system layer implements and extends the concepts in the Climate and Forecast Metadata Conventions. The scientific data type layer allows data to be manipulated in coordinate space, analogous to the Open Geospatial Consortium specifications. The identification of coordinate systems and data typing is ongoing, but users can plug in their own classes at runtime for specialized processing.

See also

Related Research Articles

<span class="mw-page-title-main">MATLAB</span> Numerical computing environment and programming language

MATLAB is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages.

Java Platform, Standard Edition is a computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition (J2SE).

Flexible Image Transport System (FITS) is an open standard defining a digital file format useful for storage, transmission and processing of data: formatted as multi-dimensional arrays, or tables. FITS is the most commonly used digital file format in astronomy. The FITS standard was designed specifically for astronomical data, and includes provisions such as describing photometric and spatial calibration information, together with image origin metadata.

The Message Passing Interface (MPI) is a standardized and portable message-passing standard designed to function on parallel computing architectures. The MPI standard defines the syntax and semantics of library routines that are useful to a wide range of users writing portable message-passing programs in C, C++, and Fortran. There are several open-source MPI implementations, which fostered the development of a parallel software industry, and encouraged development of portable and scalable large-scale parallel applications.

<span class="mw-page-title-main">Hierarchical Data Format</span> Set of file formats

Hierarchical Data Format (HDF) is a set of file formats designed to store and organize large amounts of data. Originally developed at the U.S. National Center for Supercomputing Applications, it is supported by The HDF Group, a non-profit corporation whose mission is to ensure continued development of HDF5 technologies and the continued accessibility of data stored in HDF.

OPeNDAP is an endeavor focused on enhancing the retrieval of remote, structured data through a Web-based architecture and a discipline-neutral Data Access Protocol (DAP).

GRIB is a concise data format commonly used in meteorology to store historical and forecast weather data. It is standardized by the World Meteorological Organization's Commission for Basic Systems, known under number GRIB FM 92-IX, described in WMO Manual on Codes No.306. Currently there are three versions of GRIB. Version 0 was used to a limited extent by projects such as TOGA, and is no longer in operational use. The first edition is used operationally worldwide by most meteorological centers, for Numerical Weather Prediction output (NWP). A newer generation has been introduced, known as GRIB second edition, and data is slowly changing over to this format. Some of the second-generation GRIB is used for derived products distributed in the Eumetcast of Meteosat Second Generation. Another example is the NAM model.

Cumulus is a digital asset management software designed for client/server system which is developed by Canto Software. The product makes use of metadata for indexing, organizing, and searching.

<span class="mw-page-title-main">CUDA</span> Parallel computing platform and programming model

In computing, CUDA is a proprietary parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated general-purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA API and its runtime: The CUDA API is an extension of the C programming language that adds the ability to specify thread-level parallelism in C and also to specify GPU device specific operations. CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements for the execution of compute kernels. In addition to drivers and runtime kernels, the CUDA platform includes compilers, libraries and developer tools to help programmers accelerate their applications.

Intel Fortran Compiler, as part of Intel OneAPI HPC toolkit, is a group of Fortran compilers from Intel for Windows, macOS, and Linux.

CGNS stands for CFD General Notation System. It is a general, portable, and extensible standard for the storage and retrieval of CFD analysis data. It consists of a collection of conventions, and free and open software implementing those conventions. It is self-descriptive, cross-platform also termed platform or machine independent, documented, and administered by an international steering committee. It is also an American Institute of Aeronautics and Astronautics (AIAA) recommended practice. The CGNS project originated in 1994 as a joint effort between Boeing and NASA, and has since grown to include many other contributing organizations worldwide. In 1999, control of CGNS was completely transferred to a public forum known as the CGNS Steering CommitteeArchived 2007-06-24 at the Wayback Machine. This Committee is made up of international representatives from government and private industry.

XMDF is a library providing a standard format for the geometric data storage of river cross-sections, 2D/3D structured and unstructured meshes, geometric paths through space, and associated time data. XMDF uses HDF5 for cross-platform data storage and compression. It was initiated in Engineer Research and Development Center (ERDC) and is developed by Aquaveo . API includes interfaces for C/C++ and Fortran.

Apache Empire-db is a Java library that provides a high level object-oriented API for accessing relational database management systems (RDBMS) through JDBC. Apache Empire-db is open source and provided under the Apache License 2.0 from the Apache Software Foundation.

Content migration is the process of moving information stored on a given computer information system (IS) to a new system. The IS may be a Web content management system (CMS), a digital asset management (DAM), or a document management system (DMS). The IS may also be based on flat HTML content, including HTML files, Active Server Pages (ASP), JavaServer Pages (JSP), PHP, or content stored in some type of HTML/JavaScript based system and can be either static or dynamic content.

GEOMS – Generic Earth Observation Metadata Standard is a metadata standard used for archiving data from groundbased networks, like the Network for the Detection of Atmospheric Composition Change (NDACC), and for using this kind of data for the validation of NASA and ESA satellite data.

Windows Runtime (WinRT) is a platform-agnostic component and application architecture first introduced in Windows 8 and Windows Server 2012 in 2012. It is implemented in C++ and officially supports development in C++, Rust/WinRT, Python/WinRT, JavaScript-TypeScript, and the managed code languages C# and Visual Basic (.NET) (VB.NET).

HTML audio is a subject of the HTML specification, incorporating audio input, playback, and synthesis, as well as speech to text, all in the browser.

Absoft Corporation was an American software company active from 1980 to 2022. They were best known for their set of Fortran compilers for Microsoft Windows, Apple Macintosh, and Linux operating systems. The compilers are source code compatible across platforms.

The High-performance Integrated Virtual Environment (HIVE) is a distributed computing environment used for healthcare-IT and biological research, including analysis of Next Generation Sequencing (NGS) data, preclinical, clinical and post market data, adverse events, metagenomic data, etc. Currently it is supported and continuously developed by US Food and Drug Administration, George Washington University, and by DNA-HIVE, WHISE-Global and Embleema. HIVE currently operates fully functionally within the US FDA supporting wide variety (+60) of regulatory research and regulatory review projects as well as for supporting MDEpiNet medical device postmarket registries. Academic deployments of HIVE are used for research activities and publications in NGS analytics, cancer research, microbiome research and in educational programs for students at GWU. Commercial enterprises use HIVE for oncology, microbiology, vaccine manufacturing, gene editing, healthcare-IT, harmonization of real-world data, in preclinical research and clinical studies.

Zarr is an open standard for storing large multidimensional array data. It specifies a protocol and data format, and is designed to be "cloud ready" including random access, by dividing data into subsets referred to as chunks. Zarr can be used within many programming languages, including Python, Java, JavaScript, C++ and Julia. It has been used by organisations such as Google, Microsoft to publish large datasets.

References

  1. "NetCDF 4.9.2". 17 March 2023.
  2. "NetCDF Home Page". Unidata/UCAR. Archived from the original on 2017-12-06. Retrieved 2017-12-05.
  3. "OGC standard netCDF Classic and 64-bit Offset". Opengeospatial.org. Archived from the original on 2017-11-30. Retrieved 2017-12-05.
  4. "Background - The NetCDF Users' Guide". Unidata.ucar.edu. Retrieved 2013-11-27.
  5. "CDF - Frequently asked questions". NASA. Archived from the original on 2018-06-19. Retrieved 2018-11-02.
  6. "Version 4.0 of the netCDF API". Unidata.ucar.edu. Archived from the original on 2015-06-17. Retrieved 2013-11-27.
  7. "ncdf". Cirrus.ucsd.edu. 2013-08-06. Archived from the original on 2013-12-03. Retrieved 2013-11-27.
  8. "Rnetcdf". Cran.r-project.org. 2012-07-19. Archived from the original on 2013-12-02. Retrieved 2013-11-27.
  9. "hnetcdf: Haskell NetCDF library". hackage.haskell.org. 2014-07-10. Archived from the original on 2014-07-09. Retrieved 2014-07-10.
  10. "Software for Manipulating or Displaying NetCDF Data". Unidata.ucar.edu. Retrieved 2020-10-23.
  11. "ncBrowse". Epic.noaa.gov. Archived from the original on 2013-12-03. Retrieved 2013-11-27.
  12. "ncview". Meteora.ucsd.edu. Archived from the original on 2014-02-12. Retrieved 2013-11-27.
  13. "Panoply". Giss.nasa.gov. Goddard Institute for Space Studies. Archived from the original on 2014-06-20. Retrieved 2013-11-27.
  14. "PyNIO". Pyngl.ucar.edu. 2011-07-28. Archived from the original on 2013-11-25. Retrieved 2013-11-27.
  15. "netCDF4". Archived from the original on 2017-11-29. Retrieved 2017-12-04.
  16. "xarray: N-D labeled arrays and datasets in Python". Archived from the original on 2016-09-01. Retrieved 2016-09-07.
  17. "GrADS Home Page". Archived from the original on 2016-02-13. Retrieved 2018-04-10.
  18. "Coyote's Guide to IDL Programming". Dfanning.com. 2013-11-23. Archived from the original on 2015-09-23. Retrieved 2013-11-27.
  19. "Coyote Library". Dfanning.com. 2013-11-23. Archived from the original on 2015-09-23. Retrieved 2013-11-27.
  20. "ArcGIS version 9.2". Esri.com. Archived from the original on 2013-11-22. Retrieved 2013-11-27.
  21. "NetCDF Importing and Processing". originlab.com. Retrieved 2021-05-11.
  22. "NetCDF network Common Data Form". Gdal.org. Archived from the original on 2013-06-06. Retrieved 2013-11-27.
  23. David Pierce (2014). ncdf4: Interface to Unidata netCDF (version 4 or earlier) format data files. R package version 1.13. https://cran.r-project.org/package=ncdf4
  24. Pavel Michna and with contributions from Milton Woods (2015). RNetCDF: Interface to NetCDF Datasets. R package version 1.7-3. https://cran.r-project.org/package=RNetCDF
  25. http://www.hdfql.com
  26. OpenChrom: a cross-platform open source software for the mass spectrometric analysis of chromatographic data, Philip Wenig, Juergen Odermatt, BMC Bioinformatics ; 2010; doi : 10.1186/1471-2105-11-405
  27. "What Is netCDF?". Unidata Program Center. Archived from the original on 2013-03-15. Retrieved 2012-11-26.
  28. "parallel-netcdf". Mcs.anl.gov. 2013-11-17. Archived from the original on 2008-12-01. Retrieved 2013-11-27.
  29. "BUFR FORMAT DOCUMENTATION". Archived from the original on October 9, 2007. Retrieved February 2, 2008.
  30. Archived September 5, 2008, at the Wayback Machine
  31. Archived December 14, 2005, at the Wayback Machine
  32. Archived May 21, 2008, at the Wayback Machine
  33. "GINI Satellite Format". Weather.unisys.com. Archived from the original on 2013-12-02. Retrieved 2013-11-27.
  34. "Unidata | GEMPAK". Unidata.ucar.edu. Archived from the original on 2013-11-04. Retrieved 2013-11-27.
  35. Archived February 12, 2008, at the Wayback Machine
  36. "NetCDF". Unidata.ucar.edu. Archived from the original on 2013-11-29. Retrieved 2013-11-27.
  37. "NetCDF-4". Unidata.ucar.edu. Archived from the original on 2015-06-17. Retrieved 2013-11-27.
  38. Steve Ansari. "NCDC: Radar Resources". Ncdc.noaa.gov. Archived from the original on 2013-12-02. Retrieved 2013-11-27.