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

本文共 2166 字,大约阅读时间需要 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 中,只能在程序运行时动态进行控制。

 

三、 唯一值符号法

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

 

 

 

参考

转载地址:http://sqmpl.baihongyu.com/

你可能感兴趣的文章
Android 小项目之--Mini音乐播放器【简单版】(附源码)
查看>>
Delphi判断文件是否正在被使用
查看>>
TaskAsyncHelper
查看>>
知之为知之,不知为不知。
查看>>
设计模式6大原则
查看>>
C# WinForm 文件上传下载
查看>>
[转载]日历设计之重复事件规则设计
查看>>
HTTP协议详解(真的很经典)
查看>>
(转)什么是云计算
查看>>
Linux性能监控命令——sar
查看>>
使用Asp.net mvc + Linq + mvc_scaffold_gen_setup.exe 生成一个完整的家庭帐册大管家程序 之二...
查看>>
视差滚动(Parallax Scrolling)效果的原理和实现
查看>>
咏南中间件支持DELPHI低版本开发的两层程序平稳升级到三层
查看>>
带监督的文本分类算法FastText
查看>>
新书推荐:细说PHP(含样章试读)
查看>>
《黑客防线》2010合订本(下半年)
查看>>
intel I7平台Win7 x64 下wpf、silverlight 与aero特效动画缓慢故障排除一则
查看>>
shell常识总结
查看>>
内存池版本1--单线程-固定大小专为某类设计的内存池
查看>>
大道至简,职场上做人做事做管理
查看>>