windows python读取grib2数据
一、环境准备
(1)、python3环境
(2)、wgirb工具(用于读取grib1文件),下载地址: ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib
(3)、wgirb2工具(用于读取grib2文件),下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2
二、环境测试
工具下好了,windows下无需安装,怎么看是否能用呢?很简答,以wgrib为例,下载好了之后在我的文件夹下是这样的:
可以看到里面有一个应用程序,那么从命令行进入该文件夹下,运行命令:wgrib.exe就可以查看一些使用帮助了,如下图所示
可以看到很多提示信息,也就是教我们如何使用这个工具。wgrib2也是同样的查看。
接下来就可以使用python来读取grib1和grib2数据了(其实就是在python里面调用cmd命令而已)
三、读取数据
grib1和grib2数据我了解不多,说错的地方还请大家指正,它们是两种气象数据,在我看来,它相当于一个大仓库,里面是一个个“小房间”,每个房间都有编号,每个“小房间”存放的是一个气象变量,例如温度、湿度、压力等等,那么如何读取我们需要的气候变量呢?下面分别以grib1和grib2数据为例,来读取温度变量的值。二者读取方式相似,只是使用的工具不同。
刚刚说了,每一个“小房间”存放的是一个气象变量且“小房间”有编号,那么我们有2中方法进行读取,一种是根据“小房间”编号进行读取,另一种是根据变量名称进行匹配读取,一般来说后者使用的较多,毕竟使用名称是肯定错不了的。下面进行分别介绍。
1、按编号读取
既然要根据编号读取,那么首先要知道编号才行,还好wgrib工具中也提供了这和功能。查看“小房间”编号的代码如下:
import os
# 将当前目录转到wgrib工具目录
os.chdir("G:\mygrib\wgrib1")
# 执行cmd命令,查看各个“小房间”具体信息
os.system(r"wgrib G:\mete_data\W_NAFP_C_ECMF_20170713190330_P_C3E07131200071312001 -v")
运行得到的结果如下图所示:
如上图所示,我们可以得到很多有用的信息,例如:2m高的温度变量所在的“小房间”编号是82,接下来就可以根据这个编号82来进行读取2m温度变量,读取代码如下:
import os
# 将当前目录转到wgrib工具目录
os.chdir("G:\mygrib\wgrib1")
# 执行cmd命令,查看各个“小房间”具体信息
# os.system(r"wgrib G:\mete_data\W_NAFP_C_ECMF_20170713190330_P_C3E07131200071312001 -v")
# 知道了编号82,那么就可以根据这个编号把数据读到一个txt里面,注意:wgirb工具不支持读到csv文件,而wgrib2工具支持
os.system("wgrib G:\mete_data\W_NAFP_C_ECMF_20170713190330_P_C3E07131200071312001 -d 82 -h -text -o 2m_tmp.txt")
读取结果如下图所示:
除此之外,wgrib工具还支持“变量名称匹配读取”,在这里就不介绍了,可以看下一部分的利用wgrib2工具进行“变量名称匹配读取”二者是类似的。
2、按名称匹配读取
一般来说,用名称匹配读取这个方法的占多数,因为虽然grib文件可以看做“仓库”,一个个气象变量可以看做“小房间”,但是不同的grib文件内部的“小房间”分布可能是不一样的,这样的话同一气候变量的编号也就不确定,无法单靠一个编号批量读取很多文件。而利用名称匹配读取就不存在这个问题,因为气象变量的名称是不会变的。以读取grib2文件里的2m处的温度为例,这里使用wgrib2工具,wgrib2工具功能更强大,可以直接读出为csv文件,代码如下:
import os
# 将当前目录转到wgrib2工具目录
os.chdir("D:\mydownload\wgrib2")
# 进行气象变量名称匹配,读取2m处温度这个气象变量到2m_tmp.csv文件中
os.system("wgrib2 G:\mete_data\Z_NAFP_C_BABJ_20170709000000_P_CNPC-T639-GMFS-HNEHE-03900.grib2 -match ':TMP:2 m' -csv 2m_tmp.csv")
读取结果如下图所示:
csv格式的数据更便于我们处理,倒数第一列就是温度值。
同理,其他的气候变量同样可以使用匹配的方式读取出来,只是改变下代码-match后面的气象变量即可,大家可能会问这些气象变量的简写如何得知,这些都是固定的,目前为止我只用了温度和降水,其他的我也不知道,有需要的话可以去查一查。
结束
这两个工具的功能还有很多,目前我用到的只是一丢丢,有其他需要的童鞋可以使用wgrib.exe和wgrib2.exe命令来进行查看帮助,发掘更多功能。在linux下同样可以使用这两个工具进行读取,只是在安装和命令上有一点小小的差异,大家感兴趣的可以一起讨论下,水平有限,肯定有写的不对的地方,欢迎指正!
windows python读取grib2数据的更多相关文章
- Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- Python读取JSON数据,并解决字符集不匹配问题
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...
- python 读取excel数据并将测试结果填入Excel
python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...
- Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python——读取MATLAB数据文件 *.mat
鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...
- 利用Python读取外部数据文件
不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数 ...
- python 读取二进制数据到可变缓冲区中
想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...
- Python读取文件数据
1题目要求: 文本文件有这些数据,需要的只有其中的5个属性,如下颜色标记 像以下的数据达到75万组: 1product/productId: B0000UIXZ4 2product/title: Ti ...
- Python读取excel 数据
1.安装xlrd 2.官网 通过官网来查看如何使用python读取Excel,python excel官网: http://www.python-excel.org/ 实例: (1)Excel内容 把 ...
随机推荐
- 在同一台电脑安装python 2 和3,并且怎样安装各自的pip和模块
安装python2.7 和 3.6不冲突直接安装就行 安装pip 访问https://pip.pypa.io/en/stable/installing/获取地址 curl https://bootst ...
- java集合之HashMap源码解析
Map是java中的一种数据结构,围绕着Map接口,有一系列的实现类如Hashtable.HashMap.LinkedHashMap和TreeMap.而其中HashMap和Hashtable我们平常使 ...
- 使用zlib来压缩文件-用delphi描述
今天用到压缩文件的问题,找了一些网上的资料,后来发现了delphi自身所带的zlib单元,根据例子稍微改变了一些,使它能够符合所有的格式. 使用时,需要Zlib.pas和 Zlibconst.pas两 ...
- NDK学习笔记(二)
花了点时间把pixeliop的部分看完了,拿到开发文档提供的案例稍事修改,把画面左半边压暗. 这个案例重点在于理清pixel_engine()函数中的坐标与scanline的关系. y代表当前正在调用 ...
- NDK学习笔记(Add.cpp注释)(一)
// Add.C // Copyright (c) 2009 The Foundry Visionmongers Ltd. All Rights Reserved. static const char ...
- 黄聪:C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)学习笔记(转)
Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 下面是Json序列化和反序列化的简单封装: /// & ...
- 黄聪:VPS服务器轻松备份工具配置
- ie6下a标签click事件无法触发加载iframe
ie6下a标签click事件无法触发加载iframe,把a换成span或者别的,就可以了
- github中fork的使用
转载https://www.cnblogs.com/patchouli/p/6511251.html 由于git的权限控制功能比较弱,如果想给某个项目提供代码除了直接获得项目的push权限外,gith ...
- centos6.5部署OpenStack单节点
环境 最小化安装的centos6.5 设置如下: 一.修改基本配置 1.修改主机名为controller [root@localhost ~]# hostname controller [root@l ...