本页使用了标题或全文手工转换

GRIB

维基百科,自由的百科全书
跳到导航 跳到搜索
General Regularly-distributed Information in Binary form
特征签名 GRIB
开发者 世界气象组织
最新版本
GRIB2 Versions 5 - 23(.0.0)[1]
(2019年5月15日,​12個月前​(2019-05-15)
格式类型 科学数据格式
自由格式
网站 WMO PUBLICATION No. 306 - MANUAL ON CODES Volume I.2 - Part B

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

概述[编辑]

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,是ECMWF开发的开源的C、Fortran90库和Python模块,可调用解码和编码GRIB和GRIB2数据的API,软件包还包括一组有用的命令行工具。它演化自GRIB API,向用户提供了以键/值方式访问元数据的一组函数。ECMWF还提供绘图包MagicsMetview工作站/批处理系统,可处理和可视化GRIB和GRIB2文件。
  • NCEP GRIB1 codes,开源的Fortran90库w3lib,用于解码和编码GRIB格式的数据。
  • NCEP GRIB2 codes,开源的Fortran90库g2lib和C库g2clib,用于解码和编码GRIB2格式的数据。
  • WGRIB,基于命令行的实用工具,用来操纵、列清单和解码GRIB文件。
  • wgrib2,基于命令行的实用工具,不只是升级wgrib可读取GRIB2文件,还可将其分片或分块。
  • 网格分析和显示系统GrADS),开源的基于命令行的桌面应用,直接处理GRIB和GRIB2文件[4]
  • NCAR命令语言,可以读取、分析和可视化GRIB和GRIB2数据,并转换它成为其他网格数据格式。
  • CDO(气候数据算子),是地球科学数据分析工具,支持GRIB和GRIB2。
  • Picogrib,自由的C语言(FORTRAN可调用)GRIB解码包,一定程度上兼容于ECMWF GRIBEX例程。
  • JGrib,开源库用来在Java中读取GRIB文件。
  • NetCDF-Java通用数据模型,是可以读取GRIB和GRIB2文件的Java库。
  • PyNIO,是Python编程语言模块,允许读写访问各种数据格式,使用了建模在netCDF上的接口。
  • PyGrib,python语言扩展模块,允许读写GRIB和GRIB2格式。
  • Meteosatlib,自由软件C++库和一组工具,在各种格式间转换卫星图像;它可以读写GRIB数据,并且它的GRIB编码/解码器可以单独使用。
  • 地理数据抽象库GDAL),流行的开源地理数据读写库。
  • Xconv/Convsh,Xconv是一个图形工具,用来显示和转换各种网格数据,并可在Linux和OS X操作系统上获得。Convsh是它的命令行等价者。
  • IDV,面向地球科学的平台无关的应用程序,可用来可视化和分析NetCDF、GRIB和GRIB2文件。
  • degrib(曾叫做NDFD GRIB2解码器),可读取GRIB和GRIB2文件。
  • zyGrib,是在Linux、Mac OS X和Windows上开源的图形软件,用来下载和显示GRIB和GRIB2文件。
  • XyGrib,是对zyGrib继续开发的开源软件,是GRIB和GRIB2文件阅读器并可视化气象数据提供离线分析能力。

此外,一些天气预报软件和导航软件及手机app支持GRIB或GRIB2,如ATMOGRAPH ModelVisExpeditionPolarViewOpenCPNGribAEqtVlmWeather4DPredictWind Offshore AppPocketGribWeatherTrackmazuSailGribiGrib

参见[编辑]

引用[编辑]

标准文献[编辑]

外部链接[编辑]