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数据的完整方法,希望可以帮到需要的朋友
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数据回 ...
随机推荐
- [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 160913 02:11:21 mysqld_safe mysqld from pid file /tmp/mysql.pid ended
-- :: [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0 -- :: [Warning] InnoDB: New ...
- 1、下载LInux版的tomcat6
1.下载LInux版的tomcat6 http://mirror.bit.edu.cn/apache/tomcat/tomcat-6/v6.0.37/bin/apache-tomcat-6.0.37. ...
- MySQL的 explain 解析
EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 项 说明 id MySQL Query Optimizer 选定的执行计划中查询的序列号.表示查询中执行 select 子句 ...
- FMDB的一些基本操作小结
http://blog.csdn.net/iunion/article/details/7204625 仅供自己记录使用, h文件 #import <Foundation/Foundation. ...
- tableview的reloadData应注意
http://blog.csdn.net/ouyangtianhan/article/details/7835041 http://stackoverflow.com/questions/160715 ...
- 一起学JUCE之HashMap
基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.) ...
- mac解压缩
tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------.gz解压1:gunz ...
- redhat在线安装chrome浏览器
开始的时候是参考吹尽黄沙始到金的文章http://www.cnblogs.com/effective/archive/2012/03/18/2405189.html 1.创建一个文件/etc/yum. ...
- 把div 当文字来进行布局控制
两边对齐 text-align: justify; text-justify: distribute-all-lines;/*ie6-8*/ text-align-last: justify;/* i ...
- Java IO面试
1. 讲讲IO里面的常见类,字节流.字符流.接口.实现类.方法阻塞. 字节流和字符流的区别: 1)字节流处理单元为1个字节,操作字节和字节数组,而字符流处理的单元为2个字节的Unicode字符,分别操 ...