该文章来自博客:http://windforestwing.blog.163.c ... 412007103084743804/如有错误 ,大家及时指出啊!ps:meteoinfo可以直接处理grib数据
===========================

grib格式转换心得

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 = GribText.ReadLine();

            aryData = Convert.ToSingle(aryReadResult);

        }

        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);

     }

     for( i=0; i<GRIBNUMBER; i++)printf("%f ",wava);

     fclose(fp);

wgrib读grib数据的更多相关文章

  1. Windows下Python读取GRIB数据

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

  2. Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)

    1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink的核心是转化为流进行计算.Flink三个核心:Source,Transforma ...

  3. Qt 实时读串口数据,并将读到的数据从网口发送出去

    需求: 1. 要试试从串口读取数据 2. 将读到的数据从网口发送出去 3.开机启动 4. 没有界面 第一部分 配置Qt Pro文件  需要Qt += serialport network 第二部分 - ...

  4. 读<<大数据时代>>的一些感想

    第一次听说<<大数据时代>>这本书,是在网上看到的央视搞的一个2013中国好书评选活动推荐的25本“中国好书”的榜单中看到的.然后迅速上豆瓣上查看了一下对该书的评价,一看非常高 ...

  5. jxl读数据库数据生成xls 并下载

    1.所需jar jxl-2.6.10.jar jxls-core-1.0-RC-3.jar jxls-reader-1.0-RC-3.jar 2. excel修改行宽度封装 SheetColumn.j ...

  6. WinRT知识积累1之读xml数据

    前述:这个知识是在Windows8.1或WP8.1中运用Linq to xml获取一个xml文件里的数据.(网上也很多类似的知识,可以借鉴参考) 平台:windows8.1 metro 或者WP8.1 ...

  7. 往Android SDCard中读写入数据

    一.用Environment (写) 1.API获取sdcard的路径 File path=Environment.getExternalStorageDirectory(); path=new Fi ...

  8. A站有一个页面需要PV统计 A站读写该数据 B站读该数据 需要数据同步

    A站弄个缓存,并且开放出一个读取借口给B站 B站读取数据的时候,调用该接口和数据库内的数据累加,然后进行限时即可 ---------------------- 另外其他方法 session服务.mem ...

  9. matlab读xls数据

    [ndata,label,abalone]=xlsread('data.xls') ndata:表示数字属性 label:表示类别属性 abalone:全部数据

随机推荐

  1. GTX的生成(包括COMMON)

    GTX的生成(包括COMMON) 1.每一个GTX Quad需要一个GTX common,同时GTX common只包含有QPLL,不包含CPLL. 2.kintex-7设备只支持GTX 3.参考时钟 ...

  2. 分布式超级账本Hyperledger为什么选择使用kafka引擎实现共识方案

    使用kafka集群配置的原因也很简单,为orderer共识及排序服务提供足够的容错空间,当我们向peer节点提交Transaction的时候,peer节点会得到或返回(基于SDK)一个读写集结果,该结 ...

  3. [转] nginx配置优化+负载均衡+动静分离(附带参数解析)

    #指定nginx进程运行用户以及用户组user www www;#nginx要开启的进程数为8worker_processes  8;#全局错误日志文件#debug输出日志最为详细,而crit输出日志 ...

  4. python show slave status

    #!/usr/bin/env python import MySQLdbimport contextlib @contextlib.contextmanagerdef mysql(Host,Port, ...

  5. .net(C#)常见面试题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...

  6. js控制html5 【video】标签中视频的播放和停止

    需求:页面中有2个普通按钮a,b.还有一个video标签,能成功播放出视频..我想要的效果是,点击a按钮,视频开始播放,点击b按钮,视频播放停止!!!<br><br>----- ...

  7. PI Square中文论坛: PI SDK 开发中级篇| PI Square

    注: 为了更好的利用站内资源营造一个更好的中文开发资源空间,本文为转发修正帖,原作者为OSIsoft技术工程师王曦(Xi Wang),原帖地址:PI SDK 中级篇 来源:https://d.gg36 ...

  8. InfluxDB学习之InfluxDB的基本操作| Linux大学

    来源地址:https://www.linuxdaxue.com/influxdb-study-series-manual.html 本文属于<InfluxDB系列教程>文章系列,该系列共包 ...

  9. C#中数据库事务、存储过程基本用法

    SQL 事务 public bool UpdateQsRegisterSql(List<string> ids, int newQueueId, string newQueueName) ...

  10. webservice的model层命名空间不同的问题

        [XmlType(Namespace = "http://tempuri.org/MyClass4")]     [XmlRoot(Namespace = "ht ...