0

我正在使用 python iris 模块读取一些 netCDF 数据并以 grib 格式输出特定字段以进行进一步的下游处理。但是我产生以下错误

 .../pythonlib/iris/1.9.1/lib/python2.7/site-packages/Iris-1.9.1-py2.7-linux-x86_64.egg/iris/fileformats/grib/_save_rules.pyc in gribbability_check(cube)    
   1062     cs1 = cube.coord(dimensions=[1]).coord_system   
   1063     if cs0 is None or cs1 is None:     
-> 1064         raise iris.exceptions.TranslationError("CoordSystem not present") 
   1065     if cs0 != cs1:  
   1066         raise iris.exceptions.TranslationError("Inconsistent CoordSystems")

 TranslationError: CoordSystem not present

因此,在阅读以下内容后:

虹膜谷歌组线程https://groups.google.com/forum/#!searchin/scitools-iris/grib2/scitools-iris/D2InfYESaUM/yVT7ayXSFV0J

StackOverflow 线程将 NetCDF 转换为 GRIB2

鸢尾花源代码位于 https://github.com/SciTools/iris/blob/master/lib/iris/fileformats/grib/grib_save_rules.py#L80

我尝试了以下

In [26]: radius=iris.fileformats.pp.EARTH_RADIUS

In [27]: u.coord(dimensions=[0]).coord_system=iris.coord_systems.GeogCS(radius)

In [28]: u.coord(dimensions=[1]).coord_system=iris.coord_systems.GeogCS(radius)

In [29]: u.coord(dimensions=[0]).coord_system
Out[29]: GeogCS(6371229.0)

In [30]: u.coord(dimensions=[1]).coord_system
Out[30]: GeogCS(6371229.0)  

In [31]: iris.save(u,'prod.grib2')
  ---------------------------------------------------------------------------
 TranslationError                          Traceback (most recent call last)
 <ipython-input-15-a38abe1720ac> in <module>()
 ----> 1 iris.save(u,'prod.grib2')

即我仍然产生同样的错误,在 iris 子程序中失败 gribbability_check

希望有人可以提供帮助。我将 iris 1.9.0 与 python 2.7.6 一起使用。该操作也因 iris 1.8.0 而失败

干杯

4

1 回答 1

1

感谢 iris google 小组的 Andrew Dawson 的回答。grib_save_rules.py 中的维度 [0] 和 [1] 严格指代空间维度,即使您的多维数据集可能会将时间用于第零维度。去引用:

在您的多维数据集和保存为 grib2 之间有大量代码。由于 grib 对大于 2 的维度一无所知(每条消息仅存储 1 个网格),我们将您的立方体分成每个网格的一个切片并继续传递,因此在您所指的函数中,维度 0 是纬度,1 是经度,无论你的立方体有多少其他维度。

如果我重复该过程但将 coord_system 规定为我的空间维度并使用垂直坐标赋予属性

cube.coord('vertical_level').standard_name = 'air_pressure'

可以保存grib。

于 2016-06-15T02:34:59.663 回答