- 积分
- 1322
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-12-8
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2012-10-23 20:07:46
|
显示全部楼层
本帖最后由 wbriver 于 2012-10-23 20:10 编辑
MeteoInfo 发表于 2012-10-23 17:07
可以用MapLayout的GetLegends()方法获得图例的列表,然后删除:
LayoutLegend legend = layersLegend1 ...
解决了,谢谢王老师!
还有三个小问题想请教下您:
(1)如何判断左边图层中是否含有“小流域面雨量”图层,如果有的话则执行:
LayerNode ld = layersLegend1.ActiveMapFrame.GetLayerNodeByName("小流域面雨量");
layersLegend1.ActiveMapFrame.RemoveLayer(ld);
进行图层删除,若没有该图层则不执行,不然会出错。。。。。
(2)直接读取Micaps4类格式的短临预报数据并显示,发现显示速度很慢(大概要1min),格点数
据为801×801的(0.01*0.01),能否提速?还有就是色标的刻度值如何只取2位,不显示这么多位数?代码如下:
- MICAPS4DataInfo aDataInfo = new MICAPS4DataInfo();
- aDataInfo.ReadDataInfo(openFileDialog.FileName);
- GridData rain = aDataInfo.GetGridData();
- //Create a legend scheme
- bool hasUndefData = false;
- Color[] colors = new Color[] { Color.FromArgb(255, 155, 255, 253), Color.FromArgb(255,
- 0, 205, 252), Color.FromArgb(255, 0, 153, 255),Color.FromArgb(255, 0, 103, 255),
- Color.FromArgb(255, 47, 154, 0), Color.FromArgb(255, 38, 255, 0), Color.FromArgb(255,
- 255, 253, 0), Color.FromArgb(255, 255, 203, 3), Color.FromArgb(255, 255, 154, 0),
- Color.FromArgb(255, 255, 0, 0), Color.FromArgb(255,198,2,4), Color.FromArgb
- (255,157,0,0), Color.FromArgb(255,160,0,160), Color.FromArgb(255,213,0,217),
- Color.FromArgb(255,239,0,255), Color.FromArgb(255,254,203,255)};
- double[] cValues = LegendManage.CreateContourValuesInterval(rain.GetMinValue(),
- rain.GetMaxValue(), (rain.GetMaxValue() - rain.GetMinValue()) / 15);
- LegendScheme aLS = LegendManage.CreateGraduatedLegendScheme(cValues, colors,
- ShapeTypes.Polygon, rain.GetMinValue(), rain.GetMaxValue(), hasUndefData, -99999);
- //Create a contour layer
- VectorLayer aLayer = DrawMeteoData.CreateShadedLayer(rain, aLS, "Shaded_rain", null);
- //Add layer
- layersLegend1.ActiveMapFrame.AddLayer(aLayer);
- layersLegend1.ActiveMapFrame.MoveLayer(aLayer.Handle, 0);
- layersLegend1.Refresh();
复制代码
(3)如果rain数组中数据都为零时,则在设置LegendScheme来显示图层时会有问题:
double[] cValues = LegendManage.CreateContourValuesInterval(rain.GetMinValue(), rain.GetMaxValue(), (rain.GetMaxValue() - rain.GetMinValue()) / 15);
LegendScheme aLS = LegendManage.CreateGraduatedLegendScheme(cValues, colors, ShapeTypes.Polygon, rain.GetMinValue(), rain.GetMaxValue(), hasUndefData, -99999);
请教王老师遇到这种情况如何解决?提了这么多问题,呵呵,实在不好意思打扰您了,先谢谢啦! |
-
|