tar -zxvf wgrib2
cd grib2
分以下两种情况:
除USE_REGEX=1、MAKE_FTN_API=1外,其余均设置为0。编译后的wgrib2,只能读取grib1文件,如果读取grib2文件,会出现“packing type 40 not supported”的错误信息,即为没有安装jasper。
a、在1的基础上,设置USE_NETCDF4=1、USE_PNG=1、USE_JASPER=1。
b、由于之前已经安装了netcdf4、hdf5、libpng、jasper,需对makefile中的jlib、netcdf4lib、hdf5lib、pnglib、zlib、wLDFLAGS、wCPPFLAGS等进行修改到相应库的目录下。
c、并注释掉需在640行后的${jasperdir}、${jlib}、${pngdir}、${pnglib}、${zdir}、${zlib}、${netcdf3dir}、${netcdf3lib}、${netcdf4src}、${netcdf4dir}、${netcdf4lib}、${hdf5src}、${hdf5dir}、${hdf5lib}相关内容,这些内容均是wgrib2自行安装相应库的命令。
export COMS_SYS=intel_linux
export FC=ifort
export CC=icc
make
make lib
编译成功后,在wgrib2文件下生成,wgrib2可执行文件,使用grib2文件测试正常。
编写fortran程序,调用wgrib2,使用grib2文件测试正常。实现fortran读取grib2。
初学python,利用conda构造cfgrib_env环境后,依次安装xarray、eccodes、cfgrib,尝试读取模式预报数据,cfgrib.bindings.TGribInternalError出现错误“End of resource reached when reading message (-45)”,cfgrib.dataset.DatasetBuildError出现错误“Key present and new value is different: key='heightAbove Ground' value=Variable(dimensions=(), data=2) new _value=Variable(dimensions=(), data=10)。
问题待解决。
--------------------------------------
经过1个小时的尝试,发现cfgrib.bindings.TGribInternalError是由于grib2文件自身长度问题,更换文件该问题消失;cfgrib.dataset.DatasetBuildError不会影响数据读取,附几种读取grib2文件的方法(笔者均已实现):
1. win环境下wgrib2.exe(原文: https://www.jianshu.com/p/58981634ac17 )
2. win环境下python+cfgrib+xarray——cfgrib用关键字提取grib2变量方法(原文: https://cloud.tencent.com/developer/article/1471285 )
3. shell环境下python+pygrib(原文: https://www.cnblogs.com/jiangleads/p/9705787.html )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)