博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows下Python读取GRIB数据
阅读量:7069 次
发布时间:2019-06-28

本文共 2278 字,大约阅读时间需要 7 分钟。

一、在Windows下Python为什么无法读取GRIB

大家在windows系统不能读取GRIB数据的主要原因是,GRIB_API在Windows下无法编译安装,从而导致pygrib安装失败。我曾经也为这个问题苦恼了很久,也到ECMWF论坛里找了很久,也给ECMWF发了邮件,回应我没有做Windows版本的打算,所以在Windows下直接用pygrib读取GRIB数据是基本不可能实现了。

二、Windows下间接读取GRIB数据方法

后来通过大量的百度,还是找到了在Windows下读取GRIB数据的方法:一种是在Cygwin中安装pygrib,将pygrib的方法编译成读取GRIB的exe;另一种是通过一个第三方的程序wgrib2,先用wgrib2把数据读存到txt,然后再用python读取txt文件。

首先尝试了Cygwin,pygrib成功编译出了exe,但是无法运行,感觉Cygwin稍微复杂,所以我没有继续研究这一种方法,直接转向第二种方法。

1.wgrib2

wgrib2是由NCEP开发的一个功能强大的命令行工具,用于读取、创建和修改GRIB2文件。它是原有支持GRIB1编码的wgrib程序的延续,可以完成GRIB2的编码、解码,插值、修改投影方式、修改经纬度范围和要素提取等功能。wgrib2作为GrADS软件包中的一个工具,用户可以通过安装GrADS获得该软件,也可以通过访问它的官网获得最新的 进行编译。由于新版的wgrib输出数据之间没有分隔符,所以我找了一个之前的版本,输出后每个数据占一行。

  • wgrib2命令参数
    在cmd中直接运行wgrib.exe可得到如何使用的帮助信息。
Portable Grib decoder for NCEP/NCAR Reanalysis etc.   it slices, dices    v1.7.3.1 (8-5-99) Wesley Ebisuzaki usage: /cygdrive/d/wgrib/wgrib [grib file] [options] Inventory/diagnostic-output selections ;输出目录或诊断结果 -s/-v short/verbose inventory ;简短/详细目录 -V diagnostic output (not inventory ;输入诊断 (none) regular inventory ;默认目录 Options ;选项 -PDS/-PDS10 print PDS in hex/decimal ;输出16/10进制PDS -GDS/-GDS10 print GDS in hex/decimal ;输出16/10进制GDS -verf print forecast verification time ;输出预测验证时间 -ncep_opn/-ncep_rean default T62 NCEP grib table ;默认为T62_NCEP GRIB数据表 -yr print year using 4 digits ;输出4位数字的年份 Decoding GRIB selection ;GRIB解码选项 -d [record number|all] decode record number ;解码指定编号数据 -p [byte position] decode record at byte position ;解码所指定的二进制位置数据 -i decode controlled by stdin (inventory list) ;按目录列表解码 (none) no decoding ;不解码 Options ;选项 -text/-ieee/-grib/-bin convert to text/ieee/grib/bin (default) ;将解码数据转换成text/ieee/grib/bin格式的数据 -nh/-h output will have no headers/headers (default) ;是否包含标题头 -H output will include PDS and GDS (-bin/-ieee only) ;输出是否包含PDS和GDS -append append to output file ;在输出文件上添加而不是替换 -o [file] output file name, 'dump' is default ;输出文件名

2.使用os.system在Python中执行Windows命令行程序wgrib

import osos.system(os.path.abspath('.')+'\wgrib\wgrib.exe '+gribfilename+' -d 1 -text -nh -o '+outfilename)

这样就可以在指定目录找到输出的txt文件

3.将txt文件中的数据转换成数组

原数据是37*37的数组,而输出的数据是每个数据占一行,所以需要进行一下转换

f=open(outfilename,'r') grds=f.read().strip() grds=grds.split('\n') data= np.array(grds) data.resize(37,37) data= data.astype(float)

以上就是Windows下Python读取GRIB数据的完整方法,希望可以帮到需要的朋友

转载地址:http://nfhll.baihongyu.com/

你可能感兴趣的文章
二叉树、多叉树子路径遍历
查看>>
微信小程序:设置页面计时自动跳转
查看>>
从零开始理解JAVA事件处理机制(2)
查看>>
Window下部署MySql数据库
查看>>
黄聪:微信URL Scheme,URL唤起微信
查看>>
iOS清除缓存功能开发
查看>>
Linux 系统命令(cd之类的)在shell脚本中无效解析
查看>>
系统日志报错i8042prt无法加载
查看>>
卫星网络-拓扑优化-文献笔记
查看>>
Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
查看>>
各种字符串合并处理示例.
查看>>
ASCII与unicode的转换
查看>>
MVC中关于Membership类跟数据库的问题
查看>>
《Programming in Lua 3》读书笔记(二十七)
查看>>
排序--冒泡排序
查看>>
Bat 修改 xml 文件标签值
查看>>
Flask开发系列之Flask+redis实现IP代理池
查看>>
pywin32模块安装
查看>>
win32之bitmap篇
查看>>
Android SharedPreference中的几种模式说明
查看>>