GRIB
GRIB(GRIdded Binary或通用定期發布的二進制形式信息)是通常用在氣象學中存儲歷史的和預報的天氣數據的簡明數據格式。它由世界氣象組織的基本系統委員會於1985年標準化,描述於WMO編碼手冊(出版物No.306),最初編號為FM 92-VIII Ext. GRIB。 第一版GRIB被世界範圍內的多數氣象中心業務化使用,用於數值天氣預報(NWP)輸出。第二版是2003年發表的GRIB2,最新編號為FM 92–XIV GRIB,氣象數據發布逐漸的變更到這個格式。
開發者 | 世界氣象組織 |
---|---|
最新版本 | master table version number 29[1] 2022年5月15日 |
格式類型 | 科學數據格式 |
免費格式? | 是 |
網站 | Manual on Codes - International Codes, Volume I.2 |
概述
編輯GRIB是國際公用的二進制格式,用來有效的存儲氣象/海洋的物理量場和描述它們的元數據。GRIB數據文件典型的由記錄的搜集組成,即多個GRIB記錄可以串聯在一起形成一個單一數據集。GRIB記錄是自描述數據對象,每個記錄都不只包含數據,而且包含描述空間網格、有效時間、垂直層次的元數據,故而把它們合併成數據文件的次序是任意的。每個GRIB記錄典型的包含特定時間和垂直層次的一個2-D經緯度坐標的數據網格,4-D GRIB數據集一般展開為時間或垂直層次不同的一組2-D記錄。GRIB2相比於GRIB,有着更加複雜的頭部字段集合用於元數據,還提供了可以更加顯著縮小文件大小的數據壓縮;GRIB2記錄還可以包含集合(ensemble)信息,適合於傳輸集合預報產品。[2]
網格數據包裝
編輯在WMO的GRIB2指南文檔中舉實例說明GRIB2報文(message)格式,選用了假想的500 hPa的位勢高度5 X 5網格,這25個高度值的範圍是從極小值5340位勢米(gpm)到極大值5460 gpm。演示了採用簡單包裝方案的編碼過程:
- 第一步,數值的單位位勢米(gpm)已經是SI單位,不需要轉換,否則需要轉換。
- 第二步,採用計算「字」位長度的方法,要求精度值D為1,即精確到小數點後1位,把所有值都縮放10D並取整為整數,結果範圍從53400到54600。
- 第三步,取參照值R為53400,所有網格值都減去這個參照值,余值範圍是從0至1200。
- 第四步,確定要表示極大余值1200需要的二進制位數,這裡是11位。
- 第五步,所有的余值都包裝入11位長的「字」中,25個值總共需要275位長,等價於34字節加上3位,再用0填充5位最終形成35字節。
解碼過程通過參照值R和精度值D把包裝後的值恢復為最初的值。這種從浮點數轉換成定點數的包裝方法可以初步縮減數據大小,也可稱為是一種數據壓縮;GRIB2支持在此基礎上的PNG和JPEG2000壓縮。
文件格式
編輯一個GRIB文件中可以有多個GRIB報文,每個報文開始於文字「GRIB」結束於文字「7777」,二者之間都是二進制的元數據和數據。GRIB報文結構與大多數氣象報文比如GRID(FM 47)一樣,劃分為多個節(section):
GRIB1 | GRIB2 |
---|---|
SECTION 0 指示符節 | SECTION 0 指示符節 |
SECTION 1 產品定義節 | SECTION 1 標識節 |
SECTION 2 局部使用節(可選) | |
SECTION 2 網格描述節(可選) | SECTION 3 網格定義節 |
SECTION 4 產品定義節 | |
SECTION 5 數據表示節 | |
SECTION 3 位圖節(可選) | SECTION 6 位圖節 |
SECTION 4 二進制數據節 | SECTION 7 數據節 |
SECTION 5 結束節 | SECTION 8 結束節 |
GRIB1的第2節,GRIB2的第1、3、4、5、7節,可在多個模板中選用其一,這裡模板的含義是:「對一組數據實體的標準化格局的描述」[3]。在GRIB2中,第2節到第7節、第3節到第7節或第4節到第7節,可以重複出現,從而允許在一個報文中出現多個網格數據。
軟件
編輯現有使用GRIB文件的一些應用軟件包,其範圍從命令行實用程序到圖形可視化包。
- ecCodes[4],是ECMWF開發的開源的C、Fortran90庫和Python模塊,可調用解碼和編碼GRIB和GRIB2數據的API,軟件包還包括一組有用的命令行工具[5]。它演化自GRIB API[6],向用戶提供了以鍵/值方式訪問元數據的一組函數。ECMWF還提供繪圖包Magics[7]和Metview[8]工作站/批處理系統,可處理和可視化GRIB和GRIB2文件。
- NCEP GRIB1 codes[9],開源的Fortran90庫w3lib,用於解碼和編碼GRIB格式的數據。
- NCEP GRIB2 codes[10],開源的Fortran90庫g2lib和C庫g2clib,用於解碼和編碼GRIB2格式的數據。
- WGRIB[11],基於命令行的實用工具,用來操縱、列清單和解碼GRIB文件。
- wgrib2[12],基於命令行的實用工具,不只是升級wgrib可讀取GRIB2文件,還可將其分片或分塊。
- 網格分析和顯示系統(GrADS),開源的基於命令行的桌面應用,直接處理GRIB和GRIB2文件[13]。
- NCAR命令語言[14],可以讀取、分析和可視化GRIB和GRIB2數據,並轉換它成為其他網格數據格式。
- CDO[15](氣候數據算子),是地球科學數據分析工具,支持GRIB和GRIB2。
- Picogrib[16],自由的C語言(FORTRAN可調用)GRIB解碼包,一定程度上兼容於ECMWF GRIBEX例程。
- JGrib[17],開源庫用來在Java中讀取GRIB文件。
- NetCDF-Java通用數據模型[18],是可以讀取GRIB和GRIB2文件的Java庫。
- PyNIO[19],是Python編程語言模塊,允許讀寫訪問各種數據格式,使用了建模在netCDF上的接口。
- PyGrib[20],python語言擴展模塊,允許讀寫GRIB和GRIB2格式。
- Meteosatlib[21],自由軟件C++庫和一組工具,在各種格式間轉換衛星圖像;它可以讀寫GRIB數據,並且它的GRIB編碼/解碼器可以單獨使用。
- 地理數據抽象庫(GDAL[22]),流行的開源地理數據讀寫庫。
- Xconv/Convsh[23],Xconv是一個圖形工具,用來顯示和轉換各種網格數據,並可在Linux和OS X操作系統上獲得。Convsh是它的命令行等價者。
- IDV[24],面向地球科學的平台無關的應用程序,可用來可視化和分析NetCDF、GRIB和GRIB2文件。
- degrib[25](曾叫做NDFD GRIB2解碼器),可讀取GRIB和GRIB2文件。
- zyGrib[26],是在Linux、Mac OS X和Windows上開源的圖形軟件,用來下載和顯示GRIB和GRIB2文件。
- XyGrib[27],是對zyGrib繼續開發的開源軟件,是GRIB和GRIB2文件閱讀器並可視化氣象數據提供離線分析能力。
- glgrib[28],這個應用使用OpenGL來顯示GRIB2場。具有光柵、等值線、向量、色條、比例尺、海岸線、邊界線、經緯度、蘭伯托投影、高斯網格。可以交互的(移動、縮放等)查看場。已經使用它來顯示高解析率的場(2.5km和1.25km全球)。
此外,一些天氣預報軟件和導航軟件及手機app支持GRIB或GRIB2,如ATMOGRAPH ModelVis[29]、Expedition[30]、PolarView[31]、OpenCPN[32]、GribAE[33]、qtVlm[34]和Weather4D[35];PredictWind Offshore App[36]、PocketGrib[37]、WeatherTrack[38]、mazu[39]、SailGrib[40]、iGrib[41]。
參見
編輯引用
編輯- ^ Manual on Codes - International Codes, Volume I.2, Annex II to the WMO Technical Regulations: Part B – Binary Codes, Part C – Common Features to Binary and Alphanumeric Codes. [2022-09-09]. (原始內容存檔於2022-12-02).
- ^ What is GRIB? (頁面存檔備份,存於網際網路檔案館).
- ^ Introduction to GRIB Edition1 and GRIB Edition 2 (頁面存檔備份,存於網際網路檔案館).
- ^ ecCodes. [2023-04-24]. (原始內容存檔於2023-05-01).
- ^ 命令行工具 (頁面存檔備份,存於網際網路檔案館)
- ^ GRIB API (頁面存檔備份,存於網際網路檔案館)
- ^ Magics(頁面存檔備份,存於網際網路檔案館)
- ^ Metview(頁面存檔備份,存於網際網路檔案館)
- ^ NCEP GRIB1 codes (頁面存檔備份,存於網際網路檔案館)
- ^ NCEP GRIB2 codes (頁面存檔備份,存於網際網路檔案館)
- ^ WGRIB (頁面存檔備份,存於網際網路檔案館)
- ^ wgrib2 (頁面存檔備份,存於網際網路檔案館)
- ^ 存档副本. [2019-06-09]. (原始內容存檔於2020-07-11).
- ^ NCAR命令語言(頁面存檔備份,存於網際網路檔案館)
- ^ CDO(頁面存檔備份,存於網際網路檔案館)
- ^ Picogrib(頁面存檔備份,存於網際網路檔案館)
- ^ JGrib(頁面存檔備份,存於網際網路檔案館)
- ^ NetCDF-Java通用数据模型. [2019-06-11]. (原始內容存檔於2008-05-09).
- ^ PyNIO(頁面存檔備份,存於網際網路檔案館)
- ^ PyGrib (頁面存檔備份,存於網際網路檔案館)
- ^ Meteosatlib(頁面存檔備份,存於網際網路檔案館)
- ^ GDAL(頁面存檔備份,存於網際網路檔案館)
- ^ Xconv/Convsh (頁面存檔備份,存於網際網路檔案館)
- ^ IDV (頁面存檔備份,存於網際網路檔案館)
- ^ degrib (頁面存檔備份,存於網際網路檔案館)
- ^ zyGrib(頁面存檔備份,存於網際網路檔案館)
- ^ XyGrib (頁面存檔備份,存於網際網路檔案館)
- ^ glgrib (頁面存檔備份,存於網際網路檔案館)
- ^ ATMOGRAPH ModelVis(頁面存檔備份,存於網際網路檔案館)
- ^ Expedition(頁面存檔備份,存於網際網路檔案館)
- ^ PolarView
- ^ OpenCPN (頁面存檔備份,存於網際網路檔案館)
- ^ GribAE(頁面存檔備份,存於網際網路檔案館)
- ^ qtVlm (頁面存檔備份,存於網際網路檔案館)
- ^ Weather4D (頁面存檔備份,存於網際網路檔案館)
- ^ PredictWind Offshore App (頁面存檔備份,存於網際網路檔案館)
- ^ PocketGrib(頁面存檔備份,存於網際網路檔案館)
- ^ WeatherTrack(頁面存檔備份,存於網際網路檔案館)
- ^ mazu (頁面存檔備份,存於網際網路檔案館)
- ^ SailGrib(頁面存檔備份,存於網際網路檔案館)
- ^ iGrib (頁面存檔備份,存於網際網路檔案館)