我知道有像wgrib2这样的软件可以将文件grib
和grib2
格式转换为NetCDF
文件,但我需要另辟蹊径: from NetCDF
to grib2
,因为这里的当地气象局只能使用grib2
格式的网格数据。
似乎一种解决方案可能是在 Python 中,使用NetCDF4-Python 库(或其他)来读取NetCDF
文件并使用pygrib来编写grib2
.
有没有更好的办法?
我知道有像wgrib2这样的软件可以将文件grib
和grib2
格式转换为NetCDF
文件,但我需要另辟蹊径: from NetCDF
to grib2
,因为这里的当地气象局只能使用grib2
格式的网格数据。
似乎一种解决方案可能是在 Python 中,使用NetCDF4-Python 库(或其他)来读取NetCDF
文件并使用pygrib来编写grib2
.
有没有更好的办法?
经过更多研究,我最终使用了英国气象局的“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
还可以使用气候数据运算符 (cdo's) 来完成这项任务 - https://code.zmaw.de/projects/cdo/wiki
但需要安装所有附加库的软件。
我知道上面提到了 CDO,但我认为给出完整的命令会很有用
cdo -f grb2 copy in.nc out.grb
ECMWF 有一个基于命令行的工具来执行此操作:https ://software.ecmwf.int/wiki/display/GRIB/grib_to_netcdf