python-3.x - 将 grib2 消息读入 Iris 立方体
问题描述
我目前正在探索在项目中使用 iris 来使用 python 读取预测 grib2 文件的概念。
我的目标是基于具有特定值的 grib 消息键将 grib 消息加载/转换为 iris 立方体。
我已经尝试过使用 gribapi 的 iris-grib。使用 iris-grib 我还没有在 grib2 文件中找到密钥,尽管通过 cli 使用“grib_ls -w ...”可以看到密钥。gribapi 完成了这项工作,但我不确定如何将它与 iris 接口(我认为 iris-grib 就是为了这个)。
我想知道是否有人知道基于具有特定值的 grib 消息键将消息放入虹膜立方体的方法。谢谢
解决方案
您可以通过 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 提出,所以它仍然几乎但不是完全可以实现。
推荐阅读
- c - 如何扫描超过 1 个整数?
- excel - 光标下的标识符无法识别 - Excel 宏
- r - 如何使用 combn 进行多元回归(或替代方法)?
- android - (Android) 当我滚动到屏幕底部时,将数据加载到 RecyclerView
- c# - 如何对返回 Action 的方法进行单元测试
? - css - 响应式 CSS 网格
- swift - Swift String 到 Int 总是返回 nil
- sas - Proc SQL 运行总计
- java - 使用 @Value 注释的属性始终为 null
- cygwin - Cygwin 文件夹太大,占用 10gb?有没有办法在不重新安装的情况下减少这种情况?