博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcGIS AO中控制图层中要素可见状态的总结
阅读量:4623 次
发布时间:2019-06-09

本文共 2216 字,大约阅读时间需要 7 分钟。

 

一、DefinitionExpression

实现新建查询图层,查询结果要素为选中状态

该接口可以通过两种方法来控制要素的可见状态。

思路1

通过该接口的 DefinitionExpression 方法,可以给图层设置一个查询条件,只有符合该查询条件的图层才会显示。例如:我们只想显示图层中 Name 属性为 ’ 北京 ’ 的要素,那么代码如下:

ILayer pLayer = axMapControl1 .get_Layer (0);

IFeatureLayerDefinition pFlDefinition = pLayer as IFeatureLayerDefinition ;

pFlDefinition .DefinitionExpression = "Name = ' 北京'" ;

该方适使用于按照作业属性控制要素的可见状态。

思路2

通过 CreateSelectionLayer 方法,可以将当前图层中选中的要素生成一个新的图层,生成的新图层中只有原图层的选中要素是可见的。这种方法可以用于控制只显示某一空间范围内的要素。其缺点就是如果我们对在该空间范围内增加了要素之后,新增加的要素是不显示的。

该方适使用于按照作业空间范围控制要素的可见状态。

案例

新建IFeatureSelection接口,选中图层要素,利用IQueryFilter创建过滤器,设置查询条件,IFeatureLayerDefinition创建查询图层,最后添加到map中去

引用

using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using

ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using
ESRI.ArcGIS.SystemUI; using System; using System.IO;
usingSystem.Windows.Forms;

主要实现代码:

ILayer pLayer = (ILayer)axMapControl1.Map.get_Layer(0);IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;//QI到FeatureSelectionIFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;//创建过滤器IQueryFilter pQueryFilter = new QueryFilterClass();//设置过滤器对象的查询条件pQueryFilter.WhereClause = "FID > 20";//根据查询条件选择要素pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);IFeatureLayerDefinition pFDefinition = pFeatureLayer as IFeatureLayerDefinition;//创建新图层IFeatureLayer pNewFeatureLayer = pFDefinition.CreateSelectionLayer(pFeatureLayer.Name, false, null, null);//若为true,则未选中要素不显示pNewFeatureLayer.Name = "查询结果城市";axMapControl1.AddLayer(pNewFeatureLayer as ILayer);axMapControl1.ActiveView.Refresh();

 

 

二、IGeoFeatureLayer

通过 IGeoFeatureLayer 接口的 ExclusionSet 可以排除图层中的一些要素不可见。 ExclusionSet 属性通过 IFeatureIDSet 接口来控制要排除显示的要素,例如我们要控制 FID 为 2 、 5 、 8 的要素不显示。可以用如下代码实现:

ILayer pLayer = axMapControl1 .get_Layer (0);IGeoFeatureLayer pGeoFl = pLayer as IGeoFeatureLayer ;IFeatureIDSet pIdSet = new FeatureIDSetClass ();pIdSet .Add (2);pIdSet .Add (5);pIdSet .Add (8);pGeoFl .ExclusionSet = pIdSet ;

该方法较为灵活,可以用于精确控制可见要素,缺点是无法保存到MXD 中,只能在程序运行时动态进行控制。

 

三、 唯一值符号法

该方法比较简单,就是通过给图层设置一个唯一值符号渲染,把不想显示的要素符号设置为空。虽然简单,这种方法有这很大的局限性,如果我们要控制某一个区域的要素可见状态,该方法无法实现。该方法只适用于按照作业属性控制要素的可见状态。

 

 

 

参考

转载于:https://www.cnblogs.com/arxive/p/7569262.html

你可能感兴趣的文章
WEB测试重点--(转载)
查看>>
【C/C++开发】运算符重载二
查看>>
【linux开发】Linux下配置java环境 安装eclipse
查看>>
HTTP入门
查看>>
Android缓存
查看>>
条件语句,while循环语句:完整的温度转换程序
查看>>
9patch图的尺寸尽量为偶数
查看>>
python常用模块之random
查看>>
Android种 adb是什么(转)
查看>>
【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据
查看>>
文献综述随笔(十七)
查看>>
JavaScript声音播放
查看>>
13个JavaScript图表(JS图表)图形绘制插件
查看>>
Bootstrap 辅助类
查看>>
各系统勒索补丁下载地址
查看>>
Multithreading For Performance
查看>>
解析新浪微博的登录过程
查看>>
最后N个元素 类问题的解题思想探究
查看>>
HTML5入门
查看>>
kali 软件源 包含virtualbox所需头文件
查看>>