ecCodes 是 ECMWF 开发的气象数据编解码包,支持下列WMO标准的二进制格式:
解码包包含:
本教程将专注于解码GRIB数据。
ecCodes 提供对消息内容的高级访问,隐藏二进制格式的复杂性。 提供简单和可靠的方式使用相同的函数编解码 GRIB1 和 GRIB 2 消息。 同时 ecCodes 可以很容易地更新到最新版本的 GRIB 模板和表格。
ecCodes 使用 key/value 的方式访问 GRIB 消息中的信息。例如 originatingCentre
保存 “originating centre”,numberOfPointsAlongAParallel
保存 “number of points along a parallel” 的值。
不同GRIB消息之间key集合根据下面的条件变化:
改变一个key可能导致某些其它key失效或者可用。
eccodes区分编码key(coded keys,消息中的原样编码),和计算key(computed keys,临时或从其他key计算出的key)。
某些key有别名,例如
ecCodes 的前身就是的 GRIB-API,ecCodes 是后者的升级(添加对 BUFR 格式)的支持。
对于 GRIB 编解码,ecCodes 提供与 GRIB-API 同样的功能。 目前 ecCodes 是 ECMWF 使用的主要 GRIB 编解码工具。 ecCodes 最终将完全替代 GRIB-API。
ecCodes 使用 Apache 2.0 许可证。
早期基于 Fortran 的工具提供对 GRIB 消息基于数组的访问方式。例如:
ecCodes 提供基于键值对的访问方式。例如:
所有接口都提供设置/读取 GRIB 消息中键值对的方法,每类接口的键值对均相同。
h = codes_handle_new_from_file(context, in, PRODUCT_GRIB, &err);
codes_get_double(h, "latitudeOfFirstGridPointInDegrees", &lat1);
codes_set_long(h, "centre", centre);
codes_set_string(h, "date", date, &len);
codes_handle_delete(h);
注意:为了兼容 grib_api,ecCodes 依然支持以 grib_ 开头的函数。
call codes_new_from_file(ifile, igrib, CODES_PRODUCT_GRIB, iret)
call codes_get(igrib, 'latitudeOfFirstGridPointInDegrees', lat1)
call codes_set(igrib, 'centre', centre)
call codes_set(igrib, ‘date', ’20070212’)
call codes_release(igrib)
注意:为了兼容 grib_api,ecCodes 依然支持以 grib_ 开头的函数。
gid = codes_new_from_file(f, CODES_PRODUCT_GRIB)
lat = codes_get(gid, 'latitudeOfFirstGridPointInDegrees')
codes_set(gid, 'centre', centre)
codes_set(gid, 'date', date)
codes_release(gid)
注意:为了兼容 grib_api,ecCodes 依然支持以 grib_ 开头的函数。
grib_get –p latitudeOfFirstGridPointInDegrees input.grib
grib_set –s centre=ecmf,date=20070212 input.grib out.grib
ecCodes 使用 CMake 编译和安装。
CMake 是跨平台的免费软件,使用与编译器无关的方式管理软件的过程。
从如下网址下载 ecCodes:
https://software.ecmwf.int/wiki/display/ECC/Releases
从如下网址获取安装说明:
https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
Linux 或者 Mac 平台
可选,但推荐安装:
编译命令示例:
$> tar -xzf eccodes-x.y.z-Source.tar.gz
$> mkdir build ; cd build
$> PREFIX=/path/to/where/you/install/eccodes
$> cmake -DCMAKE_INSTALL_PREFIX=$PREFIX ../eccodes-x.y.z-Source
...
$> make
$> ctest
$> make install
提交bug,请联系
Wiki:
https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home
请使用论坛讨论一般问题: