转自原文 AE控制图层中要素可见状态的几种方法

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

Ø   唯一值符号法

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

Ø   IFeatureLayerDefinition

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

方法一:

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

ILayer pLayer = axMapControl1 .get_Layer (0);

IFeatureLayerDefinition pFlDefinition = pLayer as IFeatureLayerDefinition ;

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

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

方法二:

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

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

Ø   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 中,只能在程序运行时动态进行控制。

AE控制图层中要素可见状态的几种方法的更多相关文章

  1. ArcGIS AO中控制图层中要素可见状态的总结

    一.DefinitionExpression 实现新建查询图层,查询结果要素为选中状态 该接口可以通过两种方法来控制要素的可见状态. 思路1 通过该接口的 DefinitionExpression 方 ...

  2. AE+C# 图层中增加相应属性标注

    原文 AE+C# 图层中增加相应属性标注 ) { IGeoFeatureLayer pGeoFeatureLayer; ILineLabelPosition pLineLabelPosition; I ...

  3. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  4. Linux 中改变主机名的 4 种方法

    今天,我们将向你展示使用不同的方法来修改主机名.你可以从中选取最适合你的方法. 使用 systemd 的系统自带一个名为 hostnamectl 的好用工具,它可以使我们能够轻易地管理系统的主机名. ...

  5. 在 Ruby 中执行 Shell 命令的 6 种方法

    我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...

  6. 在React中跨组件分发状态的三种方法

    在React中跨组件分发状态的三种方法 当我问自己第一百次时,我正在研究一个典型的CRUD屏幕:"我应该将状态保留在这个组件中还是将其移动到父组件?". 如果需要对子组件的状态进行 ...

  7. Python中执行系统命令常见的几种方法--转载

    Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...

  8. 【转载】取得系统中网卡MAC地址的三种方法

    From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...

  9. 【译】在React中实现条件渲染的7种方法

    原文地址:https://scotch.io/tutorials/7-ways-to-implement-conditional-rendering-in-react-applications 借助R ...

随机推荐

  1. 事件循环(Event Loop)

    1.什么是事件循环? JavaScript为单线程执行的,所以是从上到下依次执行,js分为两个任务,宏任务和微任务 首先执行宏任务(第一次就是执行所有的同步代码),再执行所有的微任务,执行完毕之后再次 ...

  2. 【例题 8-3 UVA - 1152】4 Values whose Sum is 0

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然中间相遇. 自己写了个hash处理一下冲突就可以了. [代码] /* 1.Shoud it use long long ? 2. ...

  3. 【Spring】Service 注入失败,空指针

    service层的类都有用@Service标识,但报空指针,注入失败,很可能是因为spring的application配置和springmvc的配置文件配置错误,导致容器冲突了. spring和spr ...

  4. 22. Spring Boot 动态数据源(多数据源自动切换)

    转自:https://blog.csdn.net/catoop/article/details/50575038

  5. socket UDP简单通讯

    // // SocketUDPServerClient.m // socket_server_client // // Created by lujunjie on 2016/11/26. // Co ...

  6. 利用jquery.fullPage.js 和 scrolloverflow.min.js 实现滚屏效果

    参考链接:https://blog.csdn.net/c11073138/article/details/79631036 /* 按着思路去search. */

  7. Codeforces Round #367 (Div. 2) (A,B,C,D,E)

    Codeforces Round 367 Div. 2 点击打开链接 A. Beru-taxi (1s, 256MB) 题目大意:在平面上 \(n\) 个点 \((x_i,y_i)\) 上有出租车,每 ...

  8. HibernateCRUD基础框架(1)-实体类

    HibernateCRUD基础框架包括3篇文章,主要讲述整个CRUD基础框架的思路. 第1篇:讲述最基本的实体类,这些实体类是对SQL语言中的一些概念的封装. 第2篇:在这些实体类的基础上,开发一个& ...

  9. UVA10006 - Carmichael Numbers(筛选构造素数表+高速幂)

    UVA10006 - Carmichael Numbers(筛选构造素数表+高速幂) 题目链接 题目大意:假设有一个合数.然后它满足随意大于1小于n的整数a, 满足a^n%n = a;这种合数叫做Ca ...

  10. php杂项函数

    php杂项函数 一.总结 看着函说作用 函数 描述 PHP     constant() 返回一个常量的值. 4 define() 定义一个常量. 3 defined() 检查某常量是否存在. 3 d ...