GRIB API学习笔记04——GRIB命令行工具

目录

本节大部分包含在内容在《GRIB API学习笔记01》中,仅补充新增的部分,重复部分请参阅笔记01.

整理自2A3-grib_api_tools.pdf

1.   使用GRIB Tools

1.1.  基本概念
命令行工具,用于交互或批处理grib数据,提供最通用的操作,避免写代码。具有一套相同的参数选项,可以将相同的条件用于不同工具。
推荐首先考虑使用GRIB命令行工具。
以下复制自参见1.2.2.2节
基本语法:

命令概述:
提供GRIB API本身消息:
girb_info, grib_keys
查看、比较GRIB消息
grib_dump, grib_ls, grib_get, grib_get_data, grib_compare
统计数目、复制消息
grib_count, grib_copy
修改消息内容
grib_set, grib_filter
直接输入命令就会打印帮助信息。

1.2.  信息工具

1.2.1.   grib_info

提供:
版本
定义文件路径:GRIB_DEFINITION_PATH
示例文件路径:GRIB_SAMPLES_PATH
例:

1.2.2.   grib_keys

查看可用的key
指定一个GRIB文件,或者指定一个GRIB类型,如GRIB1,GRIB2,reduced_gg_pl_grib1等。
语法:

选项

<td valign="top">
  <type> Print the keys available in the GRIB type <type> <b></b>
</td>
<td valign="top">
  <b>Print list of available GRIB types </b>
</td>
<td valign="top">
  <b><file> Print the keys available in the GRIB file <file> </b>
</td>
<td valign="top">
  <b>Print the extended set of keys </b>
</td>
<td valign="top">
  <b>Print only the coded keys </b>
</td>
<td valign="top">
  <b>Print the type information </b>
</td>
<td valign="top">
  <b>Dump aliases</b>
</td>

** **
例:

1.3.  查看工具

1.3.1.   grib_count

快速计算GRIB文件中的消息个数
语法:

**      ** 可以使用通配符?

1.3.2.   grib_dump

显示GRIB文件包含的GRIB消息内容
支持多种显示方式:
l  Octet mode:WMO文档格式,支持十六进制
l  Debug mode:打印所有GRIB文件中可用的key
以上两个模式无法同时使用。
可以打印Key的别名和类型信息。
还可以输出一个C程序示例,生成带数据或不带数据的GRIB文件。该代码可以用作生成类似GRIB文件的模板。

1.3.3.   grib_ls

参见第二章

1.4.  修改

1.5.  获取键值对

1.5.1.   grib_get

参见第二章

1.6.  获取数据

1.6.1.   grib_get_data

参见第二章

1.7.  消息比较

1.7.1.   grib_compare

比较两个文件的GRIB消息。默认按相同顺序,逐位比较,精确比较浮点数。
数据的允许偏差由绝对、相对或打包误差指定。
默认为绝对误差为0
找到差别时:
切换到基于key的模式,找出哪个key不同
返回非0值的错误码
提供只比较特定keys的选项
用法:

参数:

<td valign="top">
  <b>All keys in this list are skipped when comparing files </b>
</td>
<td valign="top">
  <b>Compare these keys only </b>
</td>
<td valign="top">
  <b>Compare message headers only </b>
</td>
<td valign="top">
  <b>Edition-independent compare </b>
</td>
<td valign="top">
  <b>Where option </b>
</td>
<td valign="top">
  <b>Do <i>not </i>fail on error </b>
</td>
<td valign="top">
  <b>Messages not in the same order </b>
</td>
<td valign="top">
  <b>Verbose </b>
</td>

例1:

比较失败,返回错误码1。
例2:使用backlist(-b)排除指定键

例3:只比较给定键,使用-c指定

例4:比较指定namespace下的key

例5:显示比较结果 –v

例6:只比较头部 –H,不能与-c混合使用
$ grib_compare -H rmf.gra.2013103112001.grb2 rmf.gra.2013103112002.grb2

例7:版本独立性 –e
只比较两个版本通用的高层信息

除MARS参数外,上面两个文件包含相同的信息。
例8:区别汇总 –f

例9:顺序无关比较 –r
默认按顺序比较两个文件,使用-r可以比较不同顺序的文件,但非常耗时。
例10:比较数据值
默认比较精确值
用以下方式设置不同的允许偏差:

<td valign="top">
  <p align="left">
    <b>Use absolute error as tolerance </b>
  </p>
</td>
<td valign="top">
  <p align="left">
    <b>Use relative error as tolerance for </b><b>key </b>
  </p>
</td>
<td valign="top">
  <p align="left">
    <b>Use packing error as tolerance </b>
  </p>
</td>
<td valign="top">
  <p align="left">
    <b>Compare data values using tolerance specified in options </b><b>–A</b><b>, </b><b>-R</b><b>, </b><b>-P </b><b>multiplied by an integer </b><b>factor </b>
  </p>
</td>

设置允许偏差值:

** **
对于下面的数据:

使用相对误差

对于下面的数据

使用打包误差:

1.8.  消息拷贝

1.8.1.   grib_copy

参照第二章

1.9.  设置键值对

1.9.1.   grib_set

参见第二章