GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...
1、wgrib的使用
在cmd命令行下键入wgrib后即可察看wgrib相关命令参数,简要介绍如下:
l Inventory/diagnostic–output selections 详细目录或诊断的输出选择
-s short inventory 简短目录
-v verbose inventory 详细目录
-V diagnostic output <not inventory> 诊断输出
<none> regular inventory 一般目录
例如:wgrib E:\GrADS\Data\grib2005071500 –v>a.txt
Options 相关选项
-PDS/-PDS10 print PDS in hex/decimal
十六进制或二进制绘制PDS图
-GDS/-GDS10 print GDS in hex/decimal
十六进制或二进制绘制GDS图
-verf print forecast verification time
-ncep_opn/-ncep_rean default T62 NCEP grib table
-4yr print year using 4 digits
l 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>
按输入流控制编码,一般转化Grib文件都要加
<none> no decoding
Options 相关选项
-text/-ieee/-grib/-bin conver to text/ieee/grib/bin
转化格式控制
-nh/-h output will have no headers/headers
是否包含标题头
-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
输出文件名
综合使用实例:
DOS命令行下:
>wgrib grib_file_name | find “:GAP:” | wgrib grib_file_name –i –nh –text –o temp
linux shell命令行下:
% wgrib grib_file_name | grep “:GAP:” | wgrib grib_file_name –i –nh –text –o temp
从Grib格式文件中选择GAP参数相关的数据生成名为temp的文本文件
2、 Grib文件目录说明
l wgrib –s生成目录:
1:0:d=05071500:HGT:1000 mb:anl:NAve=0
1) 记录号
2) 二进制位置
3) 时间
4) 参数名称
5) 层次值
6) analysis分析数据,也可能是fcst(forecast 预报数据)
7) 用于求平均的格点数
l wgrib –v 生成目录:
1:0:D=2005071500:HGT:1000 mb:kpds=7,100,1000:anl:"Geopotential height [gpm]
1) 记录号
2) 二进制位置
3) 时间
4) 参数名称
5) 层次值
6) kpds,第一个数字是Grib参数编号,比如PRES是1,TMP是11;第二个数字是层次类型(高度层或等压面层);第三个数字是层次值;
7) analysis分析数据,也可能是fcst(forecast 预报数据)
8) 该参数的解释及单位
l wgrib –V 生成目录:
rec 1:0:date 2005071500 HGT kpds5=7 kpds6=100 kpds7=1000 levels=(3,232) grid=3 1000 mb anl:
HGT=Geopotential height [gpm]
timerange 10 P1 0 P2 0 TimeU 1 nx 360 ny 181 GDS grid 0 num_in_ave 0 missing 0
center 7 subcenter 0 process 82 Table 2
latlon: lat 90.000000 to -90.000000 by 1.000000 nxny 65160
long 0.000000 to -1.000000 by 1.000000, (360 x 181) scan 0 mode 128 bdsgrid 1
min/max data -631 334 num bits 14 BDS_Ref -6310 DecScale 1 BinScale 0
这个综合几种两种目录显示目前只能看明白其中一部分……
l wgrib <none> 生成目录:
1:0:d=05071500:HGT:kpds5=7:kpds6=100:kpds7=1000:TR=10:P1=0:P2=0:TimeU=1:1000 mb:anl:NAve=0
1) 记录号
2) 二进制位置
3) 时间
4) 参数名称
5) Grib参数编号,比如PRES是1,TMP是11
6) 层次类型(高度层或等压面层)
7) 层次值
8) 时间范围
9) 时间1的时段
10) 时间2的时段
11) 预报时间单位
12) 层次值
13) analysis分析数据,也可能是fcst(forecast 预报数据)
14) 用于求平均的格点数
3、 利用C程序转化Grib格式文件与读取Grib文件
C# 实例(Web平台上)
/*调用Dos命令实现Grib文件到Text文件的转换*/
private void GribToText()
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true; //不创建窗口
process.Start();
string command = "wgrib E:\\Projects\\AtmosData\\grib2005071500 | find \":5WAVA:\" | wgrib E:\\Projects\\AtmosData\\grib2005071500 -i -nh -text -o E:\\Projects\\AtmosData\\temp";
process.StandardInput.WriteLine(command); //调用Dos命令
process.StandardInput.WriteLine("exit");
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
Response.Write(output); //将执行结果输出
}
/*将Text文件中的Grib数据读入临时数组*/
private void ReadTextData()
{
StreamReader GribText = new StreamReader("E:\\Projects\\AtmosData\\temp");
string[] aryReadResult = new string[65160]; //360*181个格点数据
float[] aryData = new float[65160];
for (int i = 0; i < 1000; i++)
{
aryReadResult[i] = GribText.ReadLine();
aryData[i] = Convert.ToSingle(aryReadResult[i]);
}
GribText.Close();
}
C++实例(控制台下)
/*调用DOS命令将Grib文件转化为临时文本文件*/
system("wgrib E:\\Projects\\AtmosData\\grib2005071500 | find \":5WAVA:\" | wgrib E:\\Projects\\AtmosData\\grib2005071500 -i -nh -text -o E:\\Projects\\AtmosData\\temp");
/*使用文件输入输出流将text文件读入数组中*/
FILE *fp;
long int i;
float wava[65160] ={0};
char *path ="E:\\Projects\\AtmosData\\temp";
if((fp=fopen(path,"r")) == NULL)
{
printf("Can not open file!");
exit(1);
}
for( i=0; i<GRIBNUMBER; i++)
{
fscanf_s(fp,"%f",&wava[i]);
}
for( i=0; i<GRIBNUMBER; i++)printf("%f ",wava[i]);
fclose(fp);
转载于:https://www.cnblogs.com/cumtb3S/p/3896859.html
GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...相关推荐
- JAVA生成grib文件,Grib格式转换心得【转载】
Grib格式转换心得 1.wgrib的使用 在cmd命令行下键入wgrib后即可察看wgrib相关命令参数,简要介绍如下: l Inventory/diagnostic–output selectio ...
- ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园
ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园 ASP.NET Hashtable输出JSON格式数据
- 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang
博客搬家到CSDN:http://blog.csdn.net/yeweiouyang 转载于:https://www.cnblogs.com/yewei/p/4012571.html
- 我的博客在网易上 http://wwbb-0991.blog.163.com/ qq:9387929
我的博客在网易上 http://wwbb-0991.blog.163.com/
- 当写博客成为一种习惯—CSDN Blog名列百强纪念
每周都在写blog,特别是在技术上一旦有了新的发现和心得,总是急于和网友一起分享,这几年以来近乎一种习惯.有时候心下会想,什么时候有机会写一下CSDN开博以来的纪念文章啊?没有想到在2008年开始上班 ...
- 2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
2019独角兽企业重金招聘Python工程师标准>>> http://vote.blog.csdn.net/item/blogstar/xyz_lmn 今天打开收件箱,发现自己很幸运 ...
- mysql 字符串转时间yymmdd_mysql 日期和时间格式转换实现语句 | 很文博客
对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: my ...
- 概要设计心得 kaki的博客
概要设计背景: 1.由于我们的上游C系统的解耦重构一系列优化, 使得我们B系统也要进行配合优化. 2.C 系统 采用的是EGL,COBOL 等语言编写,数据库使用DB2.本次C系统将部分功能 ...
- 关于百度旧博客http://hi.baidu.com/forverlin1204/blog
http://hi.baidu.com/forverlin1204/blog 便于各位访问
- 将csdn的博客爬取到本地并输出为jekyll可解析的markdown格式,同时保存博客的图片到本地
前言 在Github Pages搭建个人博客时利用 Jekyll 生成站点,Jekyll是一个静态站点生成器,可以根据Markdown文件自动生成静态的html文件.且Github Pages 支持托 ...
最新文章
- 加速OA系统实施的四大要素
- 《Hadoop与大数据挖掘》一2.3.5 动手实践:运行MapReduce任务
- python计算运动会某个参赛选手的得分。数据保存在文件中_Python基础教程之第二章---变量和字符串(1) 搬运...
- 基于curl的php多线程类(异步请求)
- 日志记录到字段变更_Wal日志解析工具开源: Walminer
- 057 Java中kafka的Producer程序实现
- 维修电工电气控制技能实训考核装置
- 阿里云服务器安全警告-异常网络连接-访问恶意域名
- 删除Directory Opus后从快捷方式无法转到文件夹
- PyQt5 关于消息盒子QMessageBox 不显示消息盒子且出现内存不足的问题
- 使用tftpd32烧写内核(拯救你的“砖”)
- bitbucket 代码备份
- 温度传感器的分类及比较
- 单链表的创建、删除、反转、插入、排序操作
- echarts实现中国地图的下钻和返回上一级
- 7的整除特征 三位一截_整除的特征、三位截断法的原理
- 每秒处理10万订单乐视集团支付架构读后感
- 【答学员问】- 该如何根据岗位学习相关技能
- 操作系统编程实践总结
- 学计算机买什么电脑性价比高,学生用什么笔记本电脑好 性价比高的学生笔记本电脑...
热门文章
- android 禁用和开启四大组件的方法(setComponentEnabledSetting )
- 动态包含与静态包含的区别
- const 和 非const函数重载
- IntelliJ IDEA 创建 maven 创建java web 项目
- mplayer-ww-37356 compile with mingw gcc 4.5.1 修复无法播放wmv
- 【转】android新建项目时 出现appcompat_v7工程错误和红色感叹号
- hihocoder 1043 完全背包
- 中文编码--中国程序员之”银弹“?
- php Output Control 深入理解 ob_flush 和 flush 的区别
- 二年级四则运算扩展,可以指定题目数量,并可支持真分数运算