GRIB API学习笔记10——GRIB API高级话题2

目录

1.1.  参数数据库

GRIB 1

“10 metre U component of wind”

indicatorOfParameter = 33 [u-component of wind (m/s)]

table2Version = 3

indicatorOfTypeOfLevel = 105 [Specified height level above ground (m)]

level = 10
 
GRIB 2

“10 metre U component of wind”

discipline = 0 [Meteorological products]

parameterCategory = 2 [Momentum]

parameterNumber = 0 [u component of wind (m s-1) ]

typeOfFirstFixedSurface = 103 [Specified height level above ground (m)]

scaleFactorOfFirstFixedSurface = 0

scaledValueOfFirstFixedSurface = 10

typeOfSecondFixedSurface = 255 [Missing ]

scaleFactorOfSecondFixedSurface = MISSING

scaledValueOfSecondFixedSurface = MISSING
 
GRIB 1 ECMWF local coding

“10 metre U component of wind”

indicatorOfParameter = 165 [10 metre u-component of wind (m/s)]

table2Version = 128
 

1.1.1.   GRIB API的解决方案

使用虚拟(计算得到)的key来分离用户层和代码层。
用户代码设置/获取虚拟key,GRIB API设置对应的编码key。
本地配置用于处理本地编码。

1.1.2.   GRIB API parameter

提供一些版本独立的参数,如:
paramId
shortName
name
units
centre
GRIB 1
centre
table2Version
indicatorOfParameter
levelType
level

GRIB 2:
discipline
parameterCategory
parameterNumber
typeOfFirstFixedSurface
scaleFactorOfFirstFixedSurface
scaledValueOfFirstFixedSurface
typeOfSecondFixedSurface
scaleFactorOfSecondFixedSurface
scaledValueOfSecondFixedSurface
productDefinitionTemplateNumber

1.1.3.   GIRB API设计

参见第二章第二节

1.1.4.   概念:

1.1.4.1.            shortName

GRIB 2

‘2t’ = { discipline = 0 ; productDefinitionTemplateNumber = 8 ; parameterCategory = 0 ; parameterNumber = 0 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0; scaledValueOfFirstFixedSurface = 2; typeOfSecondFixedSurface = 255 ; scaleFactorOfSecondFixedSurface = missing(); scaledValueOfSecondFixedSurface = missing(); }

GRIB1

‘2t’ = { indicatorOfParameter=11; table2Version=3;

levelType=103; level=2;}

GRIB1 ECMWF local coding

‘2t’ = { indicatorOfParameter=167; table2Version=128;}
 

1.1.4.2.            paramId

GRIB 2

167 = { discipline = 0 ; productDefinitionTemplateNumber = 8 ; parameterCategory = 0 ; parameterNumber = 0 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0; scaledValueOfFirstFixedSurface = 2; typeOfSecondFixedSurface = 255 ; scaleFactorOfSecondFixedSurface = missing(); scaledValueOfSecondFixedSurface = missing(); }

GRIB1

167 = { indicatorOfParameter=11; table2Version=3;

levelType=103; level=2;}

GRIB1 ECMWF local coding

167 = { indicatorOfParameter=167; table2Version=128;}

1.1.5.   GRIB API参数参考

<//www.ecmwf.int/publications/manuals/d/gribapi/param>

1.1.6.   参数数据库

1.2.  GRIB1转换到GRIB2

grib_set –s edition=2 in.grib1 out.grib2
转换:
时间
地理信息
垂直
参数
本地信息
数据
因为两种编码标准的不同和某些气象中心使用的本地表格,参数转换特别复杂。该种转换基于参数的同伊标识符:paramId
生成2米温度的GRIB文件:

grib_set –s paramId=165 in.grib1 out.grib1
grib_set –s paramId=165 in.grib2 out.grib2

 
将GRIB1转换为GRIB2

grib_set –s edition=2 in.grib1 out.grib2

 
转换过程中,将paramId的值从GRIB1拷贝到GRIB2:

  1. 获取GRIB1的paramId(=165)
  2. 修改版本号为2
  3. 设置GIRB2的paramId(=165)

转换只有在两种版本都定义该paramId的情况下可用。检查下面的网页,确定转换是否可用:
<//www.ecmwf.int/publications/manuals/d/gribapi/param/>

1.2.1.   grib1to2

提供转换模式层数据的工具
注:没找到,略过
将ECMWF的模式层数据从版本1转换到版本2.
与“grib_set –s edition=2”的区别在于,grib1to2只能工作在模式层数据上,对于其他的层类型会返回错误码。

1.3.  本地配置

解码引擎用来定义解码规则的外部文本文件叫做定义文件(definition files)。
每个安装都有默认的定义文件集合。
可以设置GRIB_DEFINITION_PATH环境变量使用本地定义文件代替版本提供的定义文件。
指定“中心(centre)”的参数描述包含在下面目录的shortName.def, paramId.def, units.def, name.def 文件中:
BASE_DIR/definitions/grib1/localConcepts/[centre:s]
BASE_DIR/definitions/grib2/localConcepts/[centre:s]
注意:centre:s表示中心的字符串变量,例如ecmf,kwbc,cnmc等。
通用的参数描述文件保存在下面目录的shortName.def, paramId.def, units.def, name.def文件中。
BASE_DIR/definitions/grib1
BASE_DIR/definitions/grib2

1.3.1.   设置GRIB_DEFINITION_PATH

GRIB_DEFINITION_PATH=/joe/definitions:/grib_api/definitions
函数库首先在/joe/definitions目录中寻找每个需要的定义文件,然后在/grib_api/definitions目录中寻找。
如果在/joe/definitions中找到文件,解码引擎就是用该文件。用户可以用自己的定义文件覆盖所有的定义文件。
我们建议只覆盖包含变量信息的定义文件。

1.3.2.   如何定义本地变量

使用grib_info获取定义文件的目录。
设置环境变量:
GRIB_DEFINITION_PATH=local_directory:default_definition_directory
将下列文件:
shortName.def, paramId.def, name.def & units.def.
放入如下目录:
local_directory/grib1/localConcepts/[centre:s]
local_directory/grib2/localConcepts/[centre:s]
例1:GRIB 1的paramId.def

#Direction of wind waves
'500072' = {
    table2Version = 2;
    indicatorOfParameter = 101;
}

例2:GIRB 1的shortName.def

#Total precipitation of at least 10 mm
'tpg10' = {
    table2Version = 131;
    indicatorOfParameter = 62;
}