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 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.
The project started in 1989 and is still actively supported by UCAR.
Version 3.x (released in 1997) is still widely used across the world and
maintained by UCAR (most recent update 2017). Version 4.0 (released in
2008) allows the use of the
HDF5 data file format. Version 4.1 (2010) adds support for C and Fortran client access to specified subsets of remote data via
OPeNDAP. Further releases have improved performance, added features, and fixed 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.
Format
The netCDF libraries support multiple different binary formats for netCDF files:
- The classic format was used in the first netCDF release, and is still the default format for file creation.
- The 64-bit offset format was introduced in version 3.6.0, and it supports larger variable and file sizes.
- The netCDF-4/HDF5 format was introduced in version 4.0; it is the HDF5 data format, with some restrictions.
- The HDF4 SD format is supported for read-only access.
- The CDF5 format is supported, in coordination with the parallel-netcdf project.
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 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.
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
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,
ncvar and
RNetCDF packages),
Perl,
Python,
Ruby,
Haskell,
Mathematica,
MATLAB,
IDL, 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.
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.
Parallel-NetCDF
An extension of netCDF for
parallel computing called Parallel-NetCDF (or PnetCDF) has been developed by
Argonne National Laboratory and
Northwestern University. 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.