python写入grib文件
说明:ele中存储了要保存的变量名称,创建DataArray时的变量名可以任意定义,但DataArray中attrs的GRIB_shortName变量名称必须为ECMWF所定义的形式,具体细节可参考。如果不采用标准变量名,grib文件虽然可以写入成功,但名称会变为t,而且即便如果写入多个变量,解析时发现找不到变量。包括xarray库和cfgrib库,其中,xarray库安装较为方便,但安装cfgr
实现python写入grib文件可以通过cfgrib库中的to_grib函数,但是,正如官方所述
"GRIB write support is experimental, DO NOT RELY ON IT!"
在尝试用to_grib函数写入时,可能碰到各种问题。
本文对其展开了尝试,且相同文件内容,通过grib格式存储的空间仅为netCDF4文件的1/3左右。
具体写入步骤如下:
1. 依赖库安装
包括xarray库和cfgrib库,其中,xarray库安装较为方便,但安装cfgrib库可能碰到一些问题,具体安装方式可参考之前的博文python安装cfgrib读取grib数据_Tsingzao-于廷照的博客-CSDN博客
2. 创建xarray的Dataset
ds = xarray.Dataset({
e: xarray.DataArray(
data=data[i],
dims=['time', 'latitude', 'longitude'],
attrs={'units': units[i],
'GRIB_shortName': e}
) for i,e in enumerate(ele)
},
coords={'time': pd.date_range(timeStr, periods=len(data[0]), freq='H'),
'latitude': latS,
'longitude': lonS,
'start-time': startT},
)
说明:ele中存储了要保存的变量名称,创建DataArray时的变量名可以任意定义,但DataArray中attrs的GRIB_shortName变量名称必须为ECMWF所定义的形式,具体细节可参考ECMWF | Parameter database
如果不采用标准变量名,grib文件虽然可以写入成功,但名称会变为t,而且即便如果写入多个变量,解析时发现找不到变量。可以尝试自定义变量名查看一下具体的错误。
3. 保存文件
写入Dataset后,如果保存netCDF,可以用
ds.to_netCDF(path)
如果保存grib,则
to_grib(ds, path)
更多推荐
所有评论(0)