ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——②要素图层概述

ArcGIS API For JS官方文档解析目录

 Feature Layers

    ArcGIS JavaScript API 2.0版提供了一个新的feature layer(要素图层),用于处理客户端graphic feature(图形要素)。您可能熟悉以前版本中的graphic layer(图形图层),feature layer继承了graphic layer,但提供了额外的功能,例如执行查询和选择的能力。Feature layer也用于Web编辑。

    Feature layer不同于tiled(瓦片)和dynamic(动态)地图服务图层,因为feature layer提供geometry信息通过Web浏览器将其绘制到客户端电脑上。Feature layer可能会在往返服务器的过程中被减少。客户端可以请求其所需要的feature(要素),然后对这些feature执行选择和查询而不必向服务器请求更多信息。Feature layer特别适合于充当响应用户交互的图层,例如鼠标单击或悬停。

    Feature layer支持在map service(地图服务)的图层上定义的任何查询、比例依赖和其他属性配置。使用feature layer,您可以访问相关的表、执行查询、显示时间切片、处理要素附件以及执行各种其他有用的东西。

1、如何创建feature layer?

    Feature layer可以通过引用map service(地图服务)和feature service(要素服务)中的图层,或者通过指定feature collection obejct(要素集对象)来创建。

  • 如果您只想从服务器取回geometry和attributes,并将它们符号化,请使用map service
  • 如果要利用服务源地图文档中的symbol,请使用feature service,如果计划使用feature layer进行编辑,也可以使用feature service。Feature layer 遵守在源地图文档中配置的任何要素模板。
  • Feature collection object用于根据所提供的定义创建feature layer

2、选择显示模式

    当您创建要素服务时,还需要指定取回要素的模式,因为模式决定要素什么时候和如何从服务器被带到服务端。您的选择会影响应用程序的速度和外观。您有以下模式可供选择。

  • Snapshot mode : 在layer被添加到map后,立即从该layer取回所有要素。这消除了任何返回服务器获取信息的需要。但是,如果该layer包含许多feature,则会变得非常麻烦,浏览器可能会被需要绘制的要素数量所压垮,或者该服务可能会达到它可以一次返回要素数量的极限。ArcGIS Server 9.3.1和ArcGIS Server 10的默认值分别为500和1000,但是这个限制可以使用ArcCatalog或者Manager中服务属性对话框的参数选项卡进行配置。应该只对较小的数据集或在处理时态数据时使用用snapshot mode。
  • On demand mode : 根据需要取回要素,只请求当前视图范围内的要素。On demand mode需要客户端和服务器之间更多的往返,且不应用于显示时态动画。然而,这种模式保护您避免取回比您需要的还多的要素。
  • Selection only mode : 初始时不请求任何要素,要素只在选定时添加。当您不能或不希望将所有要素带入到客户端,但出于某种原因希望高亮显示一个或多个要素时,这个模式非常有用。

       例如,假设您的道路层被配置为使用地图表示,它不支持使用要素层来显示。您希望在道路上执行一些Web编辑,但这需要        一个要素层。您需要做什么?

       在这个场景中,您配置一个动态地图服务来显示道路,然后使用一个只有selection only mode的要素层来显示当前正在编          辑的道路,这条选定的道路使用一个简单的客户端symbol绘制。一旦编辑被应用,您可以清除选择并刷新动态地图服务以查        看更新的道路。

注意:无论您为要素层选择哪种显示模式,都会始终在客户端上保留所选的要素。例如,如果您正在使用on demand display mode,并且您已选择了一些要素,即使平移远离这些要素,这些要素仍然被保留。如果您平移回原始区域,您的应用程序将无需重新选择要素或向服务器发出任何其他请求。因此,一个很好的做法是,一旦所选的要素不再需要,清除它们。

    选择所需的属性

    Feature layer不仅可以取回要素的geometry,还可以获取attribute(属性)信息。当您创建feature layer时,您可以指定哪些attribute或”out fields”会被取回。只需请求”*”即可获取所有字段,但为了减少客户端和服务器之间发送的信息量,您应该只请求应用程序中所需的字段。如果您稍后使用feature layer执行查询,则查询将遵守执行您设置的out fields。

3、可以用FeatureLayer做什么?

    FeatureLayer 使您能够完成以下所有操作:

    编辑

    Feature layer是使用Web API编辑要素的关键。API中包含的编辑小部件被设计用于同feature layer一同工作,您只能在引用要素服务的的feature layer上执行编辑。请参阅编辑以了解有关此要求和如何创建要素服务的更多信息。

    定义表达式

    有时您可能希望使用满足某些属性条件并忽略其余属性条件的要素。在这种情况下,您可以在feature layer上设置一个definition expression(定义表达式)来取回您需要的要素。每个feature layer都有一个默认的定义表达式,该表达式来自源地图文档中的定义查询集。您可以在处理feature layer时设置一个新的定义表达式。

    时间定义

    您可以使用feaure layer来隔离满足特定时间标准的要素。例如,您可能只想显示在1930年以前建造的房屋。如果您的房屋图层是时间感知的,您可以在feature layer上设置一个time definition(时间定义),用于仅显示在1930年之前建造的房屋。

    选择和显示

    feature layer支持选择,它表示用户为查看、编辑或分析目的而选择的要素子集,用户可以根据空间或属性标准从选择中添加或删除要素。feature layer使绘制与其他要素具有不同symbol的要素变得容易。这在不使用两个graphic layer的情况下是很困难的。

    选择的要素集可以作为statistical calculations(统计计算)、geoprocessing tools(地理处理工具)和graphing(绘图)的输入,为交互式的GIS分析和探索创造了可能。例如,selection(选择)允许用户在一组建筑物周围画一个多边形,然后按一个按钮计算这些建筑物的太阳势能。在某些编辑工作流中,selection也起着重要的作用,在这些工作流中,当前正在编辑的要素被选择为显示。

    若要进行选择,请使用FeatureLayer.SelectFeatures()方法,该方法以一个Query对象为参数。如果您只对查询您的feature layer感兴趣,而不将结果添加到选择集中,则可以使用QueryFeatures()或者QueryRelatedRecords()代替,使用这些方法中的任何一个,您都不能请求地图文档中或feature layer中定义表达式之外的任何要素。

4、相关示例

    ArcGIS JavaScript API 有几个示例,展示了如何使用feature layer

    ①Select features using a feature layer

    ②Query related tables using a feature layer 

    ③Apply a layer definition using a feature layer

    ④Editing features using a feature layer

转载自:https://blog.csdn.net/qq_35732147/article/details/79915281

You may also like...