爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3636|回复: 3

色斑图 掩膜不起作用求助??

[复制链接]

新浪微博达人勋

发表于 2013-9-10 16:59:48 | 显示全部楼层 |阅读模式

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

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

x
大家好,我在做二次开发时候 做了色斑图后 用该地区的掩膜图层(直接用arcmap工具 处理出来的该地区的面图层) 但是淹膜不起作用
代码如下:
StationData stationData = openinfo.GetStationData("值"); ;
          //GridDataPara aGDP = new GridDataPara();
          MeteoInfoC.Data.MeteoData.GridDataSetting aGDP = new GridDataSetting();
          //  aGDP.DataExtent
          aGDP.DataExtent.minX = 100;
          aGDP.DataExtent.maxX = 120;
          aGDP.DataExtent.minY = 10;
          aGDP.DataExtent.maxY = 40;
          aGDP.XNum = 10;
          aGDP.YNum = 10;
          //  MeteoInfoC.Data.MeteoData.InterpolationSetting ttt = new GRIBParameterTable();
          MeteoInfoC.Data.MeteoData.InterpolationSetting gridInterp = new InterpolationSetting();
          gridInterp.GridDataSet = aGDP;
          //  gridInterp.GridDataParaV = aGDP;
          gridInterp.InterpolationMethod = MeteoInfoC.Data.MeteoData.InterpolationMethods.IDW_Radius;
          // gridInterp.GridInterMethodV = GridInterMethod.Cressman;
          gridInterp.Radius = 2;//搜索半径
          gridInterp.MinPointNum = 2;
          double[] X = new double[1];
          double[] Y = new double[1];
          // ContourDraw.CreateGridXY(gridInterp.GridDataParaV, ref X, ref Y);
          ContourDraw.CreateGridXY(gridInterp.GridDataSet, ref X, ref Y);
          double[,] S = stationData.Data;
          // S = ContourDraw.FilterDiscreteData_Radius(S, gridInterp.Radius,
          // gridInterp.GridDataParaV.dataExtent, stationData.UNDEF);
          S = ContourDraw.FilterDiscreteData_Radius(S, gridInterp.Radius,
            gridInterp.GridDataSet.DataExtent, stationData.MissingValue);
          GridData gridData = ContourDraw.InterpolateDiscreteData_Radius(S,
              X, Y, gridInterp.MinPointNum, gridInterp.Radius, stationData.MissingValue);

          LegendScheme aLS2 = new LegendScheme(ShapeTypes.Polygon);
     
          aLS2.ImportFromXMLFile(Application.StartupPath + @"\lgs\" + lgs);
          //Create layer
          VectorLayer aLayer2 = new VectorLayer(ShapeTypes.Polygon);
          aLayer2 = DrawMeteoData.CreateShadedLayer(gridData, aLS2, shpname, shpfieldnme);

          aLayer2.IsMaskout = true;


          //Add layer
          layersLegend1.ActiveMapFrame.AddLayer(aLayer2);
          layersLegend1.ActiveMapFrame.MoveLayer(aLayer2.Handle, 1);
          layersLegend1.Refresh();
          //图例
          LayoutLegend aLegend;
          if (mapLayout1.GetLegends().Count > 0)
              aLegend = mapLayout1.GetLegends()[1];
          else
              aLegend = mapLayout1.AddLegend(550, 250);
          aLegend.LegendStyle = LegendStyles.Normal;
          aLegend.LegendLayer = aLayer2;
          if (tabControl2.SelectedIndex == 5)
              mapLayout1.PaintGraphics();
          //设置掩模
          //设置掩膜
          layersLegend1.ActiveMapFrame.MapView.MaskOut.SetMaskLayer = true;
          layersLegend1.ActiveMapFrame.MapView.MaskOut.MaskLayer = Application.StartupPath + @"\map\dazhoumask.shp";
          layersLegend1.ActiveMapFrame.MapView.PaintLayers();
          layersLegend1.Refresh();
QQ图片20130910165821.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-10 17:16:14 | 显示全部楼层
掩膜shape文件要先加载到软件中成为一个图层,然后再使用。参考此帖:MeteoInfo二次开发教程(九)
http://bbs.06climate.com/forum.p ... 024&fromuid=106
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-11 08:07:02 | 显示全部楼层

老师 我的代码里面有 这段假如图层的代码
//设置掩膜
          layersLegend1.ActiveMapFrame.MapView.MaskOut.SetMaskLayer = true;
          layersLegend1.ActiveMapFrame.MapView.MaskOut.MaskLayer = Application.StartupPath + @"\map\dazhoumask.shp";
          layersLegend1.ActiveMapFrame.MapView.PaintLayers();

但还是不行 求解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-11 09:00:40 | 显示全部楼层
sskkyy2008 发表于 2013-9-11 08:07
老师 我的代码里面有 这段假如图层的代码
//设置掩膜
          layersLegend1.ActiveMapFrame.MapVie ...

MapLayer maskLayer = MapDataManage.OpenLayer(Application.StartupPath + @"\map\dazhoumask.shp");
layersLegend1.ActiveMapFrame.MapView.MaskOut.MaskLayer = maskLayer.LayerName;
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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