Classify Movement Events (Intelligence)

Summary

Identifies turn events, acceleration events, and speed from an input point track dataset.

Illustration

Classify Movement Events tool illustration

Usage

  • For the tool to execute, the Input Features parameter value must be in a projected coordinate system and it must be time enabled.

    The tool will identify the following events:

    • Right or left turn
    • Right or left U-turn
    • Acceleration
    • Deceleration
    • Start
    • Stop
    • Speed in miles per hour
    • Speed in kilometers per hour
    • From bearing
    • To bearing

    Additionally, the distance difference and time difference between the current point and the previous point in the track will be calculated.

    Optionally, a region of interest point is located.

  • Turns are annotated based on the direction of travel. Turns can be categorized into the following categories:

    • Right turn
    • Left turn
    • Right U-turn
    • Left U-Turn
    • Stopped
    • Traveling

    Turns are calculated using the Curvature and Number Of Points parameters. Each point is evaluated based on the bearing from the previous point in the track to the current point and from the current point to the next point in the track. If the value exceeds the value specified in the Curvature parameter, it is considered a turn. Otherwise, it is considered to be traveling. For tracks representing large objects such as aircraft or ships, it is recommended that you increase the Number Of Points parameter value to account for the longer amount of time to conduct a turn.

    Bearing calculations

    Bearing is calculated from the previous point to the current point and from the current point to the next point, and the difference is used to determine turn events.

  • The default values for the Curvature and Number Of Points parameters are optimized for typical automobile tracks assuming an approximate one-second sampling rate. For vehicles that move faster than automobiles or data that is sampled in an interval that is not once per second, you may need to change the Curvature or Number Of Points parameter value. For example, for a personal GPS device that samples once every five seconds, increase the Number Of Points value. For data that represents aircraft that is sampled once every second, adjust the Curvature parameter value down to 10 or lower to account for the greater amount of time and space that is required for an aircraft to make a turn.

    Difference in turning radius between smaller objects and larger objects

    Smaller objects such as people and cars require less distance to turn than larger objects such as aircraft and ships.

  • Speed is calculated using the distance between points divided by the amount of time needed to travel that distance. Stops are identified when a vehicle has a velocity of zero. Starts are determined from when points accelerate from a stopped position.

    The acc_event field is calculated using the difference of the current point in the track and the previous point in the track and between the current point and the next point in the track. Specific acceleration events include the following:

    • Start of acceleration event—The point where the track begins to speed up. The current point is proceeded by a point of equal speed and followed by a point with a higher speed.
    • Start of brake event—The point where the track begins to slow down. The current point is proceeded by a point of equal speed and followed by a point with a lower speed
    • Acceleration—The point track has increasing speed between the previous point and current point. This must come after the start of acceleration and before the end of an acceleration event.
    • Braking—The point track has decreasing speed between the previous point and the current point. This must come after the start of a brake event and before the end of a brake event.
    • End of acceleration event—The point where an acceleration event stops. The current point has a higher speed than the previous point, but the following point is of the same or lower speed. This is typically followed by either traveling or a brake event.
    • End of brake event—The point where a brake event stops. The current point has a lower speed than the previous point, but the following point is of the same or higher speed. This is typically followed by stopped or an acceleration event.
    • Stopped—The point track is not moving. The speed must be equal to 0 mph or 0 kph.
    • Traveling—The point track is moving at a speed that does not fall into any of the previous categories.

    Acceleration and brake events calculation

    Acceleration and brake events are calculated using the average speed between points.

  • The output feature class will contain the following fields:

    • track_id—The unique identifier associating the point to a track. This field is derived from the ID Field parameter.
    • time—The time associated with the point track feature. This field is derived from the time field specified in the layer properties.
    • POINT_X—The x-coordinate associated with the current feature.
    • POINT_Y—The y-coordinate associated with the current feature.
    • distance_diff—The distance between the previous feature in the track and the current feature. The distance is calculated in the units of the input's coordinate system.
    • time_diff—The difference in seconds between the previous feature in the track and the current feature.
    • speed—The speed in the linear units of the input coordinate system per second.
    • speed_MPH—The speed in miles per hour of the track from the previous feature in the track to the current feature.
    • speed_KMPH—The speed in kilometers per hour of the track from the previous feature in the track to current feature.
    • acc_event—Acceleration events. Specific acceleration events include the following:
      • Start of acceleration event
      • Start of brake event
      • Acceleration
      • Braking
      • End of acceleration event
      • End of brake event
      • Stopped
      • Traveling
    • turn_event—A turn event. Specific turn events include the following:
      • Left turn
      • Right turn
      • Left U-turn
      • Right U-turn
      • Stopped
      • Traveling
    • from_bearing—The bearing from the previous point in the track to the current point.
    • to_bearing—The bearing from the current point in the track to the next point.

    If the optional Regions Of Interest parameter value has an associated feature class, a roi_id field will be populated. This field will include the region of interest that the point intersects.

  • The from_bearing and to_bearing fields are included and are primarily intended to help understand directionality of travel and help with applying symbology to orient correctly with the direction of travel. The key difference with these fields is that the from_bearing field represents a back angle from the current point to the previous point of the track.

