描述
创建用于检测满足给定条件的要素的图层。
插图
使用方法
此地理处理工具适用于 ArcGIS Enterprise 10.6 或更高版本。
下表概述了检测事件工具的术语:
术语 描述 轨迹
已启用时间且时间类型为时刻的要素序列。要素由轨迹标识符字段确定处于序列中,并按时间进行排序。例如,某个城市拥有一支扫雪车队,每 10 分钟记录一次车辆的位置。车辆 ID 可以表示不同的轨迹。
事件点
满足感兴趣条件的要素。
时刻
由开始时间表示的单个时间点且无结束时间。检测事件的输入的时间类型必须为时刻。
间隔
由开始时间和结束时间表示的一段时间。
感兴趣要素
用于描述正分析的要素。在分析过程中,将分析所有要素。
事件是满足特定条件的要素。
检测事件将创建新输出。该工具不会修改输入。
可针对表格、点、线或面要素完成检测事件。输入图层必须已启用时间,并具有用于表示时刻的要素。
仅使用具有时间条目的输入要素。将排除所有不具有时间条目的要素。
轨迹由轨迹字段的唯一组合表示。例如,如果将字段 flightID 和 Destination 用作轨迹标识符,则 [ID007, Solden] 和 [ID007, Tokyo] 要素将分别处于两个独立的轨迹,原因是其 Destination 字段值不同。
可以使用 Arcade 表达式创建条件。开始条件为必选项,结束条件为可选项。如果仅应用开始条件,则事件将在评估开始条件为 true 时开始,并在评估开始条件为 false 时结束。例如,如果轨迹中的值为 [0, 10, 15, 20, 40, 10, 12, -2, -12],并且开始条件为 $feature["values"] > 15,则具有 [True] 的要素为事件,且结果为 [0: False, 10: False, 15: False, 20: True, 40: True, 10: False, 12: False, -2: False, -12: False],其中只有值大于 15 的要素为事件。如果应用的结束条件为 $feature["values"] < 0,则结果将为:[0: False, 10: False, 15: False, 20: True, 40: True, 10: True, 12: True, -2: False, -12: False]。在本例中,事件将在满足开始条件时开始,之后每个连续要素都是事件,直到结束条件为 true。下表概述了这些示例:
位置 1 2 3 4 5 6 7 8 9 值
0
10
15
20
40
10
12
-2
-12
开始:$feature["values"] > 15 并且无结束
False
False
False
True
True
False
False
False
False
开始:$feature["values"] > 15,结束:$feature["values"] < 0
False
False
False
True
True
True
True
False
False
以定义间隔应用时间间隔线段轨迹。例如,如果您将时间间隔边界设置为 1 天,开始于 1990 年 1 月 1 日上午 9:00,则轨迹会在每天上午 9:00 被截断。此分割方法可加快计算速度的快速方法,因为它可以创建较小的追踪以进行分析。如果您的分析更适合按重复的时间间隔边界进行分割,则建议使用大数据处理。
条件需使用 Arcade 表达式创建,且可为追踪感知型。
一个轨迹可包含多个事件。
输出要素将返回输入中的字段以及下列其他字段:
- IncidentID - 提供给每个作为事件的要素的唯一 ID。
- IncidentStatus - 表示事件状态的字符串字段。如果要素不是事件,则值将为 null;如果要素是满足开始条件的第一个事件,则为 Started;如果要素仍为事件,则为 OnGoing;如果要素不再是事件,则为 Ended。单个轨迹中可包含多个事件段。例如,如果轨迹具有以下值:[0, 10, 15, 20, 40, 10, 12, -2, -12],并且开始条件为 $feature["values"] > 15,则生成的 IncidentStatus 值为 [0: null, 10: null, 15: null, 20: Started, 40: OnGoing, 10: Ended, 12: null, -2: null, -12: null]。
- IncidentDuration - 事件发生的时间,以毫秒为单位。此值计算为感兴趣的要素与启动事件的要素之间的差值。
- Instant_Datetime - 要素发生的时间。
将按轨迹以时间顺序排列要素。从第一个要素起,对开始条件进行评估,直到其为 true。要素满足开始条件后,将评估下一个要素,直到开始条件为 false(如果未指定结束条件)或结束条件为 true(如果已指定结束条件)为止。满足该条件后,事件将结束,进程将再次开始。单个轨迹中可能存在多个事件段。例如,如果轨迹具有值 [10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20],并且开始条件为 $feature["values"] > 20,则将存在两个事件段 [10: null, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null]。
事件的持续时间(以毫秒为单位)计算为要素的时间减去事件的开始时间。仅当要素状态为 Started、OnGoing 或 Ended 时,才会计算持续时间。状态为 Started 的要素的持续时间始终为 0。
您可以执行以下一项或多项操作来提高检测事件工具的性能。
- 设置范围环境,以便仅分析感兴趣的数据。
- 仅输出事件要素。
- 使用时间界限分割参数来分割轨迹。
- 将本地数据用于分析运行的位置。
此地理处理工具由 ArcGIS GeoAnalytics Server 作为支持。分析将在 GeoAnalytics Server 上完成,且结果将存储在 ArcGIS Enterprise 的内容中。
当 GeoAnalytics Server 工具运行时,GeoAnalytics Server 上的分析已完成。要获得最佳性能,通过 ArcGIS Enterprise 门户上托管的要素图层或通过大数据文件共享,可以将数据用于 GeoAnalytics Server。在分析开始之前,非 GeoAnalytics Server 本地数据将被转移到您的 GeoAnalytics Server。这意味着运行工具需要更长时间,并且在某些情况下,从 ArcGIS Pro 到 GeoAnalytics Server 移动数据可能会失败。失败的阈值取决于网络速度,以及数据的大小和复杂性。因此,建议您始终共享数据或创建大数据文件共享。
语法
arcpy.geoanalytics.DetectIncidents(input_layer, output_name, track_fields, start_condition, {end_condition}, {output_mode}, {data_store}, {time_boundary_split}, {time_boundary_reference})
参数 | 说明 | 数据类型 |
input_layer | 包含潜在事件的输入要素。 | Record Set |
output_name | 输出要素服务的名称。 | String |
track_fields [track_fields,...] | 将用于标识唯一轨迹的一个或多个字段。 | Field |
start_condition | 将用于标识事件的条件。以 Arcade 格式写入表达式,其中可包括 [+ - * / ] 运算符和多个字段。 | Calculator Expression |
end_condition (可选) | 将用于结束事件的条件。如果未指定结束条件,则开始条件不再为 true 时,事件将结束。 | Calculator Expression |
output_mode (可选) | 用于指定将返回的要素。
| String |
data_store (可选) | 指定将用于保存输出的 ArcGIS Data Store。默认为 SPATIOTEMPORAL_DATA_STORE。在时空大数据存储中存储的所有结果都将存储在 WGS84 中。在关系数据存储中存储的结果都将保持各自的坐标系。
| String |
time_boundary_split (可选) | 用于分割输入数据以进行分析的时间跨度。您可通过时间界限分析定义的时间跨度内的值。例如,如果您使用始于 1980 年 1 月 1 日的 1 天的时间界限,则轨迹将在每天开始时被分割。此参数仅适用于 ArcGIS Enterprise 10.7 及更高版本。 | Time Unit |
time_boundary_reference (可选) | 用于分割输入数据以进行分析的参考时间。将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。如果未指定参考时间,则将使用 1970 年 1 月 1 日。此参数仅适用于 ArcGIS Enterprise 10.7 及更高版本。 | Date |
派生输出
名称 | 说明 | 数据类型 |
output | 满足给定条件的输出要素。 | 记录集 |
代码示例
以下 Python 窗口脚本演示了如何使用 DetectIncidents 工具。
#-------------------------------------------------------------------------------
# Name: DetectIncidents.py
# Description: Detect Incidents when wind speed is greater than 100 miles per hour
# Requirements: ArcGIS GeoAnalytics Server
# Import system modules
import arcpy
# Set local variables
inFeatures = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Hurricanes/MapServer/0"
outFS = "HurricaneTracks_Incidents"
trackIdentifier = "STAGE"
start_condition = "$feature['WINDSPEED'] > 100"
# Execute Reconstruct Tracks
arcpy.geoanalytics.DetectIncidents(inFeatures, outFS, trackIdentifier, calcExpression)
环境
- 输出坐标系
将用于分析的坐标系。除非由该参数进行指定,否则将基于输入坐标系完成分析。对于 GeoAnalytics 工具,最终结果将存储于 WGS84 中的时空数据存储之内。
许可信息
- Basic: 需要 ArcGIS GeoAnalytics Server
- Standard: 需要 ArcGIS GeoAnalytics Server
- Advanced: 需要 ArcGIS GeoAnalytics Server