python写入grib文件

实现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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部