python读取gribgrib2⽓象数据
如何读取GRIB数据?快看Python⼤神整理的⼲货!
橙⼦⼼法
百家号17-11-0116:30
GRIB是WMO开发的⼀种⽤于交换和存储规则分布数据的⼆进制⽂件格式,主要⽤来表⽰数值天⽓预报的产品资料。现⾏的GRIB 码版本有GRIB1 和GRIB2 两种格式。由于⼩编只接触过GRIB1数据,所以本⽂仅讲解如何读取GRIB1数据。
使⽤Python读取GRIB数据要根据在何种平台分别讨论。
⼀、Linux及Mac OS系统下python怎么读取txt
Linux、Mac OS系统下使⽤Python语⾔实现Grib数据读取主要依靠pygrib库,pygrib是欧洲中期天⽓预报中⼼(ECMWF)的GRIG API C 库的Python接⼝,通过这个库就可以将Grib数据读取出来。
(⼀)导⼊pygrib模块
>>> import pygrib
(⼆)打开Grib⽂件
>>> grbs = pygrib.open('/Users/Kallan/Documents/data/echhae50.082')
(三)提取⽂件信息
>>> grbs.seek(0)
>>> for grb in grbs:
grb
1:Geopotential Height:gpm (instant):regular_ll:isobaricInhPa:level 500:fcst time 24 :from 201507081200
信息解读
1 :数据列表的⾏号,有的⽂件可能包括多个数据
Geopotential Height:数据的名称
gpm (instant):数据的单位
regular_ll:常规数据,其实这个字段我也不清楚
isobaricInhPa:这个字段表⽰的是数据属性,此处表⽰是以hPa为单位的等压⾯
level 500:这个字段表⽰的是⾼度层
fcst time 24 :预报时效
from 201507081200 :起报时间
综合上⾯的信息可以得出,这个⽂件是从2015年7⽉8⽇12时开始的24⼩时后500hPa等压⾯⾼度场数据
(四)导出⽂件数据
⼆、Windows系统下
windows系统下并不能使⽤pygrib直接读取GRIB数据,主要原因是:GRIB_API在Windows下⽆法编译安装,从⽽导致pygrib⽆法安装。我曾经也为这个问题苦恼了很久,也到ECMWF论坛⾥了很久,也
给ECMWF发了邮件,回应我没有做Windows版本的打算,所以在Windows下直接⽤pygrib读取GRIB数据是基本不可能实现了。
后来通过⼤量的百度,还是到了在Windows下读取GRIB数据的⽅法:
⼀种是在Cygwin中安装pygrib,将pygrib的⽅法编译成读取GRIB的exe;
第⼆种是通过⼀个第三⽅的程序wgrib,先⽤wgrib把数据读存到txt,然后再⽤python读取txt⽂件;
第三种是通过官⽅的GRIB数据说明⽂档⾃⼰编写解码程序。
⾸先尝试了Cygwin,pygrib成功编译出了exe,但是⽆法运⾏,感觉Cygwin稍微复杂,所以我没有继续研究这⼀种⽅法,直接转向第⼆种⽅法。
(⼀)wgrib
在cmd中直接运⾏可得到如何使⽤的帮助信息。
知道如何使⽤wgrib程序后我们就可以使⽤os.system在Python中执⾏Windows命令⾏程序wgrib了
这样就可以在指定⽬录到输出的txt⽂件,然后将txt⽂件中的数据转换成数组。
原数据是37*37的数组,⽽输出的数据是每个数据占⼀⾏,所以需要进⾏⼀下转换
(⼆)⾃⼰编写解码库
编写解码程序的过程我已经记不清了,但是程序已经放到了GitHub中,⼤家可从头条号主页下⽅的GitHub菜单进⼊,⾥⾯还有GRIB的官⽅说明⽂档,⽅便⼤家照着说明⽂档继续完善。
由于⼩编只⽤到了GRIB1格式的数据,所以只写了GRIB1的解码库,⽽且仅仅是将数据导出功能,如果有感兴趣的同学,可以继续完善这个库。
posted on 2018-10-17 15:06 阅读( ...) 评论( ...)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论