爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: wbriver

能否利用MeteoInfo类库开发流域面雨量显示?

[复制链接]

新浪微博达人勋

发表于 2012-10-23 17:07:24 | 显示全部楼层

可以用MapLayout的GetLegends()方法获得图例的列表,然后删除:

LayoutLegend legend = layersLegend1.MapLayout.GetLegends()[0];
layersLegend1.MapLayout.RemoveElement(legend);
layersLegend1.MapLayout.PaintGraphics();
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 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位,不显示这么多位数?代码如下:
  1. MICAPS4DataInfo aDataInfo = new MICAPS4DataInfo();
  2. aDataInfo.ReadDataInfo(openFileDialog.FileName);
  3. GridData rain = aDataInfo.GetGridData();
  4. //Create a legend scheme
  5. bool hasUndefData = false;
  6. Color[] colors = new Color[] { Color.FromArgb(255, 155, 255, 253), Color.FromArgb(255,

  7. 0, 205, 252),  Color.FromArgb(255, 0, 153, 255),Color.FromArgb(255, 0, 103, 255),

  8. Color.FromArgb(255, 47, 154, 0), Color.FromArgb(255, 38, 255, 0), Color.FromArgb(255,

  9. 255, 253, 0), Color.FromArgb(255, 255, 203, 3), Color.FromArgb(255, 255, 154, 0),

  10. Color.FromArgb(255, 255, 0, 0), Color.FromArgb(255,198,2,4), Color.FromArgb

  11. (255,157,0,0), Color.FromArgb(255,160,0,160), Color.FromArgb(255,213,0,217),

  12. Color.FromArgb(255,239,0,255), Color.FromArgb(255,254,203,255)};
  13. double[] cValues = LegendManage.CreateContourValuesInterval(rain.GetMinValue(),

  14. rain.GetMaxValue(), (rain.GetMaxValue() - rain.GetMinValue()) / 15);
  15. LegendScheme aLS = LegendManage.CreateGraduatedLegendScheme(cValues, colors,

  16. ShapeTypes.Polygon, rain.GetMinValue(), rain.GetMaxValue(), hasUndefData, -99999);
  17. //Create a contour layer
  18. VectorLayer aLayer = DrawMeteoData.CreateShadedLayer(rain, aLS, "Shaded_rain", null);
  19. //Add layer
  20. layersLegend1.ActiveMapFrame.AddLayer(aLayer);
  21. layersLegend1.ActiveMapFrame.MoveLayer(aLayer.Handle, 0);
  22. 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);
请教王老师遇到这种情况如何解决?提了这么多问题,呵呵,实在不好意思打扰您了,先谢谢啦!
Micaps4.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 21:34:25 | 显示全部楼层
wbriver 发表于 2012-10-23 20:07
解决了,谢谢王老师!
还有三个小问题想请教下您:
(1)如何判断左边图层中是否含有“小流域面雨量” ...

1、判断ld是否为Null
2、用Raster图层
3、数据都为0就不要做图了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-23 22:31:48 | 显示全部楼层
MeteoInfo 发表于 2012-10-23 21:34
1、判断ld是否为Null
2、用Raster图层
3、数据都为0就不要做图了

都搞定了~多谢王老师指点!虽然画面粗了点,但是速度明显快几十倍!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 22:49:14 | 显示全部楼层
wbriver 发表于 2012-10-23 22:31
都搞定了~多谢王老师指点!虽然画面粗了点,但是速度明显快几十倍!

敢问兄台是咋个提速的呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 22:56:06 | 显示全部楼层
本帖最后由 MeteoInfo 于 2012-10-23 22:56 编辑
♂雨已~○ 发表于 2012-10-23 22:49
敢问兄台是咋个提速的呢?

当格点数据的格点数很多且变化复杂的情况下,追踪等值线并填充会花费较长的时间,生成的VectorLayer图层中图元过多也会导致渲染速度较慢。用RasterLayer会快很多,因为不需要等值线追踪,且图层是以Image显示,图层生成和渲染速度都会提高很多。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 22:57:07 | 显示全部楼层
♂雨已~○ 发表于 2012-10-23 22:49
敢问兄台是咋个提速的呢?

兄台是将雷达数据自己转换成的micaps第四类数据哇?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 23:00:15 | 显示全部楼层
MeteoInfo 发表于 2012-10-23 22:56
当格点数据的格点数很多且变化复杂的情况下,追踪等值线并填充会花费较长的时间,生成的VectorLayer图层中 ...

就是啊,有时候速度很慢,我现在遇到在裁剪图层的时候,速度也很慢,有没有办法使裁剪图层的速度变快呢?求王老师指导啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 23:05:39 | 显示全部楼层
wbriver 发表于 2012-10-23 22:31
都搞定了~多谢王老师指点!虽然画面粗了点,但是速度明显快几十倍!

可以设置RasterLayer的InterpMode属性来改变图像显示的粒度。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-23 23:07:18 | 显示全部楼层
♂雨已~○ 发表于 2012-10-23 23:00
就是啊,有时候速度很慢,我现在遇到在裁剪图层的时候,速度也很慢,有没有办法使裁剪图层的速度变快呢? ...

你说的裁剪指的是Clipping还是Maskout?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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