GRIB学习笔记:样例文件分析 - Section 4
本文通过分析一个GRIB2消息介绍GRIB2格式。
样例文件来自中国气象局数值预报中心GRAPES全球模式的预报结果,选用2019年5月26日00时次的000时次850hPa温度场。
Section 4: Product Definition Section
定义Section 5中数据的属性。内容如下:
Octets | Key | Type | Content |
---|---|---|---|
1-4 | section4Length | unsigned | Length of section in octets (nn) |
5 | numberOfSection | unsigned Number of section (4) | |
6-7 | NV | unsigned | Number of coordinate values after template or number of information according to 3D vertical coordinate GRIB2 message |
8-9 | productDefinitionTemplateNumber | codetable | Product Definition Template Number (see Code Table 4.0) |
10-xx | Product Definition Template (see Template 4.X, where X is the Product Definition Template Number given in octets 8-9) | ||
[xx+1]-nn | pv | ieeefloat | Optional list of coordinate values or vertical grid information |
grib_dump示例
====================== SECTION_4 ( length=34, padding=0 ) ======================
1-4 section4Length = 34
5 numberOfSection = 4
6-7 NV = 0
8-9 productDefinitionTemplateNumber = 0 [Analysis or forecast at a horizontal level or in a horizontal layer at a point in time (grib2/tables/4/4.0.table) ]
10 parameterCategory = 0 [Temperature (grib2/tables/4/4.1.0.table) ]
11 parameterNumber = 0 [Temperature (K) (grib2/tables/4/4.2.0.0.table) ]
12 typeOfGeneratingProcess = 0 [Analysis (grib2/tables/4/4.3.table) ]
13 backgroundProcess = 0
14 generatingProcessIdentifier = 15
15-16 hoursAfterDataCutoff = 0
17 minutesAfterDataCutoff = 0
18 indicatorOfUnitOfTimeRange = 1 [Hour (grib2/tables/4/4.4.table) ]
19-22 forecastTime = 0
23 typeOfFirstFixedSurface = 100 [Isobaric surface (Pa) (grib2/tables/4/4.5.table) ]
24 scaleFactorOfFirstFixedSurface = 0
25-28 scaledValueOfFirstFixedSurface = 85000
29 typeOfSecondFixedSurface = 255 [Missing (grib2/tables/4/4.5.table) ]
30 scaleFactorOfSecondFixedSurface = MISSING
31-34 scaledValueOfSecondFixedSurface = MISSING
说明
1-4: section长度
5: section序号
样例文件的Section 4从 0x6d 开始,长度为 0x22。下一节从 0x6d + 0x22 = 0x8F 开始。
从上图可以看到,下一节为Section 5。
6-7: 附加的坐标值或垂直网格信息的点的个数,数值预报中心尚未使用该字段,样例文件中该值为0。
8-9: 产品定义模板序号,由Code Table 4.0定义。
样例文件该值为0(Analysis or forecast at a horizontal level or in a horizontal layer at a point in time),即使用Template 4.0。
10-34: 由 Template 4.0 定义
Template 4.0: 某时间点的水平层次的分析场或预报场
数值预报中心的GRIB2产品一般都使用Template 4.0,内容如下:
Octets | Key | Type | Content |
---|---|---|---|
10 | parameterCategory | codetable | Parameter category (see Code Table 4.1). |
11 | parameterNumber | codetable | Parameter number (see Code Table 4.2). |
12 | typeOfGeneratingProcess | codetable | Type of generating process (see Code Table 4.3) |
13 | backgroundProcess | unsigned | Background generating process identifier (defined by originating centre) |
14 | generatingProcessIdentifier | unsigned | Analysis or forecast generating processes identifier (defined by originating centre) |
15-16 | hoursAfterDataCutoff | unsigned | Hours of observational data cutoff after reference time (see Note 1) |
17 | minutesAfterDataCutoff | unsigned | Minutes of observational data cutoff after reference time |
18 | indicatorOfUnitOfTimeRange | codetable | Indicator of unit of time range (see Code Table 4.4) |
19-22 | forecastTime | signed | Forecast time in units defined by octet 18 |
23 | typeOfFirstFixedSurface | codetable | Type of first fixed surface (see Code Table 4.5) |
24 | scaleFactorOfFirstFixedSurface | signed | Scale factor of first fixed surface |
25-28 | scaledValueOfFirstFixedSurface | unsigned | Scaled value of first fixed surface |
29 | typeOfSecondFixedSurface | codetable | Type of second fixed surface (see Code Table 4.5) |
30 | scaleFactorOfSecondFixedSurface | signed | Scale factor of second fixed surface |
31-34 | scaledValueOfSecondFixedSurface | unsigned | Scaled value of second fixed surface |
Octet 10 与 11 是产品定义三级结构的后两级——类别和名称,第一级学科在Section 1的Octet 7定义。
10: 要素类别,由Code Table 4.1定义。该Code Table由一组子表格构成,每个子表格代表一个学科,并且与表格版本相关。样例文件使用第4版,所以可以在grib2/tables/4中根据学科序号查看对应的4.1.{disipline}.table
表格。数值预报中心的GRIB2数据学科一般都是0,所以只需要查看4.1.0.table
。
样例文件类别是0,代表温度(Temperature)。
11: 要素序号,由Code Table 4.2定义。与要素类别相似,该Code Table由一组子表格构成,每个子表格代表一个学科的一个类别,并且与表格版本相关。样例文件使用第4版,所以可以在grib2/tables/4中根据学科序号查看对应的4.2.{disipline}.{parameterCategory}.table
表格。
样例文件的要素序号是0,查询4.2.0.0.table
可以看到,该值代表温度,单位为K(Temperature (K))。
12: 产品生成阶段类型,由Code Table 4.3定义。
样例文件为0,表示分析场(Analysis)。
13: 背景场生成标识,由数据生成中心定义。
14: 分析或预报场生成标识,由数据生成中心定义。
上面两个值均有数值预报中心定义,不知道具体的含义。
15-16: 观测资料相对于参考时间的截断小时
17: 观测资料相对于参考时间的截断分钟
样例文件中上述两个值都是0,似乎数值预报中心没有使用这两个值。
18: 时间范围单位指标,由Code Table 4.4定义。
样例文件为0x1,表示小时(Hour),该数值是Octet 19-22时间数据的单位。
19-22:预报时间,单位由Octet 18确定。
样例文件为0x0,表示000时效的数据。
23: 第一个固定层次的类型,由Code Table 4.5定义。
样例文件为0x64 = 100,表示等压面(Isobaric surface (Pa))。
24: 第一个固定层次的缩放因子
样例文件为0,表示不缩放。
25-28: 第一个固定层次缩放后的值
样例文件为0x14C08 = 85000,表示85000Pa,即850HPa。
29: 第二个固定层次的类型
30: 第二个固定层次的缩放因子
31-34: 第二个固定层次缩放后的值
样例文件没有使用第二个固定层次,所以上面几个字段为缺失值,所有字节均为0xFF。