Loading AI tools
来自维基百科,自由的百科全书
網路通用資料格式(英語:Network Common Data Form,netCDF)是一種自描述、與機器無關、基於陣列的科學資料格式,同時也是支援建立、訪問和共享這一資料格式的函式庫。該專案首頁位於美國大氣科學研究大學聯盟(UCAR)的Unidata規劃網站。它也是netCDF軟體、標準開發、更新等的主要來源。netCDF格式是一種開放標準。
副檔名 | .nc |
---|---|
網路媒體型式 | application/netcdf application/x-netcdf |
開發者 | 美國大氣科學研究大學聯盟(UCAR) |
最新版本 | 4.9.2[1] ![]() |
格式類型 | 科學二進制資料 |
延伸自 | 通用資料格式(CDF) 外部資料表示法(XDR) 層級資料格式(HDF) |
網站 | www |
netCDF專案開始於1989年,UCAR目前對其積極支援,在新發行版中改進效能、增加功能並修正缺陷,目前版本系列是netCDF-4。netCDF的經典格式(CDF-1)和64位元偏移量格式(CDF-2),是開放地理空間協會採用的國際標準[2]。
1985年美國國家航空暨太空總署(NASA)的國家空間科學資料中心(NSSDC),設計並開發了通用資料格式(CDF),CDF最初是用FORTRAN寫成,並只能在VAX/VMS環境下獲得[3]。Unidata在1987年8月成立了關於CDF的工作群組,提議探索與NASA協同運作,擴充CDF的FORTRAN介面,定義C介面,並允許用一個單一呼叫訪問資料聚集,同時要維持與現存NASA介面相容的可能性。在1988年早些時候,Unidata的Glenn Davis用C開發了原型netCDF包,它位於網路表示層XDR格式的上層[4],而結果的程式可以在UNIX和VMS系統二者上實現。NASA的CDF和Unidata的netCDF從此獨立發展,但新近的CDF版本與netCDF共享了很多特徵。[5]
1991年Unidata發布了netCDF版本2.0,1997年發布了版本3.3。2003年7月美國能源部的阿貢國家實驗室和西北大學,貢獻了叫做並列netCDF(或稱PnetCDF)的一個netCDF平行計算擴充[6]。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和CDF-5)上的並列I/O。[5]
netCDF庫支援多種不同的二進制格式的netCDF檔案[7]:
所有格式都是「自描述的」。 這意味其中有一個頭部,它描述檔案餘下部分的格局,特別是陣列資料,連同以名稱/值特性形式的任意檔案元資料。這個格式是跨平台的,涉及的問題如位元組序在軟體庫中解決。資料以允許有效率的子集化的方式來儲存。
起始於版本4.0,netCDF API允許使用HDF5資料格式。netCDF使用者可以建立HDF5檔案從而獲得netCDF格式不具備的利益,比如更大的檔案和多重無限制的維度。
完全後向相容,可訪問舊有netCDF檔案並支援以前版本的C和Fortran API。
netCDF常用於氣候學、氣象學和海洋學應用,如天氣預報、氣候變化;也用於地理資訊系統應用,是很多GIS應用的輸入/輸出格式;並用於通用科學資料交換。從它的站點引述如下[10]:netCDF(網路公用資料格式)是用於面向陣列資料訪問的一組介面,和針對C、Fortran、C++、Java和其他語言的一套自由發行的資料訪問庫。netCDF庫支援用來表示科學資料的一種機器無關格式。介面、庫和格式一起支援建立、訪問和共享科學資料。
UCAR發布的軟體庫提供了對netCDF檔案的讀寫訪問,編碼和解碼所需的陣列和元資料。核心庫是用C編寫的,並為C或C++應用提供API,為Fortran應用提供了兩個API,一個給Fortran 77,一個給Fortran 90。Unidata還開發維護一個獨立實現,使用100% Java寫成,它擴充了核心資料模型並增加了額外的功能。其他程式語言基於netCDF的C庫也能獲得至其API的介面,這包括R、Perl資料語言、Python、Ruby、Haskell[11]、Mathematica、MATLAB、IDL和Octave。API呼叫規定在不同語言間非常類似,當然會有著不可避免的不同語法。不同版本的API呼叫是後向相容的。應用編程者使用支援這個庫的語言,在正常情況下不需要關心檔案結構自身,即使它作為開放格式是可以獲知的。
netCDF4-python
[12],此外,讀寫netCDF-4格式可用h5netcdf[13];讀寫其他netCDF格式可用SciPy。xarray
模組可將netCDF匯入匯出於pandas的DataFrame
對象[14];cfgrib是ECMWF發行的使用ecCodes並遵從CF約定,將GRIB對映到NetCDF通用資料模型的介面[15]。NCAR的PyNIO模組支援多種netCDF格式,它的開發已經停止而進入維護狀態[16]。現在已經出產了範圍廣泛的使用netCDF檔案的應用程式。它們的範圍從命令列實用程式到圖形視覺化包。下面列出其中一小部分,而更長的列表可見於UCAR網站列表[19]:
氣候和預報(CF)約定是對地球科學資料的元資料約定,意圖用於促進處理和共享通過netCDF應用編程介面(API)建立的檔案。CF約定於2003年建立,普遍化並擴充了早期的協同運作海洋/大氣研究資料服務(COARDS)約定[29]和對氣候資料的Gregory/Drach/Tett(GDT)約定[30]。CF約定定義了與資料包含在同一個檔案中的元資料,從而使得檔案「自我描述」,提供對在每個變數中的資料表示的是什麼的確切描述,和資料的空間的和時間的屬性的確切描述,包括關於網格的資訊,比如網格單元邊界和單元平均方法。這使得能夠使用來自不同來源的資料,確定哪些資料是可比較的,並允許建造有著強力的提取、重新插值和顯示能力的應用。Unidata 在2007年至2011年開發了LibCF庫[31]。
並列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格式的資料可以讀取,但有一些限制[32]。使用HDF4科學資料(SD)API建立的HDF4格式的資料,可以用netCDF C庫讀取。
netCDF-Java庫目前已經能夠讀取很多檔案格式和遠端訪問協定,並且正在開發對一些其他的格式的支援。因為這些都是通過netCDF API透明的進行訪問,netCDF-Java庫被稱為實現了科學資料集的「通用資料模型」。