GRIB API学习笔记10——GRIB API高级话题2
1.1. 参数数据库
GRIB 1
level = 10
** **
GRIB 2
scaledValueOfSecondFixedSurface = MISSING
** **
GRIB 1 ECMWF local coding
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
‘2t’ = { indicatorOfParameter**=167;** table2Version**=128;}**
** **
1.1.4.2. paramId
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文件:
** **
将GRIB1转换为GRIB2
** **
转换过程中,将paramId的值从GRIB1拷贝到GRIB2:
- 获取GRIB1的paramId(=165)
- 修改版本号为2
- 设置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
例2:GIRB 1的shortName.def