当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python ArcGIS FeatureLayerCollection.extract_changes用法及代码示例


本文简要介绍 python 语言中 arcgis.features.FeatureLayerCollection.extract_changes 的用法。

用法:

extract_changes(layers, servergen=None, layer_servergen=None, queries=None, geometry=None, geometry_type=None, in_sr=None, version=None, return_inserts=False, return_updates=False, return_deletes=False, return_ids_only=False, return_extent_only=False, return_attachments=False, attachments_by_url=False, data_format='json', change_extent_grid_cell=None, return_geometry_updates=None, fields_to_compare=None, out_sr=None)

返回:

包含 layerServerGens 和编辑数组的字典

应用程序的更改跟踪机制。应用程序可以使用extract_changes 来查询对服务中的图层和表所做的更改。

注意:

对于从 ArcGIS Pro 2.2 或更高版本发布的基于企业地理数据库的要素服务,ChangeTracking 函数要求所有图层和表都启用存档或分支版本化并具有 globalid 列。

还可以为 ArcGIS Online 托管要素服务启用更改跟踪。如果服务中的所有层和表都具有ChangeTracking 能力,则可以使用extract_changes 操作来获取更改。

Parameter

Description

layers

必填清单。要包含在输出中的图层列表(按索引值)和表。

servergen

必需列表(当 layer_servergen 不存在时)。于 11.0 引入。此参数将 servergens 设置为应用于图层参数中包含的所有图层。可以使用单代或一对代作为此参数的值。如果提供单个 servergen 值,则返回自该生成以来发生的所有更改。如果提供一对 serverGen 值,则返回第一代(最小值)和第二代(最大值)之间发生的更改。如果提供两代,则该对中的第一个值预计是两个值中较小的一个。当“extractChangesCapability”下的service-level“supportServerGens”属性设置为“True”时,表示支持此参数。此操作需要随请求提交“serverGens”或“layerServerGens”。

# Usage Example:

servergen= [10500,11000]

layer_servergen

必需列表(当 servergen 不存在时)。 servergen 编号允许客户端为从服务器接收到的更改指定最后一层生成编号(以毫秒为单位的 Unix 纪元时间值)。在此值之后所做的所有更改都将被返回。

  • minServerGen: It is the min generation of the server data changes. Clients with layerServerGens that is less than minServerGen cannot extract changes and would need to make a full server/layers query instead of extracting changes.

  • serverGen: It is the current server generation number of the changes. Every changed feature has a version or a generation number that is changed every time the feature is updated.

用法:

servergen= [{“id”: <layerId1>, “serverGen”: <genNum1>}, {“id”: <layerId2>, “serverGen”: <genNum2>}]

该层的 id 值是来自 FeatureLayerCollection 上的 layers 属性的层索引。 serverGen 值是以毫秒为单位的 Unix 纪元时间戳值。

# Usage Example:

layer_servergen= [{"id": 0, "serverGen": 10500},
                  {"id": 1, "serverGen": 1100},
                  {"id": 2, "serverGen": 1200}]

queries

可选字典。除了图层和几何参数之外,queries 参数还可用于进一步定义要返回的更改。此参数允许您在 per-layer 或 per-table 基础上设置查询属性。如果图层的 ID 存在于图层参数中并且在图层 queries 中缺失,则返回与过滤器几何相交的已更改特征。

属性包括以下内容:

  • where - Defines an attribute query for a layer or table. The default is no where clause.

  • useGeometry - Determines whether or not to apply the geometry for the layer. The default is true. If set to false, features from the layer that intersect the geometry are not added.

  • includeRelated - Determines whether or not to add related rows. The default is true. The value true is honored only for queryOption=none. This is only applicable if your data has relationship classes. Relationships are only processed in a forward direction from origin to destination.

  • queryOption - Defines whether or how filters will be applied to a layer. The queryOption was added in 10.2. See the Compatibility notes topic for more information. Valid values are None, useFilter, or all. See also the layerQueries column in the Request Parameters table in the Extract Changes (Feature Service) help for details and code samples.

  • When the value is none, no feature are returned based on where and filter geometry.

  • If includeRelated is false, no features are returned.

  • If includeRelated is true, features in this layer (that are related to the features in other layers in the replica) are returned.

  • When the value is useFilter, features that satisfy filtering based on geometry and where are returned. The value of includeRelated is ignored.

