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/)的更多相关文章

  1. 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  2. 利用爬虫爬取指定用户的CSDN博客文章转为md格式,目的是完成博客迁移博文到Hexo等静态博客

    文章目录 功能 爬取的方式: 设置生成的md文件命名规则: 设置md文件的头部信息 是否显示csdn中的锚点"文章目录"字样,以及下面具体的锚点 默认false(因为csdn中是集 ...

  3. 所有博客已经迁移到个人空间 blog.scjia.cc

    所有博客已经迁移到个人空间 blog.scjia.cc

  4. 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang

    博客搬家到CSDN:http://blog.csdn.net/yeweiouyang

  5. 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 ...

  6. 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程

    一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...

  7. 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!

    本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...

  8. Django 搭建简易博客

    新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...

  9. iOS的非常全的三方库,插件,大牛博客

    转自: http://www.cnblogs.com/zyjzyj/p/6015625.html github排名:https://github.com/trending, github搜索:http ...

随机推荐

  1. WPF学习笔记4——Layout之2

    下面简单介绍常见的面板. 一.Grid 1.Grid关于调整行列距离有三种方法:绝对大小,自动大小,比例大小.如下: <ColumnDefinition Width="100" ...

  2. Educational Codeforces Round 12 E. Beautiful Subarrays 预处理+二叉树优化

    链接:http://codeforces.com/contest/665/problem/E 题意:求规模为1e6数组中,连续子串xor值大于等于k值的子串数: 思路:xor为和模2的性质,所以先预处 ...

  3. esp8266的STM32驱动

    esp8266的STM32驱动,数据发送接收由DMA完成,释放CPU. 目前只能发送返回消息为成功或失败的AT命令,并判断是否成功,详见esp8266_cmd():其它返回消息不可预知的命令(如查看A ...

  4. ubuntu 设置显示器的亮度

    ubuntu电脑重新启动后,亮度都变成了最亮.似乎也没胡地方可以设置.只好通过写个脚本来做这个事了. # -*- coding: utf-8 -*- import dbus bus = dbus.Se ...

  5. android studio如何开启与禁用版本控制vcs

    1.开启

  6. Redhat 显示系统版本号和内核版本号

    1./etc/issue 和 /etc/redhat-release都是系统安装时默认的发行版本信息,通常安装好系统后文件内容不会发生变化.[root@rac1 mysql]# cat /etc/is ...

  7. SQL学习中(序)

    从校园中走出来已经两年多了,从最初的企业建站到现在的BPM流程开发,深深的感觉到自己底子很差,因此在园子里记录一下学过的知识,以此自勉. 废话到此结束,今天就先来看一下CREATE CHEMA 语句. ...

  8. unity脚本的基础语法

    基本的回调方法 Strat()方法:在游戏场景加载时被调用,在该方法内可以写一些游戏场景初始化之类的代码. update():在每一帧渲染之前被调用,大部分游戏代码在这里执行,除了物理部分的代码. F ...

  9. http://blog.csdn.net/itplus/article/details/10088625

    http://blog.csdn.net/itplus/article/details/10088625 DBSCAN

  10. dragsort拖动排序

    引入文件jQuery.jquery.dragsort-0.5.2.min.js html文件: css文件: ul { margin:0px; padding:0px; margin-left:20p ...