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接口有关的代码不要好像 ...
随机推荐
- 【转】MySQL常见的运算符及使用
转自:http://www.linuxidc.com/Linux/2016-03/129672.htm MySQL中有4类运算符,它们是: 算术运算符 比较运算符 逻辑运算符 位操作运算符 算术操作符 ...
- 揭开WebService的神秘面纱
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- js实现左右点击图片层叠滚动特效
需要加载js有 <script type="text/javascript" src="js/jquery-1.7.2.min.js"></s ...
- 02使用常规步骤编译NanoPiM1Plus的Android4.4.2
02使用常规步骤编译NanoPiM1Plus的Android4.4.2 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17:51 版本 ...
- 树莓派+百度api实现人脸识别
title: 树莓派+百度api实现人脸识别 tags: 树莓派 date: 2018-5-31 20:06:00 --- 树莓派对接百度api 我以前玩安卓的时候一直用的讯飞的平台和api,对于百度 ...
- angular6 NG-ZORRO 的使用
1:关于 NG-ZORRO中使用它自己组件改变样式时得使用样式穿透 “class” :: ng-deep "class"
- 联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
>>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...
- 【Python-2.7】换行符和制表符
在Python中换行符“\n”表示接下来的内容将会换到下一行显示,制表符“\t”表示下面的内容显示时在前面留出空白,如打印如下内容: Dear: I love you forever! 上面的一段话分 ...
- Spartan6系列之器件详细介绍、选型参考
1. 概述 Spartan6系列是一类低成本高容量的FPGA,采用45nm低功耗敷铜技术,能在功耗.性能.成本之间很好地平衡:Spartan6系列内部采用双寄存器.6输入的LUT,还有一系列 ...
- GPC:使用GPC计算intersection容易出现的问题
在使用GPC计算多边形的交的时候,出现问题 //1.2. 另一种方法,判断新的多边形是否和老多边形相交 Poly cross = (PolyDefault) Clip.intersection ...