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]。
引用
- . [2022-09-09]. (原始内容存档于2022-12-02).
- What is GRIB? (页面存档备份,存于).
- Introduction to GRIB Edition1 and GRIB Edition 2 (页面存档备份,存于).
- . [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(页面存档备份,存于)
- . [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 (页面存档备份,存于)