分类移动事件 (情报)

摘要

识别输入点轨迹数据集中的转弯事件、加速事件和速度。

插图

分类移动事件工具图示

使用情况

  • 要运行该工具,输入要素参数值必须采用投影坐标系,并且必须启用时间。

    此工具将识别以下事件:

    • 左转或右转
    • 左侧或右侧 U 形转弯
    • 加速
    • 减速
    • 起始
    • 停止
    • 速度(以英里/小时为单位)
    • 速度(以千米/小时为单位)
    • 起始方位角
    • 终止方位角

    另外,系统将计算轨迹中当前点和上一个点之间的距离差和时间差。

    可以有选择地定位感兴趣区域点。

  • 系统将根据行驶方向注记转弯。 转弯可分类为以下类别:

    • 右转
    • 左转
    • 右侧 U 形转弯
    • 左侧 U 形转弯
    • 已停止
    • 行驶中

    转弯使用曲率点数参数进行计算。 系统将基于从轨迹中上一个点到当前点以及从当前点到轨迹中下一个点的方位角来计算每个点。 如果该值超过曲率参数中指定的值,则系统会将其视为转弯;否则,系统会将其视为行驶中。 对于代表大型对象(例如航空器或船舶)的轨迹,建议您增加点数参数值,以解决转弯执行时间较长的问题。

    方位角计算
    系统将从上一个点到当前点以及从当前点到下一个点来计算方位角,并且将使用差值来确定转弯事件。

  • 曲率点数参数的默认值已针对典型汽车轨迹进行优化,假设采样速率大约为一秒。 对于行驶速度大于汽车的车辆或采样间隔不是每秒一次的数据,可能需要更改曲率点数参数值。 例如,对于使用每五秒采样一次的个人 GPS 设备的人员,请增大点数值。 对于表示每秒采样一次的飞机的数据,请将曲率参数值下调为 10 或更低,以考虑飞机转弯所需的大量时间和空间。

    较小对象与较大对象之间的转弯半径差
    较小对象(例如人和汽车)与较大对象(例如航空器和船舶)相比所需的转弯距离更小。

  • 速度通过将两点之间的距离除以行驶该距离所需的时间计算。 当车辆的速度为零时,将识别为停靠点。 起点根据点从停止位置加速的时间确定。

    系统将使用轨迹中的当前点与轨迹中的上一个点之间的差以及轨迹中的当前点与下一个点之间的差来计算 acc_event 字段。 具体的加速事件如下:

    • 加速起点事件 - 轨迹开始加速的点。 当前点的前面是速度相等的点,后面是速度更高的点。

    • 减速起点事件 - 轨迹开始减速的点。 当前点的前面是速度相等的点,后面是速度更低的点。

    • 加速 - 点轨迹在先前点和当前点之间的速度不断提高。 该事件必须在加速起点之后和加速终点事件之前出现。

      加速和减速事件计算
      使用点之间的平均速度来计算加速和减速事件。

    • 减速 - 点轨迹在先前点和当前点之间的速度不断降低。 该事件必须在减速事件开始之后和减速事件结束之前出现。

    • 加速终点事件 - 加速事件停止的点。 当前点的速度高于上一个点,但下一个点的速度与此相同或更低。 通常,该事件在行驶中或减速事件之前。

    • 减速终点事件 - 减速事件停止的点。 当前点的速度低于上一个点,但下一个点的速度与此相同或更高。 通常,该事件在已停止或加速事件之前。

    • 已停止 - 点轨迹未移动。 速度必须等于 0 mph 或 0 kph。

    • 行驶中 - 点轨迹的移动速度不属于上述任何类别。

  • 输出要素类将包含以下字段:

    • track_id - 将点关联到轨迹的唯一标识符。 该字段派生自 ID 字段参数。
    • time - 与点轨迹要素关联的时间。 该字段派生自在图层属性中指定的时间字段。
    • source_OID - 输入要素参数派生的要素的对象 ID
    • POINT_X - 与当前要素关联的 x 坐标。
    • POINT_Y - 与当前要素关联的 y 坐标。
    • distance_diff - 轨迹中先前要素与当前要素之间的距离。 距离采用输入坐标系的单位进行计算。
    • time_diff - 轨迹中先前要素与当前要素之间的秒数差。
    • speed - 采用每秒输入坐标系的线性单位的速度。
    • speed_mph - 轨迹中先前要素到当前要素的速度(以英里/小时为单位)。
    • speed_kph - 轨迹中先前要素到当前要素的速度(以公里/小时为单位)。
    • acc_event - 加速事件。 具体的加速事件如下
      • 加速起点事件
      • 减速起点事件
      • 加速
      • 减速
      • 加速终点事件
      • 减速终点事件
      • 已停止
      • 行驶中
    • turn_event - 转弯事件。 具体的转弯事件如下:
      • 左转
      • 右转
      • 左侧 U 形转弯
      • 右侧 U 形转弯
      • 已停止
      • 行驶中
    • from_bearing - 轨迹中从上一个点到当前点的方位角。
    • to_bearing - 轨迹中从当前点到下一个点的方位角。

    如果感兴趣区域参数值具有关联的要素类,将填充 roi_id 字段。 该字段将包含点相交的感兴趣区域。

    如果选中创建转弯事件标识符参数,输出属性表将包含一个 turn_event_id 字段,该字段包含为每个唯一转弯事件创建的唯一标识符。 如果转弯事件有多个与之关联的要素,则每个要素将共享相同的 turn_event_id 值。

  • 系统将包含 from_bearingto_bearing 字段,主要用于帮助理解行驶的方向性,并帮助应用符号系统以正确进行行驶方向定向。 这些字段的主要差异在于 from_bearing 字段表示从轨迹的当前点到先前点的后侧角度。

  • 如果选中排除非转弯事件参数,该工具将移除 turn_event 字段中具有 Traveling 值的所有要素。 这可以减少输出要素类的大小并提高性能。 如果要确定交叉点的使用地点和使用频率,或者特定轨迹的转弯事件地点以用于司法分析,则建议执行此操作。

  • 如果将转弯事件要素表示参数设置为转弯中点,则共享相同 turn_event_id 值的所有转弯事件要素将聚合到要素均值中心。 这是一个缩减过程,它将移除所有相关要素,并在计算出的转弯事件的平均中心处留下一个要素。 由于此参数具有破坏性,因此最好在选中排除非转弯事件参数的情况下使用。

