检测事件 (GeoAnalytics Desktop)

摘要

创建用于检测满足给定条件的要素的图层。

插图

检测事件工具图示

使用情况

  • 下表概述了检测事件工具的术语:

    术语描述

    轨迹

    已启用时间且时间类型为时刻的要素序列。要素由轨迹标识符字段确定处于序列中,并按时间进行排序。例如,某个城市拥有一支扫雪车队,每 10 分钟记录一次车辆的位置。车辆 ID 可以表示不同的轨迹。

    事件点

    满足感兴趣条件的要素。

    时刻

    由开始时间表示的单个时间点且无结束时间。检测事件的输入的时间类型必须为时刻。

    间隔

    由开始时间和结束时间表示的一段时间。

    感兴趣要素

    用于描述正分析的要素。在分析过程中,将分析所有要素。

  • 事件是满足特定条件的要素。

  • 检测事件将创建新输出。该工具不会修改输入。

  • 可针对点、线或面要素完成检测事件。输入图层必须已启用时间,并具有用于表示时刻的要素。

  • 仅使用具有时间条目的输入要素。将排除所有不具有时间条目的要素。

  • 轨迹由轨迹字段的唯一组合表示。例如,如果将字段 flightIDDestination 用作轨迹标识符,则 [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。下表概述了这些示例:

    位置123456789

    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]

  • 事件的持续时间(以毫秒为单位)计算为要素的时间减去事件的开始时间。仅当要素状态为 StartedOnGoingEnded 时,才会计算持续时间。状态为 Started 的要素的持续时间始终为 0。

  • 您可以执行以下一项或多项操作来提高检测事件工具的性能。

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 仅输出事件要素。
    • 使用时间界限分割参数来分割轨迹。
    • 本地数据用于分析运行的位置。

  • 此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项

  • 运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools

参数

标注说明数据类型
输入图层

包含潜在事件的输入要素。

Table View
输出数据集

包含事件的新输出数据集。

Feature Class;Table
轨迹字段

将用于标识唯一轨迹的一个或多个字段。

Field
开始条件

将用于标识事件的条件。以 Arcade 格式写入表达式,其中可包括 [+ - * / ] 运算符和多个字段。

如果将图层添加到地图中,则可以使用字段助手过滤器来构建表达式。

了解有关检测事件中表达式的详细信息

Calculator Expression
结束条件
(可选)

将用于结束事件的条件。如果未指定结束条件,则开始条件不再为 true 时,事件将结束。

以 Arcade 格式写入表达式,其中可包括运算符和多个字段。

如果将图层添加到地图中,则可以使用字段助手过滤器来构建表达式。

Calculator Expression
输出模式
(可选)

用于指定将返回的要素。

  • 所有要素将返回所有输入要素。这是默认设置。
  • 事件点仅将返回被发现是事件的要素。
String
时间界限分割
(可选)

用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。

Time Unit
时间界限参考
(可选)

用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。

Date

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
(可选)

用于指定将返回的要素。

  • ALL_FEATURES将返回所有输入要素。这是默认设置。
  • INCIDENTS仅将返回被发现是事件的要素。
String
time_boundary_split
(可选)

用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。

Time Unit
time_boundary_reference
(可选)

用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。

Date

代码示例

DetectIncidents 示例(独立脚本)

以下独立脚本演示了如何使用 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)