将NetCDF转换为GRIB2
我知道有一些软件,比如wgrib2,可以把grib
和grib2
格式的文件转换成NetCDF
文件。但我需要做的是反向操作:把NetCDF
文件转换成grib2
格式,因为我们这里的地方气象局只能处理grib2
格式的网格数据。
看起来有一个解决方案可以用Python来实现,使用NetCDF4-Python库(或者其他库)来读取NetCDF
文件,然后用pygrib来写入grib2
格式。
有没有更好的方法呢?
4 个回答
4
你也可以使用气候数据操作工具(叫做cdo)来完成这个任务 - https://code.zmaw.de/projects/cdo/wiki
不过,你需要先安装这个软件和所有相关的库文件。
5
我知道在其他回答中提到了CDO,但我觉得给出完整的命令会更有帮助。你需要使用copy
命令,并通过-f选项来指定输出格式。
cdo -f grb2 copy in.nc out.grb
10
经过进一步研究,我最终选择了英国气象局的“Iris”包(http://scitools.org.uk/iris/docs/latest/index.html),这个工具可以读取NetCDF文件,还能处理OPeNDAP、GRIB和其他几种格式,并且可以将数据保存为NetCDF或GRIB格式。
简单来说,代码大致是这样的:
import iris
cubes = iris.load('input.nc') # each variable in the netcdf file is a cube
iris.save(cubes[0],'output.grib2') # save a specific variable to grib
不过,如果你的NetCDF文件里面没有足够的元数据,你可能需要添加一些,这个Iris工具也可以做到。这里有一个完整的示例:
https://github.com/rsignell-usgs/ipython-notebooks/blob/master/files/Iris_CFSR_wave_wind.ipynb