GRIB2 与 GRIB1 类似,将消息划分为消息,并将每个消息分为多个部分。
一个 GRIB 文件中可以有更多消息。只是彼此串联。如果您有 2 个 GRIB2 文件并想要合并它们,那么简单地使用 cat 命令就足够了。
此处描述了 GRIB2 示例:https://www.yumpu.com/en/document/view/11723135/guide-to-wmo-table-driven-code-forms。一个很好的在线资源:
网上资料更详细地描述了不同部分的参数。
虽然 GRIB2 的基本概念和消息开头与 GRIB1 相似,但在后面的部分 (1-7) 中却大不相同。 GRIB2 还允许在一条消息中重复某些部分:
Section 0: Indicator Section
Section 1: Identification Section
Section 2: Local Use Section (optional) |
Section 3: Grid Definition Section | |
Section 4: Product Definition Section | | |
Section 5: Data Representation Section | (repeated) | (repeated) | (repeated)
Section 6: Bit-Map Section | | |
Section 7: Data Section | | |
Section 8: End Section
Section 0:在 GRIB2 中始终为 16 个字节(在 GRIB1 中为 8 个字节),包含消息(所有部分)grib 版本 (GRIB1/GRIB2) 的总 length,以防万一GRIB2 的消息规则。
在 GRIB2 中,每个部分(第 1 和 8 部分除外)都以该部分的 length(4 个字节)和 section number(1 个字节)开头。因此,当您阅读二进制 GRIB2 文件时,您可以相对简单地将 GRIB2 消息分成几个部分。
第 8 节:总是包含 4 个字节,一个字符串:7777
分类
每个 GRIB 文件可以包含多条消息。消息是网格(第 3 节)产品定义(第 4 节,其中之一:风、温度、相对湿度……)和数据(第 7 节)。这意味着在每个文件中,您可能有不同的数据(风速、气温、当前方向……)。如果您想对这些文件进行分类,您可能应该查看产品定义部分(第 4 部分)。
请注意,一条消息通常指的是一个参考时间(测量或创建数据集的时间),定义在识别部分(第 1 节)和一个预测时间 (数据(例如温度)有效的时间),在产品定义部分(第 4 部分)中定义
转换为 CSV
您可以在数据表示部分(第 5 部分)的帮助下阅读数据部分(第 7 部分)以获取实际数据。使用 wgrib2 (https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/),您可以轻松地将数据转储到文件中。请注意,要了解数据代表什么以及它们使用什么单位,您还需要考虑产品定义部分(第 4 部分)。
请注意,数据部分(第 7 部分)中的数据已编码。数据表示部分(第 5 节)中描述了它们是如何编码的。在某些情况下,还有一个非空位图部分(第 6 部分),它说明哪些位置有有效值。一个例子可能是云量的百分比。位图部分将定义网格上是否存在任何云层的点(true/false 位数组)。数据部分仅包含有一些云层的点(位图部分位为true)并存储0-100%之间的值。这是减少空间的方法之一。