python读取grib文件_Windows下Python读取GRIB数据

之前写了一篇《基于Python的GRIB数据可视化》的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明。

一、在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输出数据之间没有分隔符,所以我找了一个之前的版本,输出后每个数据占一行。本文中使用的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数据表

-4yr 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 os

os.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数据的完整方法,希望可以帮到需要的朋友

python读取grib grib2气象数据

如何读取GRIB数据?快看Python大神整理的干货! 橙子心法 百家号17-11-0116:30 GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品 ...

[转]Windows下Python多版本共存

https://blog.csdn.net/dream_an/article/details/51248736 Windows下Python多版本共存 Python数据科学安装Numby,pandas ...

windows下python常用库的安装

windows下python常用库的安装,前提安装了annaconda 的python开发环境.只要已经安装了anaconda,要安装别的库就很简单了.只要使用pip即可,正常安装好python,都会 ...

Windows下Python多版本共存

Windows下Python多版本共存 Python数据科学安装Numby,pandas,scipy,matpotlib等(IPython安装pandas) 0.0 因为公司项目,需要Python两个 ...

Windows下python的配置

Windows下python的配置 希望这是最后一次写关于python的配置博客了,已经被python的安装烦的不行了.一开始我希望安装python.手动配置pip并使用pip安装numpy,然而发现 ...

TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.pyth ...

Python读取JSON数据,并解决字符集不匹配问题

今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...

本文讲述下windows下使用rsync备份数据

本文讲述下windows下使用rsync备份数据 需要使用的软件如下: 环境需求: 上海monitor上跑有定时任务计划备份线上数据库,现在需要把上海monitor上的备份数据拉回到179.12数据回 ...

随机推荐

java的继承和重写

继承是面向对象最显著的一个特性.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.[1]  Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以 ...

Immutable.js – JavaScript 不可变数据集合

不可变数据是指一旦创建就不能被修改的数据,使得应用开发更简单,允许使用函数式编程技术,比如惰性评估.Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 f ...

plsql配置连接远程数据库

一.首先安装PL/SQL Developer 下载地址:https://yunpan.cn/cM3njKpfK8MnT 访问密码 996a 二.再安装instantclient_11_2 下载地址:h ...

Window10安装TestLink,以及登录mysql数据库的错误处理

步骤一: 需要安装apache和mysql,但是我们这里仅仅是使用testlink,不关注其他,所以使用Vertrigoserv进行傻瓜式安装,安装完后,下载testlink解压,将解压后的文件放入D ...

Xcode5和6共处,如何发布应用程序存储

怎样你和我一样手贱安装了Xcode6,同一时候又须要公布应用到商店时,你会发现打好的包是通只是审核的. 验证报错: unable to validate application archives of ...

如何使用.net开发一款小而美的O2O移动应用? ——“家庭小秘”APP介绍及采访记录

“家庭小秘”是一款“互联网+生活服务”平台,为市民家庭提供优质家庭生活服务和企业后勤服务,包含了用户注册.购买预约.订单查询.充值付款.即时通讯等功能. 这款应用已上线至AppStore和安卓的应用商 ...

centos7安装单机rocketmq,图文教程

系统环境 1.操作系统:64位CentOS Linux release 7.2.1511 (Core) 2.jdk版本:1.8.0_121 3.IP地址:192.168.1.210 下载rocketm ...

WebServer搭建过程

第一步,新建Web网站项目 第二步: 右击项目解决方案,选择添加新建项 选择Web服务项 第三步,在asmx方法中将Hello World注释掉,然后编写自己的方法,这里根据项目的不同可以做不同的处理 ...

加载ConversationListActivity以及延迟的使用

1. 加载会话列表分两步加载. 且第1步和第2步之间有些延迟,便于第1步的结果及时在ListView中显示出来. mHandler.postDelayed(new LoadThreadsExtra() ...

容错处理库Polly使用文档

Design For Failure1. 一个依赖服务的故障不会严重破坏用户的体验.2. 系统能自动或半自动处理故障,具备自我恢复能力. 以下是一些经验的服务容错模式 超时与重试(Timeout an ...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值