爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 19867|回复: 52

MeteoInfo二次开发教程(九)

[复制链接]

新浪微博达人勋

发表于 2012-9-17 22:01:37 | 显示全部楼层 |阅读模式

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

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

x
先简单讲讲mask out,所谓Mask out就是屏蔽某些区域之外的图形。MapView有个MaskOut属性,可以设置SetMaskOut和MaskLayer(必须是Polygon图层,不要太复杂)。
  1. private void TSMI_Maskout_Click(object sender, EventArgs e)
  2.         {
  3.             layersLegend1.ActiveMapFrame.MapView.MaskOut.SetMaskLayer = true;
  4.             layersLegend1.ActiveMapFrame.MapView.MaskOut.MaskLayer = "china.shp";
  5.             layersLegend1.ActiveMapFrame.MapView.PaintLayers();
  6.         }
复制代码

Mask out之前:
Image00912.png

Mask out之后:
Image00913.png

再讲讲创建点图层。创建一个VectorLayer图层需要给图层对象增加属性字段,并添加相应的Shape对象及属性值。详见下面的示例程序:
  1. private void TSMI_CreatePointLayer_Click(object sender, EventArgs e)
  2.         {
  3.             //New layer
  4.             VectorLayer aLayer = new VectorLayer(ShapeTypes.Point);
  5.             aLayer.LayerName = "New_Point_Layer";
  6.             aLayer.LegendScheme = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Black, 10);
  7.             //aLayer.LegendScheme.breakList[0].Color = Color.Blue;
  8.             aLayer.Visible = true;

  9.             //Add fields            
  10.             aLayer.EditAddField("STATION", typeof(string));
  11.             aLayer.EditAddField("LON", typeof(double));
  12.             aLayer.EditAddField("LAT", typeof(double));
  13.             aLayer.EditAddField("DATA", typeof(double));

  14.             //Prepare coordinate data
  15.             double[] X = new double[2] { 120.0, 110.0 };
  16.             double[] Y = new double[2] { 42.0, 35.0 };
  17.             double[] data = new double[2] { 100.0, 80.0 };

  18.             //Add shape
  19.             for (int i = 0; i < 2; i++)
  20.             {
  21.                 PointShape aPS = new PointShape();
  22.                 PointD aPoint = new PointD();
  23.                 aPoint.X = X[i];
  24.                 aPoint.Y = Y[i];
  25.                 aPS.Point = aPoint;
  26.                 int shapeNum = aLayer.ShapeNum;
  27.                 if (aLayer.EditInsertShape(aPS, shapeNum))
  28.                 {
  29.                     //Edit record value
  30.                     aLayer.EditCellValue("STATION", shapeNum, "St1");
  31.                     aLayer.EditCellValue("LON", shapeNum, aPoint.X);
  32.                     aLayer.EditCellValue("LAT", shapeNum, aPoint.Y);
  33.                     aLayer.EditCellValue("DATA", shapeNum, data[i]);
  34.                 }
  35.             }

  36.             //Add Label
  37.             aLayer.LabelSet.FieldName = "DATA";
  38.             aLayer.LabelSet.LabelFont = new Font("Arial", 15);
  39.             aLayer.LabelSet.YOffset = 30;
  40.             aLayer.AddLabels();

  41.             //Add layer
  42.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);
  43.             layersLegend1.ActiveMapFrame.MapView.PaintLayers();
  44.             layersLegend1.Refresh();
  45.         }
复制代码

效果如下:
Image00914.png

本帖被以下淘专辑推荐:

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

新浪微博达人勋

发表于 2012-9-18 20:22:45 | 显示全部楼层
好文章,抢个沙发,继续学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-18 21:24:36 | 显示全部楼层
学习了,谢谢王老师的讲解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-18 22:15:36 | 显示全部楼层
Good!学习学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-27 10:43:25 | 显示全部楼层
{:eb325:}学习学习!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-19 18:24:16 | 显示全部楼层
本帖最后由 luckycomcn 于 2012-11-19 18:24 编辑

交作业,MeteoInfo太好用了
20121119182331.png
20121119181709.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-21 14:46:51 | 显示全部楼层
又有新课程了,太好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-29 16:24:25 | 显示全部楼层
纠结中。。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-3 19:57:15 | 显示全部楼层
本帖最后由 alexmitsui 于 2013-5-3 20:12 编辑

请问一下,我用哪个方法将micaps的 diamond 4类的数据格式读进去合适?我想用meteoInfo画个diamond4类数据格式的等值线。

我好像看到这个帖子里已经有解答了,呵,问题问的有些不好意思!
http://bbs.06climate.com/forum.php?mod=viewthread&tid=10887


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

新浪微博达人勋

发表于 2013-5-27 22:07:36 | 显示全部楼层
初来咋到,多多知道。看了例子不错~~
我想问问 创建点图层 里面可以定义点样式么?比如不是一个圆点,是个五角星或者其他图片什么的
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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