- 积分
- 4184
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-27
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
![](static/image/common//ico_lz.png)
楼主 |
发表于 2012-2-22 21:17:13
|
显示全部楼层
完美解决:台站经纬度数据的风羽、台站实际数据填绘功能。谢谢斑竹,离我距离开发完整的系统又近了一步。
现贴出相应的代码,可以简单的修改后直接放在demo中使用,代码写的还是有点乱。
效果图如下:
- private void TSB_Csv_Click(object sender, EventArgs e)
- {
- //读取csv数据。以逗号分割。
- //csv每列的数据名称,见下:
- //Stid,Longitude,Latitude,位置,风向,风速,温度,台站名称,能见度
- LonLatStationDataInfo aDataInfo = new LonLatStationDataInfo();
- string aFile = Application.StartupPath + "\\Sample\\rain_2008072220.csv";
- aDataInfo.ReadDataInfo(aFile);
- //Create point layer 即绘制台站位置点信息。
- LegendScheme aLS = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point , Color.Black, 2);
- aLS.UNDEF = aDataInfo.UNDEF;
- VectorLayer aLayer = new VectorLayer(ShapeTypes.Point);
- aLayer = DrawMeteoData.CreateSTInfoLayer(aDataInfo.FieldList, aDataInfo.VarList, aDataInfo.DataList, aLS, "台站位置信息");
- G_LayerLegend.AddLayer(aLayer, true);
- //Set label,首先获得变量名,然后绘制标签数据数据。!!
- List<string> fieldNameList = aLayer.GetFieldNameList();
- aLayer.LabelSetV.FieldName = fieldNameList[7]; //台站名称存储位置
- aLayer.LabelSetV.AvoidCollision = true;
- aLayer.LabelSetV.LabelAlignType = MeteoInfoC.Legend.AlignType.Right;
- aLayer.LabelSetV.Offset = -2;
- aLayer.LabelSetV.LabelFont = new Font("宋体", 6);
- aLayer.LabelSetV.LabelColor = Color.Black;
- aLayer.LabelSetV.DrawShadow = false;
- aLayer.LabelSetV.ShadowColor = Color.Black;
- aLayer.LabelSetV.ColorByLegend = false;
- //Add labels
- aLayer.RemoveLabels();
- aLayer.AddLabels();
- this.mapView1.PaintLayers();
- //Create point layer 温度绘制
- LegendScheme aLS_Temp = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Black, 2);
- aLS_Temp.UNDEF = aDataInfo.UNDEF;
- VectorLayer aLayer_Temp = new VectorLayer(ShapeTypes.Point);
- aLayer_Temp = DrawMeteoData.CreateSTInfoLayer(aDataInfo.FieldList, aDataInfo.VarList, aDataInfo.DataList, aLS_Temp, "温度");
- G_LayerLegend.AddLayer(aLayer_Temp, true);
- //Set label,首先获得变量名,然后绘制标签数据数据。!!
- List<string> fieldNameList_Temp = aLayer_Temp.GetFieldNameList();
- aLayer_Temp.LabelSetV.FieldName = fieldNameList_Temp[6]; //温度变量存储位置
- aLayer_Temp.LabelSetV.AvoidCollision = true;
- aLayer_Temp.LabelSetV.LabelAlignType = MeteoInfoC.Legend.AlignType.Left;
- aLayer_Temp.LabelSetV.Offset =-2;
- aLayer_Temp.LabelSetV.LabelFont = new Font("宋体", 6);
- aLayer_Temp.LabelSetV.LabelColor = Color.Red;
- aLayer_Temp.LabelSetV.DrawShadow = false;
- aLayer_Temp.LabelSetV.ShadowColor = Color.Red;
- aLayer_Temp.LabelSetV.ColorByLegend = false;
- //Add labels
- aLayer_Temp.RemoveLabels();
- aLayer_Temp.AddLabels();
- this.mapView1.PaintLayers();
- //Create point layer 能见度绘制
- LegendScheme aLS_Vis = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Black, 2);
- aLS_Vis.UNDEF = aDataInfo.UNDEF;
- VectorLayer aLayer_Vis = new VectorLayer(ShapeTypes.Point);
- aLayer_Vis = DrawMeteoData.CreateSTInfoLayer(aDataInfo.FieldList, aDataInfo.VarList, aDataInfo.DataList, aLS_Vis, "能见度");
- G_LayerLegend.AddLayer(aLayer_Vis, true);
- //Set label,首先获得变量名,然后绘制标签数据数据。!!
- List<string> fieldNameList_Vis = aLayer_Vis.GetFieldNameList();
- aLayer_Vis.LabelSetV.FieldName = fieldNameList_Vis[8];//能见度存储位置
- aLayer_Vis.LabelSetV.AvoidCollision = true;
- aLayer_Vis.LabelSetV.LabelAlignType = MeteoInfoC.Legend.AlignType.Right;
- aLayer_Vis.LabelSetV.Offset = 8;
- aLayer_Vis.LabelSetV.LabelFont = new Font("宋体", 6);
- aLayer_Vis.LabelSetV.LabelColor = Color.Red;
- aLayer_Vis.LabelSetV.DrawShadow = false;
- aLayer_Vis.LabelSetV.ShadowColor = Color.Red;
- aLayer_Vis.LabelSetV.ColorByLegend = false;
- //Add labels
- aLayer_Vis.RemoveLabels();
- aLayer_Vis.AddLabels();
- this.mapView1.PaintLayers();
- //绘制风羽,利用GetstationData读取出风向风速,而后使用CreateSTBarbLayer绘制风羽图。
- StationData wind_Dir = aDataInfo.GetStationData(1); // 风向
- StationData wind_Spd = aDataInfo.GetStationData(2); // 风速
- //Generate legend scheme
- LegendScheme aLS_windBarb = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Blue, 10);
- //Create layer
- VectorLayer aLayer_windBarb = new VectorLayer(ShapeTypes.Point);
- aLayer = DrawMeteoData.CreateSTBarbLayer(wind_Dir.Data, wind_Spd.Data, wind_Dir.Data, aDataInfo.UNDEF,
- aLS_windBarb, false, "风羽");
- G_LayerLegend.AddLayer(aLayer, true);
- }
复制代码
|
|