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:

  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

例2:GIRB 1的shortName.def