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)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值