爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6189|回复: 10

绘制雨量色斑图的问题~急

[复制链接]

新浪微博达人勋

发表于 2015-4-24 14:56:07 | 显示全部楼层 |阅读模式

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

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

x
台站号和雨量数据都在数据库内
例如:

台站名  坐标X    坐标Y   雨量
Q6162  112.02  31.3     0.3
.......
.......

怎样把雨量图信息绘制到地图上

老师的demo我也参考了,demo中好像是直接读取的文转换的,没看明白

这种效果怎么实现

2013042308-2013042408.JPG


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

新浪微博达人勋

发表于 2015-4-24 15:34:45 | 显示全部楼层
这个需要你自己研究,无非是把从文件读数据改为从数据库读数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-24 15:46:34 | 显示全部楼层
//加载图层
VectorLayer Layer = new VectorLayer(ShapeTypes.Polygon);
Layer = (VectorLayer)MapDataManage.OpenLayer(Application.StartupPath + @"\map\mapin.shp");

//获取数据
StationData stationData = new StationData();
stationData.Data = new double[3, 1];
//模拟一个站的数据
stationData.Data[0, 0] = 112.02805555556;
stationData.Data[1, 0] = 31.389722222222;
stationData.Data[2, 0] = 1.3;


//设置插值格点数据
GridDataSetting aGDP = new GridDataSetting();
Extent ex = new Extent();
ex.minX = 30;
ex.minY = 30;
ex.maxX = 150;
ex.maxY = 150;
aGDP.DataExtent = ex;      //加入插值范围
aGDP.YNum = 100;           //格点点数
aGDP.XNum = 100;           //格点点数


//插值方法
InterpolationSetting agrid = new InterpolationSetting();
agrid.GridDataSet = aGDP;
agrid.InterpolationMethod = InterpolationMethods.IDW_Radius;
agrid.Radius = 2;
agrid.MinPointNum = 1;

           
double[] X = new double[1];
double[] Y = new double[1];
ContourDraw.CreateGridXY(aGDP, ref X, ref Y);
double[,] S = stationData.Data;
S = ContourDraw.FilterDiscreteData_Radius(S, agrid.Radius, agrid.GridDataSet.DataExtent, stationData.UNDEF);
GridData grid = ContourDraw.InterpolateDiscreteData_Radius(S, X, Y, agrid.MinPointNum, agrid.Radius, stationData.UNDEF);
bool hasNoData = true;
LegendScheme lgd = LegendManage.CreateLegendSchemeFromGridData(grid, LegendType.GraduatedColor, ShapeTypes.Polygon, ref hasNoData);
ouble min = grid.GetMinValue();
double max = grid.GetMaxValue();
lgd.ImportFromXMLFile(Application.StartupPath + @"\map\rain.lgs");
gd.MaxValue = max;
lgd.MinValue = min;


VectorLayer lineLayer = new VectorLayer(ShapeTypes.Polygon);
lineLayer = DrawMeteoData.CreateShadedLayer(grid, lgd, "图例(毫米)", "LGD");
lineLayer.Visible = true;
ineLayer.IsMaskout = true;

加入图层
layersLegend1.ActiveMapFrame.AddLayer(lineLayer);
layersLegend1.ActiveMapFrame.AddLayer(Layer);




这是是参考论坛的帖子做的,但是不行,请老师指点一下,哪里有问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-24 16:18:29 | 显示全部楼层
41756620 发表于 2015-4-24 15:46
//加载图层
VectorLayer Layer = new VectorLayer(ShapeTypes.Polygon);
Layer = (VectorLayer)MapDataMa ...

哪里不行?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-24 16:23:15 | 显示全部楼层
未命名.JPG

程序之后效果就是这样的,是哪里不对?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-24 16:28:10 | 显示全部楼层
41756620 发表于 2015-4-24 16:23
程序之后效果就是这样的,是哪里不对?

只有一个站点的数据插值成格点当然不行了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-24 16:32:06 | 显示全部楼层
我现在的程序要求的功能是这样的,先加载一个地图的底图,然后从数据库读取台站降水列表叠加到图层上
假设目前只设置了一个台站和降水数据的监测,这样的话,没有办法表现到地图上嘛?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-24 16:37:55 | 显示全部楼层
41756620 发表于 2015-4-24 15:46
//加载图层
VectorLayer Layer = new VectorLayer(ShapeTypes.Polygon);
Layer = (VectorLayer)MapDataMa ...

请问这是哪种开发语言实现的?需要导入哪些开发包?有没有完整的程序包共享,新人想学习一下,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-24 16:39:46 | 显示全部楼层
多个站点叠加我也试了,叠加出来的图是有问题的 未命名.JPG

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

新浪微博达人勋

发表于 2015-4-24 16:40:26 | 显示全部楼层
41756620 发表于 2015-4-24 16:32
我现在的程序要求的功能是这样的,先加载一个地图的底图,然后从数据库读取台站降水列表叠加到图层上
假设 ...

站点少的话就不要做插值了,直接表现为站点图即可
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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