ArcGIS AO中控制图层中要素可见状态的总结
一、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();
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
//QI到FeatureSelection
IFeatureSelection 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 ();
IGeoFeatureLayer pGeoFl = pLayer as IGeoFeatureLayer ;
IFeatureIDSet pIdSet = new FeatureIDSetClass ();
pIdSet .Add ();
pIdSet .Add ();
pIdSet .Add ();
pGeoFl .ExclusionSet = pIdSet ;
该方法较为灵活,可以用于精确控制可见要素,缺点是无法保存到MXD 中,只能在程序运行时动态进行控制。
三、 唯一值符号法
该方法比较简单,就是通过给图层设置一个唯一值符号渲染,把不想显示的要素符号设置为空。虽然简单,这种方法有这很大的局限性,如果我们要控制某一个区域的要素可见状态,该方法无法实现。该方法只适用于按照作业属性控制要素的可见状态。
参考
ArcGIS AO中控制图层中要素可见状态的总结的更多相关文章
- AE控制图层中要素可见状态的几种方法
转自原文 AE控制图层中要素可见状态的几种方法 工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要 控制每一个作业员只能看到他负责的区域.作业员的可见区域控制有时候是按空间区域划分,有时候是 ...
- C#的winform中控制TextBox中只能输入数字
C#的winform中控制TextBox中只能输入数字 private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPr ...
- oracle 中控制文件中到底记录了哪些信息
oracle 控制文件中的信息 oracle 11g oracle 10g DATABASE ...
- 在ArcMap中发布FeatureLayer(要素图层)
FeatureLayer(要素图层)是ArcGIS Server发布的一种很重要的地图服务,发布后使用提供的url地址就可以在代码中调用并在地图上显示.编辑这个FeatureLayer.在HTML页面 ...
- ArcGIS Engine中如何获取Map中已经选择的要素呢(转)
ArcGIS Engine中如何获取Map中已经选择的要素呢 1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的Fe ...
- ArcGIS Engine中如何获取Map中已经选择的要素呢
1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的FeatureSelection可不是IFeatureSelectio ...
- (十二) WebGIS中矢量图层的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在前几章中我们已经了解了什么是矢量查询.屏幕坐标与地理坐标之 ...
- (八)WebGIS中栅格图层的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 前言 我们在上一章里了解到WebGIS中栅格图层的本质—— ...
- Arcgis engine 指定图层对要素进行创建、删除等操作
Arcgis engine 指定图层创建点要素 在指定的图层上创建一个点要素,点要素的位置是通过X,Y坐标指定的,下面是具体的注释 .其中 和IFeatureClassWrite接口有关的代码不要好像 ...
随机推荐
- Win7上安装Oracle数据库
由于ORACLE并没有FOR WIN7的版本,必须下载for vista_w2k8这个版本,将oralce 10G的安装镜像解压到硬盘,然后修改安装目录下的rehost.xml和oraparam.in ...
- SpringBoot-redis-session
配置pom <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin ...
- CDH搭建Hadoop分布式服务器集群(java新手小白)
1首先对于一个java还白的小白,先理解CDH与Hadoop的关系 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop ...
- Android集成微信分享功能应用签名生成方法及分享不生效的问题
通过友盟sdk集成微博.微信.qq等分享功能时,微博和qq很顺利,但在做微信集成时一直不成功.主要问题还是之前在微信开放平台申请创建移动应用时,对应用签名没有填写对,走了很多弯路现总结出来,加深记忆避 ...
- MySql 1248 - Every derived table must have its own alias
执行一个sql语句,报错:1248 - Every derived table must have its own alias 提示说每一个衍生出来的表,必须要有自己的别名 执行子查询的时候,外层查询 ...
- 分布式缓存系统Memcached[分享]
个人网站:http://www.51pansou.com memcached视频下载:memcached视频教程 memcached源码下载:memcached源码 Memcached是什么? Mem ...
- Handling unhandled exceptions and signals
there are two ways to catch otherwise uncaught conditions that will lead to a crash: Use the functio ...
- iptables详解(1):iptables概念
所属分类:IPtables Linux基础 基础知识 常用命令 这篇文章会尽量以通俗易懂的方式描述iptables的相关概念,请耐心的读完它. 防火墙相关概念 此处先描述一些相关概念. 从逻辑上 ...
- 低版本ie兼容问题的解决方案
CSS hack \9 所有的IE10及之前 * IE7以及IE7以下版本的 _ IE6以及IE6以下版本的 !important 提升样式优先级权重 1.ie6,7 ...
- oracle的分号、斜杠和commit
;分号表示一个语句的结束 //表示执行前面的一个代码块,例如begin/end,代码块后面必须跟/才能执行. commitcommit表示提交一个事务,例如insert,delete,update等, ...