我正在使用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
所以在阅读了以下内容之后:
Iris Google群组帖子https://groups.google.com/forum/#!searchin/scitools-iris/grib2/scitools-iris/D2InfYESaUM/yVT7ayXSFV0J
StackOverflow线程Converting NetCDF to GRIB2
https://github.com/SciTools/iris/blob/master/lib/iris/fileformats/grib/grib_save_rules.py#L80
的iris源代码我尝试了以下
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')
即。我仍然生成相同的错误,虹膜子程序gribbability_check
希望有人可以提供帮助。我正在使用iris 1.9.0和python 2.7.6。虹膜1.8.0的操作也失败了
干杯
答案 0 :(得分:1)
感谢Andrew Dawson对虹膜谷歌小组的回答。 grib_save_rules.py中的尺寸[0]和[1]严格指空间尺寸,即使您的立方体可能会将时间用于第0维度。引用:
在您的多维数据集和保存之间有一个巨大的数量的代码 GRIB2。因为grib对2以上的尺寸一无所知(它 每个消息只存储1个网格)我们将您的立方体分成一个切片 每个网格并向前传递,因此在您指的功能中 尺寸0是纬度,1是经度,无论多少 你的立方体的其他尺寸。
如果我重复这个过程,但是将coord_system规定为我的空间维度,并使用
给垂直坐标一个属性cube.coord('vertical_level').standard_name = 'air_pressure'
可以保存这个夹子。