如何读取GRIB数据?快看Python大神整理的干货!

橙子心法

百家号17-11-0116:30

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读取grib grib2气象数据的更多相关文章

  1. python 读取grib \grib2

    一.环境准备(1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址:  ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wgi ...

  2. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  3. python读取数据库并把数据写入本地文件

    一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...

  4. 两分钟解决Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  5. Python读取字典(Dictionary)内数据的方法

    读取json后,数据类型为字典,对字典内数据的提取又有不同的方法,根据不同的字典类型 上图可以看到有”[]”,”{}” python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也 ...

  6. Python读取excel表的数据

    from openpyxl.reader.excel import load_workbook #读取xlsx文件def readExcelFile(path): dic={} #打开文件 file= ...

  7. python 读取单所有json数据写入mongodb(单个)

    <--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...

  8. Python读取Excel中的数据并导入到MySQL

    """ 功能:将Excel数据导入到MySQL数据库 """ import xlrd import MySQLdb # Open the w ...

  9. python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口

    !/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...

随机推荐

  1. CentOS 7 firewalld vsftpd开放端口

    开放FTP端口的方法: 暂时开放 ftp 服务 firewall-cmd --add-service=ftp 1 永久开放 ftp 服务 firewall-cmd --add-service=ftp ...

  2. JAVA的debug入门和多断电调试

    调试的一般都是逻辑 第一步的错误双击数字旁边的蓝色地方,或者点击右键如图 断点的意思就是程序执行在哪里就停止 当找不到DEBUG中的Variables是在位置输入Variables就可以了: 再按下F ...

  3. Linux网路查看工具

    源自:http://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg==&mid=2650625758&idx=1&sn=856dda86869d ...

  4. Python 里面什么时候用一个=,什么时候用两个=

    赋值用=                                                                   i != j != k   >>>> ...

  5. DB2如何将数据库表解锁

    死锁是应用程序争抢资源造成de,把相关应用程序结束掉就可以解除死锁了 先用list application for database yourdatabasename show detail 来看看应 ...

  6. word&excel&ppt文档加密方式

    ppt excel word

  7. [UE4]增加观察者

    角色死亡以后,让控制器控制另外一个只能移动,没有实体的Character角色 使用“Possess”函数让控制器控制新生成的观察者对象.如上图所示要使用Delay延迟1秒再生成观察者,是因为死亡的时候 ...

  8. Android拨打接听电话自动免提

    权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-p ...

  9. AndroidStudio2.2.2 打开ddms快捷键

    按两下shift键,后在弹出的对话框中输入Android Device,在出现的选项中单击即可,如图.

  10. T-SQL 简单子查询

    1.使用变量的方式实现的查询 use StudentManageDB go declare @StuId int --查询张永利学号 select @StuId=StudentId from Stud ...