一、环境准备

(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数据相关推荐

  1. python读取grib2数据_python读取grib grib2气象数据

    GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GRIB2 两种格式.由于小编只接触过GRIB1数据,所 ...

  2. windows下wgrib/wgrib2和python读取grib2数据

    windows下没有api可以直接读grib或者grib2的数据.所以下载wgrib或者wgrib2来读grib数据.wgrib可以读grib1格式(.grb)的数据,wgrib2可以读grib2格式 ...

  3. python批量读取grib_windows python读取grib2数据

    一.环境准备 (1).python3环境 (3).wgirb2工具(用于读取grib2文件),下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2 二.环境测试 ...

  4. python读取grib2数据_python2 解析 Grib/Grib2数据

    python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...

  5. python读取grib2数据_用Python加载grib2文件

    我正在尝试加载grib2文件,我不确定文件是问题还是我试图加载它们的方式.在 这些文件是从here中提取的(我不是从这里下载的,而是从同事的文件夹中复制的,所以它们应该是相同的文件-,但是我也尝试插入 ...

  6. python在windows和linux系统下批量读取grib2数据

    python在windows系统和linux系统读取grib或者grib2数据所用的库不一样,下面分别细说. 1.python在linux系统下批量读取grib或grib2数据 linux系统对pyt ...

  7. Windows上python读取grib2文件(不用Linux)

    最近在网上下载的NCEP的fnl数据,发现只有grib2文件格式.因为现在处理数据使用的更多的是python,matlab一类的.网上一搜python读取grib文件需要依赖pygrib库,pygri ...

  8. python读取fnl数据计算200-800km范围内的区域平均、散度、涡度实现grads函数

    之前的气象数据如从NCEP中下载的FNL数据一般都是采用Grads处理,但Grads的代码语言比较繁杂,而且一般只用来处理气象数据,所以逐渐都不维护了.作为新生代的python,可以用来解决很多,因此 ...

  9. python批量读取grib_Windows下Python读取GRIB数据

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

最新文章

  1. 中国半导体最强助攻来了!十年免税、上下游一揽子扶持,明确「集成电路」为一级学科...
  2. 高性能服务器架构思路(五)——分布式缓存
  3. 程序员们请别做下一个小贝
  4. jqGrid细节备注—pager文字的设置,更改默认的提交方式
  5. Vue 监视属性 watch
  6. 将iso镜像包设置成yum源_Centos7 Nginx搭建局域网yum仓库详细步骤,转发
  7. 我与CSDN的2020年
  8. java多态/重载方法——一个疑难代码引发的讨论
  9. 苏东坡的起伏一生:就算人生不顺利,也要活的潇潇洒洒
  10. 史上最美八大隶书,你都临过吗?
  11. iTunes现在已在Microsoft Store中
  12. SEED-XDS560Plus Emulator for CCS3.3.82.exe 在硬盘上都安装了什么?
  13. GitHub操作流程
  14. MacOS 中解压缩(unzip)出现 illegal byte sequence 的解决方案
  15. 推荐4个实用的4~20mA输入/0~5V输出的I/V转换电路
  16. 集合(Set、Collections、Map、集合嵌套)
  17. 《缠中说禅108课》104:几何结构与能量动力结构 1
  18. GDI+——使用Graphics类绘制基本图形
  19. U盘背景、图标个性设置
  20. 2021年中国可再生能源行业发展现状分析,政策利好行业快速发展「图」

热门文章

  1. ArcSDE建Table在ArcCatalog中不可见
  2. IPhone之AVAudioRecorder
  3. 在64位Windows 7 激活BitDefender Internet Security 2010
  4. 函数 —— popen() fscanf() sprintf() 执行shell命令并获取结果
  5. 犹豫了许久,还是写个年总结记录一下吧
  6. 十三: 悲观锁乐观锁:解决丢失更新问题
  7. 源码安装zabbix3.2.7时PHP ldap Warning
  8. JS三种简单排序算法
  9. 最快最简单的排序(之二)——桶排序(简化版)
  10. The source attachment does not contain the source for the file Activity.class