参数

标注说明数据类型
输入要素

启用时间的点要素图层,具有用于注记与每个点关联的轨迹的字段。 几何、对象标识符、轨迹名称和时间将传递到输出要素类。 输入必须采用投影坐标系。

Feature Layer
ID 字段

输入要素中的字段,用于获取每个点轨迹的唯一标识符。 该字段将复制到输出要素类。

Field
输出要素类

将包含计算的移动事件的输出要素类。

Feature Class
曲率
(可选)

将事件分类为转弯事件所需的最小值。 在计算曲率后,大于此值的任何计算曲率都会导致在 turn_event 字段中填充相关的转弯事件,而小于此值的值将导致 turn_event 字段分类为行驶中。

转弯使用曲率点数参数进行计算。 系统将基于从轨迹中上一个点到当前点以及从当前点到轨迹中下一个点的方位角来计算每个点。 如果该值超过曲率参数中指定的值,则系统会将其视为转弯。 否则,系统会将其视为行驶中。 对于代表大型对象的轨迹,建议您增加点数值,以解决转弯执行时间较长的问题。

Double
点数
(可选)

计算方位角差值时,位于给定点之前和之后的待计算点数。 使用采样速率(亚秒)较高的数据时,可能需要增加点数参数值,以考虑在该短暂时间内可能发生的移动减少。 假设每秒对输入数据采样一次,则值 1 适用于汽车和行人。 对于航空器和船舶,必须使用较大的值;对这些使用值 5。

Long
感兴趣区域
(可选)

感兴趣区域。 此输入要素图层必须为面要素类。 如果提供了一个值,roi 字段将添加到输出要素类参数。

Feature Layer
感兴趣区域 ID 字段
(可选)

来自感兴趣区域参数的字段,包含每个感兴趣区域的唯一标识符。

Field
创建转弯事件标识符
(可选)

指定在输出要素类中是否将创建转弯事件标识符。

  • 选中 - 将创建唯一转弯事件标识符。
  • 未选中 - 不创建唯一转弯事件标识符。 这是默认设置。

