标注 | 说明 | 数据类型 |
输入图层 | 包含潜在事件的输入要素。 | Table View |
输出数据集 | 包含事件的新输出数据集。 | Feature Class;Table |
轨迹字段 | 将用于标识唯一轨迹的一个或多个字段。 | Field |
开始条件 | 将用于标识事件的条件。以 Arcade 格式写入表达式,其中可包括 [+ - * / ] 运算符和多个字段。 如果将图层添加到地图中,则可以使用字段和助手过滤器来构建表达式。 | Calculator Expression |
结束条件 (可选) | 将用于结束事件的条件。如果未指定结束条件,则开始条件不再为 true 时,事件将结束。 以 Arcade 格式写入表达式,其中可包括运算符和多个字段。 如果将图层添加到地图中,则可以使用字段和助手过滤器来构建表达式。 | Calculator Expression |
输出模式 (可选) | 用于指定将返回的要素。
| String |
时间界限分割 (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
时间界限参考 (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
摘要
创建用于检测满足给定条件的要素的图层。
插图
使用情况
下表概述了检测事件工具的术语:
术语 描述 轨迹
已启用时间且时间类型为时刻的要素序列。要素由轨迹标识符字段确定处于序列中,并按时间进行排序。例如,某个城市拥有一支扫雪车队,每 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 表达式创建,且可为追踪感知型。有关详细信息,请参阅 GeoAnalytics Desktop 工具中的 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。
您可以执行以下一项或多项操作来提高检测事件工具的性能。
- 设置范围环境,以便仅分析感兴趣的数据。
- 仅输出事件要素。
- 使用时间界限分割参数来分割轨迹。
- 将本地数据用于分析运行的位置。
此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。
参数
arcpy.geoanalytics.DetectIncidents(input_layer, output, track_fields, start_condition, {end_condition}, {output_mode}, {time_boundary_split}, {time_boundary_reference})
名称 | 说明 | 数据类型 |
input_layer | 包含潜在事件的输入要素。 | Table View |
output | 包含事件的新输出数据集。 | Feature Class;Table |
track_fields [track_fields,...] | 将用于标识唯一轨迹的一个或多个字段。 | Field |
start_condition | 将用于标识事件的条件。以 Arcade 格式写入表达式,其中可包括 [+ - * / ] 运算符和多个字段。 | Calculator Expression |
end_condition (可选) | 将用于结束事件的条件。如果未指定结束条件,则开始条件不再为 true 时,事件将结束。 | Calculator Expression |
output_mode (可选) | 用于指定将返回的要素。
| String |
time_boundary_split (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
time_boundary_reference (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
代码示例
以下独立脚本演示了如何使用 DetectIncidents 函数。
# Name: DetectIncidents.py
# Description: Detect incidents when wind speed is greater than 100 miles per hour
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/Weather.gdb"
# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\Hurricanes.lyrx'
# MakeFeatureLayer converts the .lyrx to features
hurricanesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Hurricanes Layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(hurricanesLayer, inputLyrx)
# Set local variables
out = "Hurricane_Incidents"
trackIdentifier = "STAGE"
startCondition = "$feature['WINDSPEED'] > 100"
# Run Detect Incidents
arcpy.gapro.DetectIncidents(hurricanesLayer, out, trackIdentifier, startCondition)