博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AE控制图层中要素可见状态的几种方法
阅读量:7173 次
发布时间:2019-06-29

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

转自原文

 

工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要 控制每一个作业员只能看到他负责的区域。作业员的可见区域控制有时候是按空间区域划分,有时候是按照作业属性划分,有时候是属性和区域结合来划分,在程序中应该如何控制呢?本人总结了如下几种可用的方法,不知大家是否有更好的解决方案。

Ø   唯一值符号法

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

Ø   IFeatureLayerDefinition

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

 

方法一:

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

ILayer pLayer = axMapControl1 .get_Layer (0);

IFeatureLayerDefinition pFlDefinition = pLayer as IFeatureLayerDefinition ;

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

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

 

方法二:

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

 

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

Ø   IGeoFeatureLayer

通过 IGeoFeatureLayer 接口的 ExclusionSet 可以排除图层中的一些要素不可见。 ExclusionSet 属性通过接口来控制要排除显示的要素,例如我们要控制 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://eybzm.baihongyu.com/

你可能感兴趣的文章
.NET Compact Framework 多线程环境下的UI异步刷新
查看>>
招聘:高级lamp的工程师、高级.net的软件工程师
查看>>
在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
查看>>
AIO 简介
查看>>
如何查看oracle用户权限
查看>>
Android的init过程(二):初始化语言(init.rc)解析
查看>>
如何优雅地实现Python通用多线程/进程并行模块
查看>>
使用wiz(为知)发布网易博客实践
查看>>
完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
查看>>
Bucket不为空,请检查该Bucket是否包含未删除的Object或者未成功的Multipart碎片
查看>>
ASP.NET MVC+LINQ开发一个图书销售站点(6):创建数据层
查看>>
Spine Skeleton Animation(2D骨骼动画)
查看>>
Kafka~服务端几个常用的命令
查看>>
(第五天)数组
查看>>
软件工程 估计方法
查看>>
VS 20XX 使用技巧总结
查看>>
分享一下Java写的坦克大战游戏,相信很多人小时候玩过
查看>>
RSA密钥的跨平台通用
查看>>
ReactNative: 搭建ReactNative开发环境
查看>>
class_create(),device_create自动创建设备文件结点【转】
查看>>