GRIB学习笔记:样例文件分析 - Section 5

目录

本文通过分析一个GRIB2消息介绍GRIB2格式。

样例文件来自中国气象局数值预报中心GRAPES全球模式的预报结果,选用2019年5月26日00时次的000时次850hPa温度场。

Section 5: Data Representation Section

定义如何解析下一个Data Section的数据。内容如下

OctetsKeyTypeContent
1-4section5LengthunsignedLength of section in octets (nn)
5numberOfSectionunsignedNumber of section (5)
6-9numberOfValuesunsignedNumber of data points where one or more values are specified in Section 7 when a bit map is present, total number of data points when a bit map is absent.
10-11dataRepresentationTemplateNumbercodetableData Representation Template Number (see Code Table 5.0)
12-nnData Representation Template (see Template 5.x, where x is the Data Representation Template Number given in octets 10-11)

grib_dump示例

======================   SECTION_5 ( length=23, padding=0 )    ======================
1-4       section5Length = 23
5         numberOfSection = 5
6-9       numberOfValues = 1036800
10-11     dataRepresentationTemplateNumber = 40 [JPEG2000 Packing (grib2/tables/4/5.0.table) ]
12-15     referenceValue = 22676.8
16-17     binaryScaleFactor = 0
18-19     decimalScaleFactor = 2
20        bitsPerValue = 13
21        typeOfOriginalFieldValues = 0 [Floating point (grib2/tables/4/5.1.table) ]
22        typeOfCompressionUsed = 0 [Lossless (grib2/tables/4/5.40.table) ]
23        targetCompressionRatio = 255

说明

样例文件本节从 0x8f 开始

1-4: section长度

5: section序号

样例文件本节长度为 0x17 = 23,下一节起始字节为 0x8F + 0x17 = 0xA6

可以看到下一节为Section 6。

6-9: 数据值个数。Section 3中同样有数据点个数numberOfDataPoints,两者不一样。numberOfValues是使用位图后实际存储的数据点的个数,数值可能比numberOfDataPoints小。但对于数值预报中心的数据来说,因为没有使用位图,两者数值一样。

样例文件为 0xFD200 = 1036800‬,与 numberOfDataPoints 一致。

10-11: 数据表示模板,由Code Table 5.0定义。

样例文件为 0x28 = 40,即使用JPEG2000表示数据(Grid point data - JPEG 2000 Code Stream Format)。

12-nn:使用Template 5.40 Grid point data - JPEG 2000 code stream format。

Template 5.40 Grid point data - JPEG 2000 code stream format

内容如下

OctetsKeyTypeContent
12-15referenceValueieeefloatReference value (R) (IEEE 32-bit floating-point value)
16-17binaryScaleFactorsignedBinary scale factor (E)
18-19decimalScaleFactorsignedDecimal scale factor (D)
20bitsPerValueunsignedNumber of bits required to hold the resulting scaled and referenced data values. (i.e. The depth of the grayscale image.) (see Note 2)
21typeOfOriginalFieldValuescodetableType of original field values (see Code Table 5.1)
22typeOfCompressionUsedtypeOfCompressionUsedType of Compression used. (see Code Table 5.40)
23targetCompressionRatiotargetCompressionRatioTarget compression ratio, M:1 (with respect to the bit-depth specified in octet 20), when octet 22 indicates Lossy Compression. Otherwise, set to missing. (see Note 3)

12-15: 参考值R,IEEE 32位浮点数。

样本文件为 0x46B1298E = 22676.777。

16-17: 二进制比例因子E。

样本文件为 0x0 = 0。

18-19: 十进制比例因子D。

样本文件为 0x2 = 2。

20: 每个数据的位数。JPEG 2000标准中每个数值的位数范围是1-38。

样本文件为 0x0D = 13,即每个数据占13位。

21: 原始数据类型,由Code Table 5.1定义。

样本文件为 0x0,表示浮点数(Floating point)。

22: 压缩方式,由Code Table 5.40定义。

样本文件为 0x0,表示无损压缩(Lossless)。

23: 压缩比率,当Octet 22设为Lossy压缩时,表示压缩比为M:1,否则设为MISSING。

样本文件为 0xFF,表示MISSING。