python读取grib grib2气象数据
如何读取GRIB数据?快看Python大神整理的干货!

橙子心法
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气象数据的更多相关文章
- python 读取grib \grib2
一.环境准备(1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址: ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wgi ...
- Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- python读取数据库并把数据写入本地文件
一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...
- 两分钟解决Python读取matlab的.mat数据
Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...
- Python读取字典(Dictionary)内数据的方法
读取json后,数据类型为字典,对字典内数据的提取又有不同的方法,根据不同的字典类型 上图可以看到有”[]”,”{}” python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也 ...
- Python读取excel表的数据
from openpyxl.reader.excel import load_workbook #读取xlsx文件def readExcelFile(path): dic={} #打开文件 file= ...
- python 读取单所有json数据写入mongodb(单个)
<--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...
- Python读取Excel中的数据并导入到MySQL
""" 功能:将Excel数据导入到MySQL数据库 """ import xlrd import MySQLdb # Open the w ...
- python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口
!/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...
随机推荐
- 阅读 ‘External Memory PHY Interface (ALTMEMPHY)’笔记
阅读 ‘External Memory PHY Interface (ALTMEMPHY)’笔记 1.PLL reference clock frequency 此处控制器输入时钟设置为100MHz, ...
- 关于JFame 屏幕居中显示的问题
场景: 在利用 JAVA 的 Swing 开发 C/S 架构 的前端界面 目的: 想让 JFrame 居中显示在整个 屏幕的正中位置 方法一:JFrame frame = new JFr ...
- IDEA运行tomcat8.5.35源代码
前提环境,安装和配置好java1.8+环境,maven,IDEA 1.下载Tomcat源代码:https://tomcat.apache.org/download-80.cgi#8.5.35 2.创建 ...
- autoconf配置的项目,编译debug版本
./configure CFLAGS=" -g " 当然,c++代码就把 CFALGS 改成 CPPFLAGS
- Excel导入MS SQL SERVER 操作
关于Excel导入到sql操作的相关问题总结: 一.大批量数据导入 方法1.从Excel大批量数据导入时我们可以使用sql里面有一个batch copy的功能 方法2.在sql中建一个table ty ...
- consul-template + nginx部署高可用负载均衡
一.Consul-Template简介 Consul-Template是基于Consul的自动替换配置文件的应用.在Consul-Template没出现之前,大家构建服务发现系统大多采用的是Zooke ...
- Nodejs使用多个分隔符分隔字符串
在nodejs中当需要使用多个分隔符分隔字符串时,可以使用正则表达式作为split函数的参数,具体使用如下: var str = "111@222#333 444@555# 666 777& ...
- centos6.5部署OpenStack单节点
环境 最小化安装的centos6.5 设置如下: 一.修改基本配置 1.修改主机名为controller [root@localhost ~]# hostname controller [root@l ...
- 为什么QQ空间和QQ邮箱都是IE默认打开?
为什么QQ空间和QQ邮箱都是IE默认打开? 我已经设置成chrome为默认浏览器了 原文转载至:https://zhidao.baidu.com/question/390662851068217285 ...
- SCCM2012 R2实战系列之五:发现方法
打开SCCM2012的控制台 点击左侧栏的“管理”选项,然后展开“层次结构配置”,点击“发现方法”来配置客户端发现. 勾选“启用Active Directory林发现”.“发现Active Direc ...