NetCDF

title: 历史.
content: 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客户端通过访问远程数据的特定子集的支持,并使用PnetCDF库支持在netCDF经典格式(CDF-1、CDF-2和2012年推出的CDF-5)上的并行I/O。
title: 格式描述.
content: netCDF库支持netCDF文件的多种不同的二进制格式:  所有格式都是“自描述的”。 这意味其中有一个头部,它描述文件余下部分的格局,特别是数组数据,连同以名称/值属性形式的任意文件元数据。这个格式是跨平台的,涉及的问题如字节序在软件库中解决。数据以允许有效的构造子集的方式来存储。  起始于版本4.0,netCDF API允许使用HDF5数据格式。NetCDF用户可以建立HDF5文件从而获得netCDF格式不具备的利益,比如更大的文件和多重无限制的维度。  完全后向兼容,可访问旧有netCDF文件并支持以前版本的C和Fortran API。
title: 软件.
content: netCDF常用于气候学、气象学和海洋学应用,如天气预报、气候变化;也用于地理信息系统应用,是很多GIS应用的输入/输出格式;并用于通用科学数据交换。从它的站点引述如下:netCDF(网络公用数据格式)是用于面向数组数据访问的一组接口,和针对C、Fortran、C++、Java和其他语言的一套自由发行的数据访问库。netCDF库支持用来表示科学数据的一种机器无关格式。接口、库和格式一起支持建立、访问和共享科学数据。
title: 访问库.
content: UCAR发布的软件库提供了对netCDF文件的读写访问,编码和解码所需的数组和元数据。核心库是用C编写的,并为 C、C++应用提供API,为Fortran应用提供两个API,一个给Fortran 77,一个给Fortran 90。Unidata还开发维护一个独立实现,使用100% Java写成,它扩展了核心数据模型并增加了额外的功能。还可获得其他语言的到基于C库的netCDF的接口,包括R(ncdf、ncvar和RNetCDF包)、、Python、Ruby、Haskell、Mathematica、MATLAB、IDL和Octave。API调用规定在不同语言间非常类似,尽管有着不可避免的不同语法。版本2的API调用与版本3的调用相当不同,但出于后向兼容而被版本3和版本4支持。应用编程者使用受支持语言,在正常情况下不需要关心文件结构自身,即使它是作为开放格式而获得的。
title: 应用.
content: 现在已经写出了使用netCDF文件的范围广泛的应用程序。它们的范围从命令行实用程序到图形可视化包。下面列出其中一小部分,而更长的列表可见于UCAR网站列表:
title: 元数据约定.
content: 气候和预报(CF)约定是对地球科学数据的元数据约定,意图用于促进处理和共享通过NetCDF应用编程接口(API)建立的文件。CF约定于2003年建立,普遍化并扩展了早期的协作海洋/大气研究数据服务(COARDS)约定和对气候数据的Gregory/Drach/Tett(GDT)约定。CF约定定义了与数据包含在同一个文件中的元数据,从而使得文件“自我描述”,提供对在每个变量中的数据表示的是什么的确切描述,和数据的空间的和时间的属性的确切描述,包括关于网格的信息,比如网格单元边界和单元平均方法。这使得能够使用来自不同来源的数据,确定哪些数据是可比较的,并允许建造有着强力的提取、重新插值和显示能力的应用。Unidata 在2007年至2011年开发了LibCF库。
title: 并行-NetCDF.
content: 并行-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。
title: 与其他格式库的互操作性.
content: netCDF C库,和基于它的库:Fortran 77和Fortran 90、C++和所有第三方库,自从版本4.1.1开始可以读一些其他数据格式的数据。HDF5格式的数据可以读取,但有一些限制。使用HDF4科学数据(SD)API建立的HDF4格式的数据,可以用netCDF C库读取。
title: NetCDF-Java通用数据模型.
content: NetCDF-Java库目前已经能够读取很多文件格式和远程访问协议,并且正在开发对一些其他的格式的支持。因为这些都是通过NetCDF API透明的进行访问,NetCDF-Java库被称为实现了科学数据集的“通用数据模型”。

Summary: 网络通用数据格式(英语:Network Common Data Form,NetCDF)是一种自描述、与机器无关、基于数组的科学数据格式,同时也是支持创建、访问和共享这一数据格式的函式库。该项目主页位于美国大气科学研究大学联盟(UCAR)的Unidata规划网站。它也是netCDF软件、标准开发、更新等的主要来源。NetCDF格式是一种开放标准。NetCDF的经典格式和64位偏移量格式是开放地理空间协会采用的国际标准。

NetCDF: 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.