zoukankan      html  css  js  c++  java
  • python 读取grib 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:mygribwgrib1")
    # 执行cmd命令,查看各个“小房间”具体信息
    os.system(r"wgrib G:mete_dataW_NAFP_C_ECMF_20170713190330_P_C3E07131200071312001 -v")
    运行得到的结果如下图所示:


    如上图所示,我们可以得到很多有用的信息,例如:2m高的温度变量所在的“小房间”编号是82,接下来就可以根据这个编号82来进行读取2m温度变量,读取代码如下:

    import os
    # 将当前目录转到wgrib工具目录
    os.chdir("G:mygribwgrib1")
    # 执行cmd命令,查看各个“小房间”具体信息
    # os.system(r"wgrib G:mete_dataW_NAFP_C_ECMF_20170713190330_P_C3E07131200071312001 -v")
    # 知道了编号82,那么就可以根据这个编号把数据读到一个txt里面,注意:wgirb工具不支持读到csv文件,而wgrib2工具支持
    os.system("wgrib G:mete_dataW_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:mydownloadwgrib2")
    # 进行气象变量名称匹配,读取2m处温度这个气象变量到2m_tmp.csv文件中
    os.system("wgrib2 G:mete_data_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下同样可以使用这两个工具进行读取,只是在安装和命令上有一点小小的差异,大家感兴趣的可以一起讨论下,水平有限,肯定有写的不对的地方,欢迎指正!
    ---------------------
    作者:全村的希望呀
    来源:CSDN
    原文:https://blog.csdn.net/m0_37600626/article/details/79311129?utm_source=copy
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/ruiy/p/9803849.html
Copyright © 2011-2022 走看看