Parameters

LabelExplanationData Type
Input Features

A time-enabled point feature layer with a field annotating the track with which each point is associated. The geometry, object identifier, track name, and time will be transferred to the output feature class. The input must be in a projected coordinate system.

Feature Layer
ID Field

A field from the input features that will be used to obtain the unique identifiers per point track. The field will be copied to the output feature class.

Field
Output Feature Class

The output feature class that will contain the calculated movement events.

Feature Class
Curvature
(Optional)

The minimum value that is necessary for an event to be classified as a turn event. After the curvature is calculated, any calculated curvature greater than this value will cause the turn_event field to be populated with the relevant turn event, while values less than this will cause the turn_event field to be classified as Traveling.

Turns are calculated using the Curvature and Number Of Points parameters. Each point is evaluated based on the bearing from the previous point in the track to the current point and from the current point to the next point in the track. If the value exceeds the value specified in the Curvature parameter, it is considered a turn. Otherwise, it is considered to be traveling. For tracks representing large objects, it is recommended that you increase the Number Of Points value to account for the longer amount of time to conduct a turn.

Double
Number Of Points
(Optional)

The number of points that will be evaluated before and after a given point when calculating the bearing difference. When using data with a high sampling rate (subsecond), you may need to increase the Number Of Points parameter value to account for the decreased movement that is possible in that brief time period. A value of 1 is suitable for automobiles and pedestrians assuming a one-second sampling on the input data. Larger values are necessary for aircraft and ships, and a default value of 5 should be used.

Long
Regions Of Interest
(Optional)

The regions of interest. This input feature layer must be a polygon feature class. If a value is provided, a roi field will be added to the Output Feature Class parameter.

Feature Layer
Regions Of Interest ID Field
(Optional)

A field from the Regions Of Interest parameter that contains the unique identifiers for each region of interest.

Field

arcpy.intelligence.ClassifyMovementEvents(in_features, id_field, out_featureclass, {curvature}, {number_of_points}, {regions_of_interest}, {roi_id_field})
NameExplanationData Type
in_features

A time-enabled point feature layer with a field annotating the track with which each point is associated. The geometry, object identifier, track name, and time will be transferred to the output feature class. The input must be in a projected coordinate system.

Feature Layer
id_field

A field from the input features that will be used to obtain the unique identifiers per point track. The field will be copied to the output feature class.

Field
out_featureclass

The output feature class that will contain the calculated movement events.

Feature Class
curvature
(Optional)

The minimum value that is necessary for an event to be classified as a turn event. After the curvature is calculated, any calculated curvature greater than this value will cause the turn_event field to be populated with the relevant turn event, while values less than this will cause the turn_event field to be classified as Traveling.

Turns are calculated using the curvature and number_of_points parameters. Each point is evaluated based on the bearing from the previous point in the track to the current point and from the current point to the next point in the track. If the value exceeds the value specified in the curvature parameter, it is considered a turn. Otherwise, it is considered to be traveling. For tracks representing large objects, it is recommended that you increase the number_of_points value to account for the longer amount of time to conduct a turn.

Double
number_of_points
(Optional)

The number of points that will be evaluated before and after a given point when calculating the bearing difference. When using data with a high sampling rate (subsecond), you may need to increase the number_of_points parameter value to account for the decreased movement that is possible in that brief time period. A value of 1 is suitable for automobiles and pedestrians assuming a one-second sampling on the input data. Larger values are necessary for aircraft and ships, and a default value of 5 should be used.

Long
regions_of_interest
(Optional)

The regions of interest. This input feature layer must be a polygon feature class. If a value is provided, a roi field will be added to the out_featureclass parameter.

Feature Layer
roi_id_field
(Optional)

A field from the regions_of_interest parameter that contains the unique identifiers for each region of interest.

Field

Code sample

ClassifyMovementEvents example (stand-alone script)

The following stand-alone Python script demonstrates how to use the ClassifyMovementEvents function.

# 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"

# Execute tool
arcpy.ClassifyMovementEvents_intelligence(source_features,
                                          output_point_features,
                                          id_field,
                                          regions_of_interest,
                                          roi_name)

Licensing information

  • Basic: No
  • Standard: No
  • Advanced: Yes

Related topics