您可以通过 iris-grib 中的低级 grib 接口(即iris_grib.GribMessage类)获取 gribapi 理解的任何内容。
通常你会使用for msg in GribMessage.messages_from_filename(xxx):
然后访问它,例如msg.sections[4]['productDefinitionTemplateNumber']
;msg.sections[4]['parameterNumber']
等等。
您可以使用它来识别所需的消息,然后使用iris_grib.load_pairs_from_fields()转换为多维数据集。
然而,Iris-grib 只知道如何将特定的编码转换成立方体:它对它所识别的内容非常严格,并且在其他任何事情上都会失败。因此,如果您的数据使用任何无法识别的模板或数据编码,它肯定会无法加载。
我只是预计您可能会在这里遇到一些不寻常的事情,所以这可能是个问题?您可以从iris_grib:_load_convert.py
中的翻译代码检查您预期的消息内容,从例程开始。convert()
要从尚不支持的东西中获取 Iris 立方体,您可以:
- (a) 扩展翻译规则(即 Github PR),或
- (b) 有时您可以修改消息,使其看起来像可以识别的东西。
做不到这一点,你可以
- (c) 只需从 GribMessage 中找到的数据自己构建一个 Iris 立方体:这可能比直接使用 'gribapi' 简单一些(可能不是,具体取决于细节)。
如果你有这样的问题,你绝对应该在 github 项目上提出它(iris-grib 问题)+我们会尽力提供帮助。
PS,因为您已经注册了对 Python3 的兴趣,您可能想知道 gribapi 的更新的“ecCodes”替代品应该很快就会可用,最终使 Python3 支持 grib 数据成为可能。
然而,Python3 版本仍处于测试阶段,我们目前遇到了一些问题,现在由 ECMWF 提出,所以它仍然几乎但不是完全可以实现。