爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8812|回复: 5

[grib] 利用Python和matlab实现对fnl_00.grib2数据的提取

[复制链接]

新浪微博达人勋

发表于 2018-9-19 10:23:03 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 DDQZXB 于 2018-9-19 14:34 编辑

fnl_.grib2数据下载及处理
【一】数据下载
关于数据类型的介绍,论坛里已有不少帖子,这里不再赘述。
关于数据的下载,请依据论坛前辈的帖子(http://bbs.06climate.com/forum.php?mod=viewthread&tid=49645&page=1
【二】数据提取
论坛也有不少内容,但本人非气象专业出身,Meteoinfo、GrADS、Fortran等统统没有接触过,因此在论坛遨游许久也没学会。
但本人曾于本科期间学过一段时间的Matlab,于是便从这个方面进行了尝试。
【注:以下内容对气象专业的各位大佬来说,简直就是小case。但对于非气象专业却又必须使用此类数据的萌新来讲,也许会有些许用处。大神勿喷】
数据下载之后,需要对数据内容进行分析。因此,首先需要进行数据的读取。此处使用Python即可实现。具体步骤如下:

1.准备工作
[size=13.3333px](1)安装Python(这个网站很详细:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316090478912dab2a3a9e8f4ed49d28854b292f85bb000
(2)下载wgrib(用于读取grib1数据)、wgrib2(用于读取grib2数据)工具及相应.dll文件
(3)测试是否安装成功:“WIN+R”运行“cmd”进入wgrib2.所在文件位置(通过cd依次进入各级文件夹)并输入wgrib2.exe,出现如下信息即表示安装成功,可以运行。见图(wgrib成功提示)
本人是通过@edwardli 提供的附件运行成功的,在此表示感谢!!
(原贴:http://bbs.06climate.com/forum.php?mod=viewthread&tid=41017
2.数据读取
(1)安装Python及grib成功后,运行Python并输入“import os”进入os模块
(2)进入数据文件所在位置,如“os.chdir("E:\Software\wgrib2")”
(3)查看数据结构及内容:输入“os.system(r"wgrib2.exe D:\data.grib2 -v)”(此处,D:\为数据文件存储位置,为输入简化,此处把文件名改为“data”)
该数据文件所包含的所有数据内容均显示出来
(4)查看自己所需数据类型,并进行提取
如本人需要10mb 风U分量,即“UGRD 10mb”,可输入:os.system("wgrib2.exe D:\data.grib2 -match ':UGRD:10 mb' -csv UGRD10mb.csv"),即可将所需数据转成.csv数据格式并储存,结果见图(数据提取成功)
提取成功!
3.数据批量处理
有时需要多个气压高度的多种数据,需要批量提取。
本人通过Python.py文件实现了对单个数据多种变量的提取,如下:
import os
os.chdir("E:\Software\wgrib2")
os.system(r"wgrib2.exe D:\data.grib2 -v")
os.system("wgrib2.exe D:\data.grib2 -match ':UGRD:10 mb' -csv UGRD10mb.csv")
os.system("wgrib2.exe D:\data.grib2 -match ':VGRD:10 mb' -csv VGRD10mb.csv")
os.system("wgrib2.exe D:\data.grib2 -match ':HGT:10 mb' -csv HGT10mb.csv")
通过编写.py文件,复制多条命令即可实现。
.py文件可以用文本编辑器进行编辑(详见https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316399410395f704750ee9440228135925a6ca1dad8000)
在cmd中进入.py文件所在目录(如cd E:\ncep_matlab),输入“Python 文件名.py”即可运行该文件。
4.数据提取
通过以上提取的数据,保存为多个.csv文件,且每个csv文件中,只有部分数据是我们需要的,如本人仅需要“气压高度”、“经度”、“纬度”、“变量数据”四列。此处需用Matlab实现对批量数据的多变量提取。
具体代码如下:
D = dir('E:\NCEP_matlab\HGT');%进入数据所在目录
D=struct2cell(D);%结构体转细胞数组
aq=[];
aq1=[];
for i=3:length(D)
    disp(strcat('now display....the...',num2str(i),'...step'));
    [data,text]=xlsread(strcat('E:\NCEP_matlab\HGT\',char(D(1,i))));
    data1=data((data(:,1)>=98&data(:,1)<=103&data(:,2)<=40&data(:,2)>=37),1:3);%提取特定经纬度范围及变量列
    text1=text((data(:,1)>=98&data(:,1)<=103&data(:,2)<=40&data(:,2)>=37),4);%提取气压高度列
    aq=[aq;data1];
    aq1=[aq1;text1];
end
xlswrite('E:\NCEP_matlab\HGT\result',aq,'B:D');%生成excel
xlswrite('E:\NCEP_matlab\HGT\result',aq1,'A:A');

OK!成功,结果如图(Matlab提取成功)

成功提取每个数据文件中特定经纬度范围内的变量数据。

最后,感谢气象家园论坛对我的帮助!!
【附件中是利用Python提取数据变量的.py文件和批量提取变量的.m文件,有需要的可以下载哦,初次发帖,就不需要贡献了】


2018-09-19_093037.jpg

数据提取成功

数据提取成功

Matlab提取成功

Matlab提取成功

matlab_grib2.m

526 Bytes, 下载次数: 38, 下载积分: 金钱 -5

批量提取.csv文件

test.py

2.05 KB, 下载次数: 45, 下载积分: 金钱 -5

Python提取数据

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-9-19 14:32:05 | 显示全部楼层
DDQZXB 发表于 2018-9-19 10:26
【补充】麻烦告知下,附件下载如何取消贡献值呢?

已取消贡献值
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2018-9-19 10:26:11 | 显示全部楼层
【补充】麻烦告知下,附件下载如何取消贡献值呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-10-18 17:01:24 | 显示全部楼层
可以,多谢。。。。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2019-8-9 16:49:17 | 显示全部楼层
楼主您好,想请教个问题。如何利用wgrib2把跟grib2文件转成NC您会吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-10-14 16:59:15 | 显示全部楼层
运行你的脚本之后,出现这样的情况 什么原因啊
微信截图_20191014165739.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表