我从 ECMWF 下载了 grib 格式的 Era interim 数据。有没有办法将具有多个波段的 grib 文件转换为 netCDF4,使波段保持 NETCDF 格式?
我尝试使用 cdo 操作,但输出将只是 grib 文件的第一个波段。
cdo -f nc copy input.grib output.nc
我从 ECMWF 下载了 grib 格式的 Era interim 数据。有没有办法将具有多个波段的 grib 文件转换为 netCDF4,使波段保持 NETCDF 格式?
我尝试使用 cdo 操作,但输出将只是 grib 文件的第一个波段。
cdo -f nc copy input.grib output.nc
python
是的,使用,xarray
和cfgrib
(需要 ECCODES)有一种非常舒适的方式。
按照github页面上的说明安装 cfgrib,您将在 eccodes 安装中拥有所有必需的 grib 表。
之后你只需要打开你的 grib 文件:
import xarray
data = xarray.open_dataset('path_to_grib_file.grib1', engine='cfgrib')
data.to_netcdf('netcdf_file.nc')
对于这种使用 ECMWF 数据的任务,通常最好安装 eccodes。例如在 Mac 上你可以做
brew install eccodes
这将为您提供许多有用的命令行工具,只要输入文件位于常规纬度/经度网格或常规高斯网格(键“typeOfGrid”应为“regular_ll”或“regular_gg”),您就可以转换为 netcdf
grib_to_netcdf -o output.nc input.grb
这个工具比 CDO 更强大,因为它可以处理多个时间轴(例如,具有多个开始日期的季节性预测)以及额外的维度,例如集合成员编号,这可能会使 CDO 出错。
注意:问题的标题表明 netcdf4 是必需的,但您对 cdo 使用了 -f nc 选项。请注意,要使用 cdo 指定 netcdf4,您应该使用
cdo -f nc4