eccodes转换含paramId=0的GRIB1到GRIB2失败如何解决
GRIB1风场文件转GRIB2时paramId=0报错处理
我正尝试将主要包含风场数据的GRIB1格式文件转换为GRIB2格式,通常仅需将版本号设为2,eccodes库即可自动完成其余转换流程。
当前遇到的问题是:GRIB1文件所有消息的paramId均为0、shortName均为unknown,直接转换会报错,但该文件在PredictWind Offshore等查看器中可正常加载显示。需要明确如何在未知具体消息定义的情况下完成到GRIB2的转换,以及是否存在遗漏的配置项。
已尝试的转换操作
执行如下grib_set命令转换时出现报错:
❯ grib_set -s edition=2 e1.grib e2.grib ECCODES ERROR : concept: no match for paramId=0 ECCODES ERROR : Please check the Parameter Database 'https://apps.ecmwf.int/codes/grib/param-db/?id=0' ECCODES ERROR : concept: input handle edition=2 ECCODES ERROR : grib_set_values[0] edition (type=long) failed: Concept no match
原文件参数校验结果
通过grib_dump查询原GRIB1文件参数,确认全量消息的paramId均为0:
❯ grib_dump e1.grib | egrep 'paramId|shortName' ... shortName = unknown; paramId = 0; ... ❯ grib_dump dsv1.grib | egrep 'paramId' | wc -l 679 # 所有消息的paramId均为0,shortName均为unknown
最终可行方案
未使用eccodes完成转换,改用支持读取GRIB1的PyNIO完成了相关需求,有需要的读者可直接联系获取更多信息。
内容的提问来源于stack exchange,提问作者b3z
相关产品推荐
相关产品推荐

