无法使用python iris模块保存到grib2文件

时间:2016-05-30 05:43:08

标签: python netcdf grib python-iris

我正在使用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的操作也失败了

干杯

1 个答案:

答案 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'

可以保存这个夹子。