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);
GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)的更多相关文章
- 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 利用爬虫爬取指定用户的CSDN博客文章转为md格式,目的是完成博客迁移博文到Hexo等静态博客
文章目录 功能 爬取的方式: 设置生成的md文件命名规则: 设置md文件的头部信息 是否显示csdn中的锚点"文章目录"字样,以及下面具体的锚点 默认false(因为csdn中是集 ...
- 所有博客已经迁移到个人空间 blog.scjia.cc
所有博客已经迁移到个人空间 blog.scjia.cc
- 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang
博客搬家到CSDN:http://blog.csdn.net/yeweiouyang
- Golang拼接字符串的5种方法及其效率_Chrispink-CSDN博客_golang 字符串拼接效率 https://blog.csdn.net/m0_37422289/article/details/103362740
Different ways to concatenate two strings in Golang - GeeksforGeeks https://www.geeksforgeeks.org/di ...
- 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程
一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...
- 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!
本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...
- Django 搭建简易博客
新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...
- iOS的非常全的三方库,插件,大牛博客
转自: http://www.cnblogs.com/zyjzyj/p/6015625.html github排名:https://github.com/trending, github搜索:http ...
随机推荐
- .NET基础之自定义泛型
在.NET中泛型使用非常频繁,在控制台应用程序中,默认的引入了System.Collection.Generics名称空间,其中就提供了我们经常使用的泛型:List<T>和Dictiona ...
- 自动化运维——一键安装MySQL
根据项目需要,前段时间在搞EMM系统各种安装包的自动化部署工作,主要包括一键安装和一键启动\停止功能.总结记录下来,以供后用. 本文主要是自动安装MySQL5.7.11版,Linux版脚本在CentO ...
- mysql 的 存储结构(储存引擎)
1 MyISAM:这种引擎是mysql最早提供的.这种引擎又可以分为静态MyISAM.动态MyISAM 和压缩MyISAM三种: 静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的, ...
- excle,aspose.cells 公式字段值取不到 xmls转xml
问题: 一,单元格如果是公式的,读出值为0 aspose.cells 4.4.0.5版本 由于太低,读xmls后缀的excel文件时,发现如果此列是公式算出来的,值是获取不到的.获取到的值一直是0 二 ...
- mac使用wget下载网站(仿站)
wget -c -r -np -k -L -p http://www.xxxx.com 参考 wget的安装 http://blog.csdn.net/ssihc0/article/details/7 ...
- csu 1305 Substring (后缀数组)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1305 1305: Substring Time Limit: 2 Sec Memory Limi ...
- FlushMode属性与transaction(spring注入的事务)
一.参见hibernate的api http://tool.oschina.net/apidocs/apidoc?api=hibernate-3.6.10 http://tool.oschina.ne ...
- js常识
btnDelAll.Attributes.Add("onclick", "<script lunguage='javascript'>return windo ...
- Java中堆、栈、常量池分析
栈用于存储局部变量,包括基本类型的变量(方法语句块内部定义的变量.方法中的形参).引用类型的变量,它们都是存储在各自的方法栈中,随着方法的执行完成而消失: 堆用于存储引用类型变量所指向的对象,包括普通 ...
- POJ3204+DInic+maxflow
Dinic+maxflow题意:找这样一种边的个数,就是增加该边的容量,可以使得最大流变大思路:求maxflow,再枚举流量为0的边,增加容量,看是否能找到增广路径. /* Dinic+maxflow ...