GRIB(GRIdded Binary或通用定期发布的二进制形式信息)是通常用在气象学中存储历史的和预报的天气数据的简明数据格式。它由世界气象组织的基本系统委员会于1985年标准化,描述于WMO编码手册(出版物No.306),最初编号为FM 92-VIII Ext. GRIB。 第一版GRIB被世界范围内的多数气象中心业务化使用,用于数值天气预报(NWP)输出。第二版是2003年发表的GRIB2,最新编号为FM 92–XIV GRIB,气象数据发布逐渐的变更到这个格式。

General Regularly-distributed Information in Binary form
开发者世界气象组织
最新版本
master table version number 29[1]
2022年5月15日,​2年前​(2022-05-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)信息,适合于传输集合预报英语Ensemble forecasting产品。[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支持在此基础上的PNGJPEG2000压缩。

文件格式

一个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]

参见

引用

  1. ^ 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). 
  2. ^ What is GRIB?页面存档备份,存于互联网档案馆).
  3. ^ Introduction to GRIB Edition1 and GRIB Edition 2页面存档备份,存于互联网档案馆).
  4. ^ ecCodes. [2023-04-24]. (原始内容存档于2023-05-01). 
  5. ^ 命令行工具页面存档备份,存于互联网档案馆
  6. ^ GRIB API页面存档备份,存于互联网档案馆
  7. ^ Magics页面存档备份,存于互联网档案馆
  8. ^ Metview页面存档备份,存于互联网档案馆
  9. ^ NCEP GRIB1 codes页面存档备份,存于互联网档案馆
  10. ^ NCEP GRIB2 codes页面存档备份,存于互联网档案馆
  11. ^ WGRIB页面存档备份,存于互联网档案馆
  12. ^ wgrib2页面存档备份,存于互联网档案馆
  13. ^ 存档副本. [2019-06-09]. (原始内容存档于2020-07-11). 
  14. ^ NCAR命令语言页面存档备份,存于互联网档案馆
  15. ^ CDO页面存档备份,存于互联网档案馆
  16. ^ Picogrib页面存档备份,存于互联网档案馆
  17. ^ JGrib页面存档备份,存于互联网档案馆
  18. ^ NetCDF-Java通用数据模型. [2019-06-11]. (原始内容存档于2008-05-09). 
  19. ^ PyNIO页面存档备份,存于互联网档案馆
  20. ^ PyGrib页面存档备份,存于互联网档案馆
  21. ^ Meteosatlib页面存档备份,存于互联网档案馆
  22. ^ GDAL页面存档备份,存于互联网档案馆
  23. ^ Xconv/Convsh页面存档备份,存于互联网档案馆
  24. ^ IDV页面存档备份,存于互联网档案馆
  25. ^ degrib页面存档备份,存于互联网档案馆
  26. ^ zyGrib页面存档备份,存于互联网档案馆
  27. ^ XyGrib页面存档备份,存于互联网档案馆
  28. ^ glgrib页面存档备份,存于互联网档案馆
  29. ^ ATMOGRAPH ModelVis页面存档备份,存于互联网档案馆
  30. ^ Expedition页面存档备份,存于互联网档案馆
  31. ^ PolarView
  32. ^ OpenCPN页面存档备份,存于互联网档案馆
  33. ^ GribAE页面存档备份,存于互联网档案馆
  34. ^ qtVlm页面存档备份,存于互联网档案馆
  35. ^ Weather4D页面存档备份,存于互联网档案馆
  36. ^ PredictWind Offshore App页面存档备份,存于互联网档案馆
  37. ^ PocketGrib页面存档备份,存于互联网档案馆
  38. ^ WeatherTrack页面存档备份,存于互联网档案馆
  39. ^ mazu页面存档备份,存于互联网档案馆
  40. ^ SailGrib页面存档备份,存于互联网档案馆
  41. ^ iGrib页面存档备份,存于互联网档案馆

标准文献

外部链接