爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5254|回复: 9

请问有没有meteoinfo查询数据库然后绘制色斑图的demo?

[复制链接]

新浪微博达人勋

发表于 2014-5-5 16:33:46 | 显示全部楼层 |阅读模式

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

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

x
meteoinfo的示例程序多以读取csv文件或者文本文件,请问有没有读取数据库然后生成色斑图的显示的demo啊?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-5 17:06:30 | 显示全部楼层
简单的方式就是读取数据库中数据后写成要求csv文件格式数据,,然后就一样的了   另外一种方式就需要知道meteoinfo代码中数据的格式了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-6 13:59:14 | 显示全部楼层
读取数据库的数据之后存为csv文件然后用meteoinfo来读取文件生成色斑图,这种方式会导致程序运行不是很流畅,meteoinfo应该有直接读数据库数据生成色斑图之类的方法吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-6 15:14:45 | 显示全部楼层
julywolf 发表于 2014-5-6 13:59
读取数据库的数据之后存为csv文件然后用meteoinfo来读取文件生成色斑图,这种方式会导致程序运行不是很流畅 ...

肯定没有直接读数据库数据的方法噻 这得自己写了  
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-6 20:49:33 | 显示全部楼层
julywolf 发表于 2014-5-6 13:59
读取数据库的数据之后存为csv文件然后用meteoinfo来读取文件生成色斑图,这种方式会导致程序运行不是很流畅 ...

有没有测试过到底是哪一步慢。
如果是生成文件慢的话看看是不是查询数据库方式不合理。
如果是生成csv文件后绘图慢的话,看看是不是选用了合适的绘图方式。数据量比较大,绘制成矢量是会比较慢的。如果是网格数据,可以考虑绘制成Rasterlayer。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-15 21:38:43 | 显示全部楼层
我想meteoinfo能做类似于数据绑定的功能应该会更方便,作为只能读取各类气象的文本数据,这种方式是否有点落后于时代?毕竟现在现在做2次开发,有很多时候也需要直接做数据库查询,然后生成各种图形数据给预报员进行分析处理,而现在能做的只能是导出成micaps1类数据,然后用meteoinfo再进行调用,或者将查询出来的数据存入数组,再对数组进行绘图,不是说这种做法一定很慢,但是总觉得很别扭。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-15 23:00:52 | 显示全部楼层
julywolf 发表于 2014-5-15 21:38
我想meteoinfo能做类似于数据绑定的功能应该会更方便,作为只能读取各类气象的文本数据,这种方式是否有点 ...

不用写文本文件再读,那样肯定慢。直接从数据库中查询出数据生成相应的图层就可以了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-25 19:39:13 | 显示全部楼层
要怎么实现呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-13 16:39:47 | 显示全部楼层
不知道lz最后解决了没有,以下是自己钻研的结果,可以实现,但是不美观,希望对lz有用
private void TSMI_StationShaded_Click(object sender, EventArgs e)
        {
//            //connect database
            SqlConnection con = new SqlConnection(@"server=10.115.144.3;database=aws2014;uid=sa;pwd=qxt2713929");
            string cmd = @"select b.经度,b.纬度,a.区站号,a.RR from dbo.日降水 as a
inner join dbo.台站参数 as b
on a.区站号=b.区站号
where b.地市名='怀化' and a.观测时间='2014-06-02'";
            SqlDataAdapter sda = new SqlDataAdapter(cmd, con);
            DataTable dt = new DataTable();
            sda.Fill(dt);


            //
            this.Cursor = Cursors.WaitCursor; //就是鼠标样式变成了等待的样式
            //read data info
            MeteoDataInfo aDataInfo = new MeteoDataInfo();
            string aFile = Application.StartupPath + @"\Sample\rain1_2008072220.csv";
            aDataInfo.OpenLonLatData(aFile);
            ////Get station data
            //StationData stationData = aDataInfo.GetStationData("Precipitation6h");
            StationData stationData = new StationData();
            stationData.Data = new double[3, dt.Rows.Count];
             stationData.Stations=new List<string>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                stationData.Data[0, i] = Convert.ToDouble(dt.Rows[i][0]);
                stationData.Data[1, i] = Convert.ToDouble(dt.Rows[i][1]);
                stationData.Data[2, i] = Convert.ToDouble(dt.Rows[i][3]);
                stationData.Stations.Add(dt.Rows[i][2].ToString());
            }
            //Interpolate 插值
            GridDataSetting aGDP = new GridDataSetting();//老版本为GridDataPara
            aGDP.DataExtent.minX = 60;
            aGDP.DataExtent.maxX = 140;
            aGDP.DataExtent.minY = -20;
            aGDP.DataExtent.maxY = 60;
            aGDP.XNum = 180;
            aGDP.YNum = 180;
            //GridInterpolation类已修改为InterpolationSetting类
            InterpolationSetting interpS = new InterpolationSetting();
            interpS.GridDataSet = aGDP;   // original line:gridInterp.GridDataParaV = aGDP;

            interpS.InterpolationMethod = InterpolationMethods.IDW_Radius;//原语句为gridInterp.GridInterMethodV = GridInterMethod.IDW_Radius;
            interpS.Radius = 2;
            interpS.MinPointNum = 1;

            double[] X = new double[1];
            double[] Y = new double[1];
            ContourDraw.CreateGridXY(aGDP, ref X, ref Y);  //添加using MeteoInfoC.Drawing;
            double[,] S = stationData.Data;
            S = ContourDraw.FilterDiscreteData_Radius(S, interpS.Radius, interpS.GridDataSet.DataExtent, stationData.MissingValue);
            //original line: S = ContourDraw.FilterDiscreteData_Radius(S, gridInterp.Radius,gridInterp.GridDataParaV.dataExtent, stationData.UNDEF);
            GridData gridData = ContourDraw.InterpolateDiscreteData_Radius(S, X, Y, interpS.MinPointNum, interpS.Radius, stationData.MissingValue);

            //cteate legend scheme
            bool hasNoData = true;
            LegendScheme aLS = LegendManage.CreateLegendSchemeFromGridData(gridData, LegendType.GraduatedColor, ShapeTypes.Polygon, ref hasNoData);
            ((PolygonBreak)aLS.LegendBreaks[0]).DrawFill = false;
            //create layer
            VectorLayer aLayer = DrawMeteoData.CreateShadedLayer(gridData, aLS, "Rain", "Rain");
            aLayer.IsMaskout = true;//????????????????
            //add layer
            layersLegend1.ActiveMapFrame.AddLayer(aLayer);
            layersLegend1.ActiveMapFrame.MoveLayer(aLayer.Handle, 0);
            layersLegend1.Refresh();
            //change title
            LayoutGraphic title = mapLayout1.GetTexts()[0];
            title.SetLabelText("MeteoInfo Class Library Demo - Station data shaded layer");
            //add or change legend
            LayoutLegend aLegend;
            if (mapLayout1.GetLegends().Count > 0) aLegend = mapLayout1.GetLegends()[0];
            else aLegend = mapLayout1.AddLegend(650, 100);
            aLegend.LegendStyle = LegendStyles.Bar_Vertical;
            aLegend.LegendLayer = aLayer;
            if (tabControl1.SelectedIndex == 1)
            {
                mapLayout1.PaintGraphics();
            }
            this.Cursor = Cursors.Default;

        }

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-13 16:42:04 | 显示全部楼层
MeteoDataInfo aDataInfo = new MeteoDataInfo();
string aFile = Application.StartupPath + @"\Sample\rain1_2008072220.csv";
aDataInfo.OpenLonLatData(aFile);

这三句可以注释掉,以后的代码也没有用到
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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