爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3194|回复: 4

请问:aDataInfo.OpenGRIBData(file)的数据存放形式?

[复制链接]

新浪微博达人勋

发表于 2017-5-6 13:15:38 | 显示全部楼层 |阅读模式

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

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

x
各位老师,情况如下:

一份Necp再分析资料,
纬度 -90 ~ 90
经度 0 ~359
Level 26层
T       1

目的:想导出数个变量在该时次的 25 ~ 35 、 115 ~ 125的数据,借助老师的GriBData函数可以观察到数据,只是由于不能指向层次如1000hPa,所以只能用瞎蒙的办法,用如aDataInfo.LevelIndex = 0;这样方法来指向高度层,结果终是不明其数据分布,希望能解学生疑惑?
22.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-6 13:18:05 | 显示全部楼层
代码如下:
       MeteoDataInfo aDataInfo = new MeteoDataInfo();
            string dir =  @"E:\MeteoInfo\MeteoInfoDemo\MyTry\dataSurfer\";
            string file = dir + @"\fnl_20140820_00_00_c";
            aDataInfo.OpenGRIBData(file);  

            List<Data> list;
            string datasFile;

            int levels = 26;
            int[] levelsFlag = new int[26] {1000,975,950,925,900,850,800,750,700,650,600,550,500,450,400,350,300,250,200,150,100,70, 50,30,20,10};

            for (int level = 0; level < levels; level++)
            {               
                aDataInfo.LevelIndex = level;
                GridData u = aDataInfo.GetGridData("ugrd@isobaric");          // u
                GridData v = aDataInfo.GetGridData("vgrd@isobaric");          // v               
                GridData h = aDataInfo.GetGridData("hgt@isobaric");           // hight
               
                double[,] us = u.Data;
                double[,] vs = v.Data;               
                double[,] hs = h.Data;

                list = new List<Data>();
                Data aData;
                datasFile = dir + "20140820_" + levelsFlag[level] + "hPa.xls";

                for (int i = 0; i < 181; i++)
                {
                    for (int j = 0; j < 360; j++)
                    {
                        // 想取25-35 115-125的数据,因为观其i的区间为0-180 ,所以在25和35的基础上加了一个90
                        if (i >= 115 && i <= 125 && j >= 115 && j <= 125)
                        {
                            aData = new Data();
                            aData.lon = j;
                            aData.lat = i - 90;
                            aData.hight = hs[i, j];
                            aData.u = us[i, j];
                            aData.v = vs[i, j];
                            list.Add(aData);
                        }
                    }
                }
                ToExcel(list, datasFile);
            }         
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-6 13:24:49 | 显示全部楼层
本帖最后由 xuzheyong 于 2017-5-6 13:26 编辑

但是得到的Excel的数据
如100hPa和1000hPa
可是观其位势高度和风速就发现不对
file:///D:/22.png
22.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-6 13:29:49 | 显示全部楼层
于是就用 grads2ascii 来导出txt ,我用的是旧的版本,也不清楚每一个数据的经纬度位置

'reinit'
'open E:/MeteoInfo/MeteoInfoDemo/MyTry/dataSurfer/fnl_20140820_00_00_c.ctl'
'set lat 25 35'
'set lon 115 125'
'set lev 1000'
'grads2ascii UGRDprs E:/MeteoInfo/MeteoInfoDemo/MyTry/dataSurfer/1000U.txt %g 11 1'
'reinit'
11.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-6 13:32:46 | 显示全部楼层
我想对照 excel 与 txt 文件

找出 1000hPa的U.txt的经纬度
同时 想知道由MeteoInfo的OpenGRIBData(file)函数所导出的数据 LevelIndex的规律
可是么有找到相同的数据?

无奈请老师解惑 谢谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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