GRIB学习笔记:样例文件分析 - Section 5
本文通过分析一个GRIB2消息介绍GRIB2格式。
样例文件来自中国气象局数值预报中心GRAPES全球模式的预报结果,选用2019年5月26日00时次的000时次850hPa温度场。
Section 5: Data Representation Section
定义如何解析下一个Data Section的数据。内容如下:
Octets | Key | Type | Content |
---|---|---|---|
1-4 | section5Length | unsigned | Length of section in octets (nn) |
5 | numberOfSection | unsigned | Number of section (5) |
6-9 | numberOfValues | unsigned | Number 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-11 | dataRepresentationTemplateNumber | codetable | Data Representation Template Number (see Code Table 5.0) |
12-nn | Data 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
内容如下:
Octets | Key | Type | Content |
---|---|---|---|
12-15 | referenceValue | ieeefloat | Reference value (R) (IEEE 32-bit floating-point value) |
16-17 | binaryScaleFactor | signed | Binary scale factor (E) |
18-19 | decimalScaleFactor | signed | Decimal scale factor (D) |
20 | bitsPerValue | unsigned | Number of bits required to hold the resulting scaled and referenced data values. (i.e. The depth of the grayscale image.) (see Note 2) |
21 | typeOfOriginalFieldValues | codetable | Type of original field values (see Code Table 5.1) |
22 | typeOfCompressionUsed | typeOfCompressionUsed | Type of Compression used. (see Code Table 5.40) |
23 | targetCompressionRatio | targetCompressionRatio | Target 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。