NetCDF

历史

1985年美国国家航空航天局（NASA）的国家空间科学数据中心（NSSDC）设计并开发了通用数据格式（CDF），CDF最初是用FORTRAN写成并只能在VAX/VMS环境下获得。Unidata在1987年8月成立了关于CDF的工作组，提议探索与NASA协作扩展CDF的FORTRAN接口，定义C接口，并允许用一个单一调用访问数据聚集，同时要维持与现存NASA接口兼容的可能性。在1988年早些时候，Unidata的Glenn Davis用C开发了原型netCDF包，它位于网络表示层XDR格式的上层。这个原型证明了CDF接口的基于XDR的一个单一文件实现可以在可接受代价下完成，而结果的程序可以在UNIX和VMS系统二者上实现。但这也说明了提供一个小的、可移植的、兼容于NASA CDF的有想要的通用性的FORTRAN接口是不实际的。NASA的CDF和Unidata的netCDF从此独立发展，但新近的CDF版本与netCDF共享了很多特征。
1991年Unidata发布了netCDF版本2.0，1997年发布了版本3.3。2003年7月美国能源部的阿贡国家实验室和西北大学贡献了叫做并行-NetCDF（或称PnetCDF）的一个netCDF并行计算扩展。2004年在NASA的资助下，Unidata与美国国家超级计算应用中心（NCSA）开始合作增进netCDF和HDF5的互操作性。2008年Unidata发布了版本4.0，允许使用HDF5数据文件格式。同时发布了版本3.6.3，它与版本4.0是同样的代码但关掉了netcdf-4特征，当前netCDF-3库仍然在世界各地被广泛使用。2010年Unidata发布了版本4.1.1，增加了对C和Fortran客户端通过OPeNDAP访问远程数据的特定子集的支持，并使用PnetCDF库支持在netCDF经典格式（CDF-1、CDF-2和2012年推出的CDF-5）上的并行I/O。

软件

netCDF常用于气候学、气象学和海洋学应用，如天气预报、气候变化；也用于地理信息系统应用，是很多GIS应用的输入/输出格式；并用于通用科学数据交换。从它的站点引述如下：netCDF（网络公用数据格式）是用于面向数组数据访问的一组接口，和针对C、Fortran、C++、Java和其他语言的一套自由发行的数据访问库。netCDF库支持用来表示科学数据的一种机器无关格式。接口、库和格式一起支持创建、访问和共享科学数据。

访问库

UCAR发布的软件库提供了对netCDF文件的读写访问，编码和解码所需的数组和元数据。核心库是用C编写的，并为C、C++应用提供API，为Fortran应用提供两个API，一个给Fortran 77，一个给Fortran 90。Unidata还开发维护一个独立实现，使用100% Java写成，它扩展了核心数据模型并增加了额外的功能。还可获得其他语言的到基于C库的netCDF的接口，包括R（ncdf、ncvar和RNetCDF包）、Perl数据语言、Python、Ruby、Haskell、Mathematica、MATLAB、IDL和Octave。API调用规定在不同语言间非常类似，尽管有着不可避免的不同语法。版本2的API调用与版本3的调用相当不同，但出于后向兼容而被版本3和版本4支持。应用编程者使用受支持语言，在正常情况下不需要关心文件结构自身，即使它是作为开放格式而获得的。

元数据约定

气候和预报（CF）约定是对地球科学数据的元数据约定，意图用于促进处理和共享通过NetCDF应用编程接口（API）创建的文件。CF约定于2003年建立，普遍化并扩展了早期的协作海洋/大气研究数据服务（COARDS）约定和对气候数据的Gregory/Drach/Tett（GDT）约定。CF约定定义了与数据包含在同一个文件中的元数据，从而使得文件“自我描述”，提供对在每个变量中的数据表示的是什么的确切描述，和数据的空间的和时间的属性的确切描述，包括关于网格的信息，比如网格单元边界和单元平均方法。这使得能够使用来自不同来源的数据，确定哪些数据是可比较的，并允许建造有着强力的提取、重新插值和显示能力的应用。Unidata 在2007年至2011年开发了LibCF库。

并行-NetCDF

并行-NetCDF扩展建造在MPI-IO之上，它是对MPI的I/O扩展。使用高层netCDF数据结构，并行-NetCDF库可以进行优化而在多处理器间高效分配文件读和写应用。并行-NetCDF包只可以读/写经典和64-bit偏移量格式。并行-NetCDF不能读或写在netCDF-4.0中可获得的基于HDF5的格式。并行-NetCDF包使用不同但类似的Fortran和C的API。
在Unidata netCDF库中自从版本4.0已经支持对HDF5数据文件的并行I/O。Unidata NetCDF C库自从版本4.1.1使用并行-NetCDF库支持对经典和64-bit偏移量文件的并行I/O，但使用NetCDF API。

与其他格式库的互操作性

netCDF C库，和基于它的库：Fortran 77和Fortran 90、C++和所有第三方库，自从版本4.1.1开始可以读一些其他数据格式的数据。HDF5格式的数据可以读取，但有一些限制。使用HDF4科学数据（SD）API创建的HDF4格式的数据，可以用netCDF C库读取。

NetCDF-Java通用数据模型

NetCDF-Java库当前已经能够读取很多文件格式和远程访问协议，并且正在开发对一些其他的格式的支持。因为这些都是通过NetCDF API透明的进行访问，NetCDF-Java库被称为实现了科学数据集的“通用数据模型”。