zoukankan      html  css  js  c++  java
  • AE控制图层中要素可见状态的几种方法

    转自原文 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 (0);
    IGeoFeatureLayer pGeoFl = pLayer as IGeoFeatureLayer ;
    IFeatureIDSet pIdSet = new FeatureIDSetClass ();
    pIdSet .Add (2);
    pIdSet .Add (5);
    pIdSet .Add (8);
    pGeoFl .ExclusionSet = pIdSet ;

    该方法较为灵活,可以用于精确控制可见要素,缺点是无法保存到MXD 中,只能在程序运行时动态进行控制。

     

     

  • 相关阅读:
    .net core实现的全程序跟踪
    gmap.net
    Spring Cloud实践:降级、限流、滚动、灰度、AB、金丝雀的实现思路
    服务的协作:服务间的消息传递——《微服务设计》读书笔记
    使用消息系统进行微服务间通讯时,如何保证数据一致性
    How to distribute a database among microservices
    微服务间如何选择推送和拉取数据
    Android 怎么使用Bitmap+Canvas 自适应屏幕
    Android 音乐播放器之--错误状态下调用导致的异常
    Android应用截图和SurfaceView截图问题总结
  • 原文地址:https://www.cnblogs.com/arxive/p/6262390.html
Copyright © 2011-2022 走看看