# Usage Example:

queries={Layer_or_tableID1:{"where":"attribute query",
                            "useGeometry": true | false,
                            "includeRelated": true | false},
         Layer_or_tableID2: {.}}

geometry

可选 Geometry /Extent 。用作更改的空间过滤器的几何图形。将返回与此几何相交的图层中所有更改的要素。几何结构与ArcGIS REST API 返回的JSON geometry objects 的结构相同。除了 JSON 结构之外,对于信封和点,您可以使用更简单的逗号分隔语法指定几何。

geometry_type

可选字符串。几何参数指定的几何类型。几何类型可以是包络、点、线或多边形。默认几何类型是信封。

值:esriGeometryPointesriGeometryMultipointesriGeometryPolylineesriGeometryPolygonesriGeometryEnvelope

in_sr

可选整数。输入几何的空间参考。

out_sr

可选整数/字符串。返回更改的输出空间参考。

version

可选字符串。如果启用了分支版本控制,用户可以指定要从中提取更改的分支版本名称。

return_inserts

可选布尔值。如果为 true,将返回新插入的特征。默认值为假。

return_updates

可选布尔值。如果为 true,将返回更新的函数。默认值为假。

return_deletes

可选布尔值。如果为 true,则将返回已删除的要素。默认值为假。

return_ids_only

可选布尔值。如果为 true,则响应仅包含对象 ID 数组。默认值为假。

return_attachments

可选布尔值。如果为 true,则在响应中返回附件更改。否则,不包括附件。默认值为假。仅当要素服务具有附件时,此参数才适用。

attachments_by_url

可选布尔值。如果为 true,将为每个返回的附件提供对 URL 的引用。否则,附件将嵌入响应中。默认值为真。

data_format

可选字符串。响应中返回的更改的格式。默认为 json。值:sqllite 或 json

change_extent_grid_cell

可选字符串。为了优化本地化更改范围,值介质是一个 8x8 网格,用于限制更改范围。仅当return_extent_only 为真时使用。默认值为无。值:无、大、中或小

return_geometry_updates

可选布尔值。如果为真,则响应包括一个“hasGeometryUpdates”属性,该属性为每个图层设置为真,其中更新具有几何变化。默认值为假。

如果图层的编辑仅包括对几何以外的字段的插入、删除或更新,则 hasGeometryUpdates 未设置或返回为 false。当一个图层有多行更新时,只需要包含一个几何更改即可将hasGeometryUpdates 设置为真。

fields_to_compare

可选列表。于 11.0 引入。此参数允许您确定是否有任何字段数组已更新。此参数可接受的值是一个字段数组,其中包含要评估的字段。响应包括一个 fieldUpdates 数组,其中包含包含对指定字段所做的任何更新的行。如果没有对任何字段进行更新,则 fieldUpdates 数组为空。

例子:

#Usage Example for extracting all changes to a feaature layer in a particular version since the time the Feature Layer was created.

from arcgis.gis import GIS
from arcgis.features import FeatureLayerCollection

>>> gis = GIS(<url>, <username>, <password>)

# Search for the Feature Service item
>>> fl_item = gis.content.search('title:"my_feature_layer" type:"Feature Layer"')[0]
>>> created_time = fl_item.created

# Get the Feature Service url
>>> fs=gis.content.search('title:"my_feature_layer" type:"Feature"')[0].url

# Instantiate the a FeatureLayerCollection from the url
>>> flc=FeatureLayerCollection(fs, gis)

# Extract the changes for the version
>>> extracted_changes=flc.extract_changes(layers=[0],
                           servergen=[{"id": 0, "serverGen": created_time}],
                           version="<version_owner>.<version_name>",
                           return_ids_only=True,
                           return_inserts=True,
                           return_updates=True,
                           return_deletes=True,
                           data_format="json")

>>> extracted_changes

{'layerServerGens': [{'id': 0, 'serverGen': 1600713614620}],
 'edits': [{'id': 0,
   'objectIds': {'adds': [], 'updates': [194], 'deletes': []}}]}

相关用法


注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 arcgis.features.FeatureLayerCollection.extract_changes。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。