将grib2消息读取到Iris立方体中



我目前正在探索在项目中使用iris来使用python读取预测grid2文件的概念。

我的目标是基于具有特定值的grib消息键,将grib消息加载/转换为iris立方体。

我用iris-grib做了实验,它使用了gribapi。使用iris-grib,我还没有在grib2文件中找到密钥,尽管密钥可以用"grib_ls-w…"看到通过cli。gribapi完成了这项工作,但我不确定如何将其与iris接口(我认为iris-grib就是这样做的)。

我想知道是否有人知道一种方法,可以基于具有特定值的grib消息密钥将消息获取到虹膜立方体中。谢谢

您可以通过iris-gridb中的底层gridb接口,即iris_grid.GribMessage类,获得gridapi所理解的任何内容
通常您会使用for msg in GribMessage.messages_from_filename(xxx):,然后像访问msg.sections[4]['productDefinitionTemplateNumber']一样访问它;CCD_ 3等。

您可以使用它来识别所需的消息,然后使用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问题)+我们会尽力帮助你。

附言:当你已经注册了Python3的兴趣时,你可能需要注意的是,gribapi的新"ecCodes"替代品应该很快就会出现,从而使Python 3最终能够支持grib数据
然而,Python3版本仍处于测试版,我们目前遇到了一些问题,现在是ECMWF提出的,所以它仍然几乎但不完全可以实现。

最新更新