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

     

     

  • 相关阅读:
    javaScript真值和假值以及相等操作符
    javaScript操作符
    javascript变量作用域
    javaScript变量
    Linux命令学习之路——档案拷贝:cp
    Linux命令学习之路——变更文档拥有者:chown
    Linux命令学习之路——文档权限管理:chmod
    Linux命令学习之路——变更工作目录:cd
    关于Scrum团队的理解
    关于MATHAPP的测试
  • 原文地址:https://www.cnblogs.com/arxive/p/6262390.html
Copyright © 2020-2023  润新知