grib数据是以另一种带压缩功能的自描述文件,和netcdf相比,它没有什么额外的优点,但有诸多使用上的不便。grib使用不便的原因有两个:
- 该数据的标准定义严格且狭窄,仅有少数部门(或单位、或应用场景)能够完全遵守标准来制作数据;
- 数据读写接口工具支持的语言不丰富,接口容错性差。
当气象部门有些新的数据需要传输,若套用grib格式进行压码,往往由于难以完全符合标准,导致下游数据应用部门出现解码错误。当前,grib文件格式之所以仍然流行,一方面是因为和历史数据、系统的承接,另外一个重要原因是欧洲中心在使用,间接导致许多数值预报研究部门在使用该格式。实际上grib所需的功能用netcdf完全能够替代,且后者明显更加便利。
目录
无论安装以下哪种库, 强烈建议在新环境下安装,之前在base环境下安装各种报错!!!如何在新环境下安装可参见我之前的总结或网上其他文章。
一、不推荐方法
1.pygrib(2021年之前)
pygrib库基于python2.4+、numpy、pyproj、Jasper和GRIB_API,依赖库基于Linux或MacOS,GRIB_API将于2020年6月30日正式被ecCodes取代。如果要在Windows上使用pygrib,必须使用Cygwin环境,因为grib_api库需要posix环境。Cygwin安装说明可在此处获得。综合来看,不推荐使用pygrib库。
2.GDAL
可于window下安装,安装简单,但是需借助wgrib2查看grib变量所在通道,因此不推荐。
3. PyNIO
Linux或者MacOS用户强烈推荐PyNIO。
PyNIO (“pie-nee-oh”) 允许对气候和天气中流行的各种科学数据格式进行读写访问:
- NetCDF3 / NetCDF4
- GRIB1 / GRIB2
- HDF4
- HDF-EOS2
- HDF-EOS5
- Shapefile
PyNIO由美国国家大气研究中心(NCAR)的计算和信息系统实验室开发,最熟悉气象数据格式的机构开发的库,值得信赖,不过对于windows用户不够友好,只能在Linux或者MacOS上安装。
二、推荐方法
1.pygrib(2021年之后)
2021年之后,pygrib开始支持windows系统,使用范围大增,读取grib数据稳定,详见官网和用户手册。
安装方法:
conda install -c conda-forge pygrib
示例:
import pygrib
grbs = pygrib.open('a2.grib')
# 输出所有变量
for grb in grbs: # 索引从1开始,不是从0开始
print(grb)
# 查看所有变量
v_names = grbs.select()
# 选择第一个变量,从0索引开始
v0 = grbs.select()[0]
# 随便挑一个变量做示例,从1开始
grb = grbs[1]
key = grb.keys()
value = grb.values
lats, lons = grb.latlons()
缺点: 读取的变量grbs数量有可能出现非常多,很难挑出自己想要的变量所在维度。
2. xarray搭配cfgrib
优点:Linux/windows/MacOS均可用,安装较简单,强烈建议在新环境下安装各所需库
安装步骤:
- 新建新环境
conda creat -n cfgrib_env