GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品资料。现行的GRIB 码版本有GRIB1 和GRIB2 两种格式。由于小编只接触过GRIB1数据,所以本文仅讲解如何读取GRIB1数据。

使用Python读取GRIB数据要根据在何种平台分别讨论。

一、Linux及Mac OS系统下

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.exe可得到如何使用的帮助信息。

知道如何使用wgrib程序后我们就可以使用os.system在Python中执行Windows命令行程序wgrib了

这样就可以在指定目录找到输出的txt文件,然后将txt文件中的数据转换成数组。

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

(二)自己编写解码库

编写解码程序的过程我已经记不清了,但是程序已经放到了GitHub中,大家可从头条号主页下方的GitHub菜单进入,里面还有GRIB的官方说明文档,方便大家照着说明文档继续完善。

由于小编只用到了GRIB1格式的数据,所以只写了GRIB1的解码库,而且仅仅是将数据导出功能,如果有感兴趣的同学,可以继续完善这个库。

python读取grib2数据_python读取grib grib2气象数据相关推荐

  1. python读取grib2数据_python2 解析 Grib/Grib2数据

    python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...

  2. python读取html文件中的表格数据_Python 读取各类文件格式的文本信息 | doc,excel,html,mht...

    原标题:Python 读取各类文件格式的文本信息 | doc,excel,html,mht 众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的 ...

  3. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  4. python通信达数据_Python读取通达信数据

    Python读取通达信数据 一.介绍 python获取股票数据的方法很多,其中Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通 ...

  5. python 通达信数据_Python读取通达信本地数据

    一.介绍 python获取股票数据的方法很多,其中 Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通达信\vipdoc\sh\ ...

  6. 如何用python获取通达信数据_Python读取通达信本地数据

    一.介绍 python获取股票数据的方法很多,其中 Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通达信\vipdoc\sh\ ...

  7. python如何读取excel宏_Python读取含有VBA宏的Excel数据

    因为现在项目在开发新的API,我需要根据API方法论去校验这个API的计算逻辑和计算结果是否正确,而且需要将计算逻辑用Excel记录下来,所以就用了Excel的VBA. 1. 什么是VBA? 具体含义 ...

  8. python通达信模块_Python读取通达信数据

    Python读取通达信数据 一.介绍 python获取股票数据的方法很多,其中Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通 ...

  9. python处理多个excel数据_python 读取多个excel数据写入同一个excel中

    一.将excel数据源存储到同一个excel的不同sheet 中 例如A.xlsx 中有test1,test2 两张sheet.B.xlsx中有test3 一张sheet,存储到C.xlsx中后,C有 ...

  10. python读取连接数据库文件_python 读取配置文件 pandas连接数据库

    config.ini 配置文件内容: [DATABASE] host = 192.168.19.111 username = user password = pass port = 4333 data ...

最新文章

  1. 虚拟路由冗余协议VRRP
  2. opencv图像清晰度计算_Python中的十大图像处理工具
  3. 使用Java 8的Builder模式
  4. Linux CentOS 查看服务器信息命令及其它常用命令
  5. MySql的Delete、Truncate、Drop分析
  6. 计算机的英语谚语,英语谚语大全_2017考研:计算机专业考研复习要点_沪江英语...
  7. MINIGUI图形界面开发入门,交叉编译,移植
  8. k3 lede刷官改_斐讯 K3 路由 LEDE 固件刷回官方原版固件
  9. 学校机房中计算机软件安装,学校机房软件维护与安装快捷方法.doc
  10. 用C编程语言写出三行情书,用7种语言写的三行情诗,你一定没看过!
  11. 掠食细菌—蛭弧菌B. bacteriovorus,可以对抗革兰氏阴性感染?
  12. 微信小程序:连续签到7天签到积分获得功能设计
  13. 杠子老虎鸡虫 《python二维游戏编程》课后项目一
  14. javaweb实验室预约管理系统
  15. nodejs之pathinfo/pathname的使用
  16. MyBatis02:CRUD操作和配置解析
  17. java 时间轮算法_时间轮算法解析(Netty HashedWheelTimer源码解读)
  18. Android 移动安全知识技术全解(加固技术、常规漏洞、Android 逆向......),移动安全问题不容忽视
  19. Android自定义view摇杆,Android自定义摇杆
  20. 《悠悠岁月》悠悠岁月,浅藏浅忆,且行且珍惜

热门文章

  1. java读取视频时长
  2. 这两天说到的苹果软件中毒是个什么情况?
  3. Sublime Text 全程指南
  4. Java中如何防止内存泄漏的发生
  5. 利用贝叶斯分类器进行文本挖掘---笔记
  6. python入门教材论坛_Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
  7. 叉积 微分 恒等式_4分钟带你认识向量的极化恒等式。
  8. 调用方法try起来的好处_Java:一个重要的停止线程方法——interrupt
  9. check oracle 为空值_索引(index)-Oracle高级知识(3)-数据库(23)
  10. Java中的序列化问题