Boolean
排除非转弯事件
(可选)

指定是否排除 turn_event 字段值为 Traveling 的要素。

  • 选中 - 将排除 turn_event 字段值为 Traveling 的要素。
  • 未选中 - 不排除 turn_event 字段值为 Traveling 的要素;将返回所有要素。 这是默认设置。

Boolean
转弯事件要素表达
(可选)

指定如何表示输出转弯事件。

  • 所有要素将返回与转弯事件相关的所有点。 这是默认设置。
  • 转弯中点将返回转弯事件的平均中心。
String

arcpy.intelligence.ClassifyMovementEvents(in_features, id_field, out_featureclass, {curvature}, {number_of_points}, {regions_of_interest}, {roi_id_field}, {include_turn_ids}, {exclude_non_turn_events}, {turn_events_representation})
名称说明数据类型
in_features

启用时间的点要素图层,具有用于注记与每个点关联的轨迹的字段。 几何、对象标识符、轨迹名称和时间将传递到输出要素类。 输入必须采用投影坐标系。

Feature Layer
id_field

输入要素中的字段,用于获取每个点轨迹的唯一标识符。 该字段将复制到输出要素类。

Field
out_featureclass

将包含计算的移动事件的输出要素类。

Feature Class
curvature
(可选)

将事件分类为转弯事件所需的最小值。 在计算曲率后,大于此值的任何计算曲率都会导致在 turn_event 字段中填充相关的转弯事件,而小于此值的值将导致 turn_event 字段分类为行驶中。

转弯使用 curvaturenumber_of_points 参数进行计算。 系统将基于从轨迹中上一个点到当前点以及从当前点到轨迹中下一个点的方位角来计算每个点。 如果该值超过为 curvature 参数指定的值,则系统会将其视为转弯。 否则,系统会将其视为行驶中。 对于代表大型对象的轨迹,建议您增加 number_of_points 值,以解决转弯执行时间较长的问题。

Double
number_of_points
(可选)

计算方位角差值时,位于给定点之前和之后的待计算点数。 使用采样速率(亚秒)较高的数据时,可能需要增加 number_of_points 参数值,以考虑在该短暂时间内可能发生的移动减少。 假设每秒对输入数据采样一次,则值 1 适用于汽车和行人。 对于航空器和船舶,必须使用较大的值;对这些使用值 5。

Long
regions_of_interest
(可选)

感兴趣区域。 此输入要素图层必须为面要素类。 如果提供了一个值,roi 字段将添加到 out_featureclass 参数。

Feature Layer
roi_id_field
(可选)

来自 regions_of_interest 参数的字段,包含每个感兴趣区域的唯一标识符。

Field
include_turn_ids
(可选)

指定在输出要素类中是否将创建转弯事件标识符。

  • INCLUDE_TURN_IDS将创建唯一转弯事件标识符。
  • NO_TURN_IDS不创建唯一转弯事件标识符。 这是默认设置。
Boolean
exclude_non_turn_events
(可选)

指定是否过滤 turn_event 字段值为 Traveling 的要素。

  • ONLY_TURN_EVENTS将排除 turn_event 字段值为 Traveling 的要素。
  • ALL_FEATURES不排除 turn_event 字段值为 Traveling 的要素;将返回所有要素。 这是默认设置。
Boolean
turn_events_representation
(可选)

指定如何表示输出转弯事件。

String

代码示例

ClassifyMovementEvents 示例(独立脚本)

以下独立 Python 脚本演示了如何使用 ClassifyMovementEvents 函数。

# Name: ClassifyMovementEvents.py
# Description: Identify movement events in a point track dataset. 

# Import system modules 
import arcpy 

arcpy.env.workspace = "C:/data/Tracks.gdb"

# Set local variables 
source_features = "Known_Tracks"
output_movement_events = "MovementEvents"
id_field = "device_id"
regions_of_interest = "Named_Areas_Of_Interest"
roi_name = "counties"

# Run tool
arcpy.intelligence.ClassifyMovementEvents(source_features,
                                          output_point_features,
                                          id_field,
                                          regions_of_interest,
                                          roi_name)