将 grib2 消息读入 Iris 立方体
Reading a grib2 message into an Iris cube
我目前正在探索在项目中使用 iris 的概念,以使用 python 读取预报 grib2 文件。
我的目标是根据具有特定值的 grib 消息密钥 load/convert 将 grib 消息放入 iris 立方体。
我试验过iris-grib,它使用gribapi。使用 iris-grib 我还没有在 grib2 文件中找到密钥,尽管通过 cli 使用 'grib_ls -w...' 可以看到密钥。
gribapi 完成了这项工作,但我不确定如何将它与 iris 连接(我想这就是 iris-grib 的用途)。
我想知道是否有人知道基于具有特定值的 grib 消息密钥将消息放入 iris 立方体的方法。谢谢
您可以通过 iris-grib 中的低级 grib 接口获取 gribapi 理解的任何内容,即 iris_grib.GribMessage class.
通常你会使用 for msg in GribMessage.messages_from_filename(xxx):
然后访问它,例如msg.sections[4]['productDefinitionTemplateNumber']
; msg.sections[4]['parameterNumber']
等等。
您可以使用它来识别所需的消息,然后使用 iris_grib.load_pairs_from_fields() 转换为多维数据集。
然而,Iris-grib 只知道如何将特定编码转换为多维数据集:它对它所识别的内容非常严格,并且在其他任何事情上都会失败。所以如果你的数据使用任何无法识别的模板或数据编码,它肯定会加载失败。
我只是预计您 可能 在这里有一些不寻常的东西,所以这可能是个问题?
您可以从 convert()
例程开始,根据 iris_grib:_load_convert.py 处的翻译代码检查您预期的消息内容。
要从尚未支持的东西中获得 Iris 立方体,您可以:
- (a) 扩展翻译规则(即 Github PR),或
- (b) 有时您可以修改消息,使其看起来像
可以识别。
否则,您可以
- (c) 简单地从您的 GribMessage 中找到的数据自己构建一个 Iris 立方体:这可能比直接使用 'gribapi' 简单一点(可能不是,具体取决于细节)。
如果你有这样的问题,你绝对应该在 github 项目 (iris-grib issues) 上提出它作为一个问题 + 我们会尽力提供帮助。
P.S。由于您已经注册了 Python3 兴趣,您可能想知道更新的 "ecCodes" 替代 gribapi 应该 很快可用,使 Python3终于可以支持 grib 数据了。
但是,Python3 版本仍处于测试阶段,我们目前遇到一些问题,现在由 ECMWF 提出,所以它仍然几乎但不是完全可以实现。
我目前正在探索在项目中使用 iris 的概念,以使用 python 读取预报 grib2 文件。
我的目标是根据具有特定值的 grib 消息密钥 load/convert 将 grib 消息放入 iris 立方体。
我试验过iris-grib,它使用gribapi。使用 iris-grib 我还没有在 grib2 文件中找到密钥,尽管通过 cli 使用 'grib_ls -w...' 可以看到密钥。 gribapi 完成了这项工作,但我不确定如何将它与 iris 连接(我想这就是 iris-grib 的用途)。
我想知道是否有人知道基于具有特定值的 grib 消息密钥将消息放入 iris 立方体的方法。谢谢
您可以通过 iris-grib 中的低级 grib 接口获取 gribapi 理解的任何内容,即 iris_grib.GribMessage class.
通常你会使用 for msg in GribMessage.messages_from_filename(xxx):
然后访问它,例如msg.sections[4]['productDefinitionTemplateNumber']
; msg.sections[4]['parameterNumber']
等等。
您可以使用它来识别所需的消息,然后使用 iris_grib.load_pairs_from_fields() 转换为多维数据集。
然而,Iris-grib 只知道如何将特定编码转换为多维数据集:它对它所识别的内容非常严格,并且在其他任何事情上都会失败。所以如果你的数据使用任何无法识别的模板或数据编码,它肯定会加载失败。
我只是预计您 可能 在这里有一些不寻常的东西,所以这可能是个问题?
您可以从 convert()
例程开始,根据 iris_grib:_load_convert.py 处的翻译代码检查您预期的消息内容。
要从尚未支持的东西中获得 Iris 立方体,您可以:
- (a) 扩展翻译规则(即 Github PR),或
- (b) 有时您可以修改消息,使其看起来像
可以识别。
否则,您可以 - (c) 简单地从您的 GribMessage 中找到的数据自己构建一个 Iris 立方体:这可能比直接使用 'gribapi' 简单一点(可能不是,具体取决于细节)。
如果你有这样的问题,你绝对应该在 github 项目 (iris-grib issues) 上提出它作为一个问题 + 我们会尽力提供帮助。
P.S。由于您已经注册了 Python3 兴趣,您可能想知道更新的 "ecCodes" 替代 gribapi 应该 很快可用,使 Python3终于可以支持 grib 数据了。
但是,Python3 版本仍处于测试阶段,我们目前遇到一些问题,现在由 ECMWF 提出,所以它仍然几乎但不是完全可以实现。