Summary
Creates line or polygon tracks from time-enabled input data.
Illustration
Usage
Reconstruct Tracks is run on point or polygon features. The input layer must be time enabled with features that represent an instant in time.
You can specify one or more fields to identify tracks. Tracks are represented by the unique combination of one or more track fields. For example, if the fields flightID and Destination are used as track identifiers, the features ID007, Solden and ID007, Tokoyo would be in two separate tracks, since they have different Destination field values.
Features that have a buffer applied will result in polygonal tracks. Input point features that do not have a buffer applied will result in polyline tracks.
Input features will consist of time-enabled features that represent an instant in time. Results are line or area features that represent an interval in time. The start and end of the interval are determined by the time at the first and last features in a track.
For linear results, only tracks that contain more than one point will be returned. If you apply a buffer, all features will be returned.
You can optionally apply a buffer to your input features. When you apply a buffer, resulting tracks will be polygon features.
When buffering input features, each input feature is buffered. Then a convex hull is generated to create a polygon track.
Fields used in the buffer expression must be numeric and will be applied using the units of the input's spatial reference. See Arcade Expressions in GeoAnalytics Desktop tools for more information. You can use track-aware equations.
By default, only the count of points or polygons in a track will be calculated. Additional statistics can be calculated by specifying the Summary Fields parameter.
By default, tracks are created using a geodesic method. The method is applied to the following two components of the analysis:
- Tracks crossing the international date line—When using the geodesic method, input layers that cross the international date line will have tracks that correctly cross the international date line. This is the default. Your input layer or processing spatial reference must be set to a spatial reference that supports wrapping around the international date line, for example, a global projection such as World Cylindrical Equal Area.
- Buffers—Input features can optionally be buffered. To learn more about when to apply a geodesic or planar buffer, see Create buffers.
You can split tracks in the following ways:
- Time Split—Based on a time between inputs. Applying a time split breaks up any track when input data is farther apart than the specified time. For example, if you have five features with the same track identifier and the times of [01:00, 02:00, 03:30, 06:00, 06:30] and set a time split of 2 hours, any features that are measured more than 2 hours apart will be split. In this example, the result would be a track with [01:00, 02:00, 03:30] and [06:00, 06:30], because the difference between 03:30 and 6:00 is greater than 2 hours.
- Time Boundary Split—Based on defined time intervals. Applying a time boundary split segments tracks at a defined interval. For example, if you set the time boundary to 1 day, starting at 9:00 a.m. on January 1, 1990, each track will be truncated at 9:00 a.m. every day. This split accelerates computing time, as it creates smaller tracks for analysis. If splitting by a recurring time boundary makes sense for your analysis, it is recommended for big data processing.
- Distance Split—Based on a distance between inputs. Applying a distance split breaks up any track when input data is farther apart than the specified distance. For example, if you set a distance split of 5 kilometers, sequential features greater than 5 kilometers apart will be part of a different track.
You can apply none, one, two, or three split options at the same time. The results, assuming you apply a time split of 6 hours, a time boundary of 1 day, and distance split of 16 kilometers, are as follows:
Split option Description Six input points with a time and location.
Input points with the same identifier. The distance between the points is marked on the top of the dotted line, and the time of each point measurement is marked below the points. There are 4 splits on the timeline. The red splits represent the time boundary split of 1 day, starting at 12:00 a.m. The blue split represents the distance split, when the distance between two points is greater than 16 kilometers. The purple split represents the time split, when the temporal distance between two sequential points is greater than 6 hours.
Example with no time split and no distance split.
Example with a time split of 2 hours. Any features greater than 2 hours apart are split into separate tracks.
Example with a time boundary of 1 day, starting at midnight. At each 1-day interval starting from the specified time (here 12:00 a.m.), a track is created.
Example with a distance split of 16 kilometers. Any features greater than 16 kilometers apart (the features at 05:00 a.m. and 06:00 a.m.) are split into separate tracks.
Example with a time split of 6 hours and a time boundary of 1 day starting at 12:00 a.m. Any features greater than 6 hours apart or that intersect with the time duration split at 12:00 a.m. are split into separate tracks.
Example with a time split of 6 hours and a distance split of 16 kilometers. Any features greater than 6 hours apart (the features at 06:00 a.m. and 7:00 p.m.) or farther than 16 kilometers apart are split into separate tracks.
Example with a distance split of 16 kilometers and a time boundary of 1 starting at 12:00 a.m. Any features greater than 16 kilometers apart or that intersect with the time duration split at 12:00 a.m. are split into separate tracks.
Example with a distance split of 16 kilometers, a time split of 6 hours, and a time boundary of 1 day starting at 12:00 a.m. Any features greater than 16 kilometers apart, or farther apart than 6 hours, or that intersect with the time duration split at 12:00 a.m. are split into separate tracks.
The following are examples of why it might make sense to define tracks using the split parameters and the field identifier parameter using an airline flight as an example:
- An aircraft feature has aircraft ID, flight ID, pilot name, and start time fields.
- Use the aircraft ID field as the identifier to see where each plane has traveled.
- Use the aircraft ID and the flight ID fields as the identifiers to compare distinct routes.
- Use the aircraft ID field and the time boundary of 1 year to examine the flights for each aircraft for a year at a time.
- Use the pilot name, aircraft ID, and start time fields to view each pilot's flight.
- Use the aircraft ID field as the identifier, and split on distances greater than 1,000 kilometers, to determine new tracks, given that a 1,000-kilometer jump in measurements should not belong to the same track. .
- An aircraft feature has aircraft ID, flight ID, pilot name, and start time fields.
Output tracks will return the fields used as track identifiers, the count of features within a track (count), the start and end time of each track (start_date and end_date), the duration of the track in milliseconds (duration), and any other optional statistics (formatted as statisticstype_fieldname).
You can improve performance of the Reconstruct Tracks tool by doing one or more of the following:
- Set the extent environment so that you only analyze data of interest.
- Use the planar method instead of geodesic.
- Don't apply a buffer.
- Split your tracks using the Time Split, Time Boundary Split, and Distance Split parameters. Time Boundary Split will have the biggest performance gains.
- Use data that is local to where the analysis is being run.
This geoprocessing tool is powered by Spark. Analysis is completed on your desktop machine using multiple cores in parallel. See Considerations for GeoAnalytics Desktop tools to learn more about running analysis.
When running GeoAnalytics Desktop tools, the analysis is completed on your desktop machine. For optimal performance, data should be available on your desktop. If you are using a hosted feature layer, it is recommended that you use ArcGIS GeoAnalytics Server. If your data isn't local, it will take longer to run a tool. To use your ArcGIS GeoAnalytics Server to perform analysis, see GeoAnalytics Tools.
Similar analysis can also be completed using the following:
- The Points To Line tool in the Data Management toolbox.
Syntax
ReconstructTracks(input_layer, out_feature_class, track_fields, method, buffer_type, {buffer_field}, {buffer_expression}, {time_split}, {distance_split}, {time_boundary_split}, {time_boundary_reference}, {summary_fields})
Parameter | Explanation | Data Type |
input_layer | The points or polygons to be reconstructed to tracks. The input must be a time-enabled layer that represents an instant in time. | Feature Layer |
out_feature_class | A new feature class with the resulting tracks. | Feature Class |
track_fields [track_fields,...] | One or more fields that will be used to identify unique tracks. | Field |
method | Specifies the criteria that will be used to reconstruct tracks. If a buffer is used, method determines the type of buffer.
| String |
buffer_type | Specifies how the buffer distance will be defined.
| String |
buffer_field (Optional) | The field that will be used to buffer the input features. Field values are applied in the units of the spatial reference of the input unless you are using a geographic coordinate system, in which case they will be in meters. | Field |
buffer_expression (Optional) |
The expression that will be used to buffer input features. Fields must be numeric, and the expression can include [+ - * / ] operators and multiple fields. Calculated values are applied in the units of the spatial reference of the input unless you are using a geographic coordinate system, in which case they will be in meters. Use Arcade expressions such as as_kilometers($feature.distance) * 2 + as_meters(15). | Calculator Expression |
time_split (Optional) | Features that are farther apart in time than the time-split duration will be split into separate tracks. | Time Unit |
distance_split (Optional) | Features that are farther apart in distance than the distance split value will be split into separate tracks. | Linear Unit |
time_boundary_split (Optional) |
A time span to split your input data into for analysis. A time boundary allows you to analyze values within a defined time span. For example, if you use a time boundary of 1 day, and set the time boundary reference to January 1, 1980, tracks will be will be split at the beginning of every day. | Time Unit |
time_boundary_reference (Optional) |
The reference time used to split your input data into for analysis. Time boundaries will be created for the entire span of the data, and the reference time does not need to occur at the start. If no reference time is used, January 1, 1970, is used. | Date |
summary_fields [summary_fields,...] (Optional) | The statistics that will be calculated on specified fields.
| Value Table |
Code sample
The following Python window script demonstrates how to use the ReconstructTracks tool.
#-------------------------------------------------------------------------------
# Name: ReconstructTracks.py
# Description: Reconstruct hurricane points into hurricane tracks, where each location is buffered by the wind speed * 100
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/WeatherEvents.gdb"
# Set local variables
inFeatures = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Hurricanes/MapServer/0"
trackIdentifier = "EVENTID"
out = "HurricaneTracks"
bufferExpression = "WINDSPEED * 100"
statistics = [["PRESSURE", "MEAN"]]
# Execute Reconstruct Tracks
arcpy.gapro.ReconstructTracks(inFeatures, out, trackIdentifier,
"GEODESIC", "EXPRESSION", None,
bufferExpression, None, statistics)
Licensing information
- Basic: No
- Standard: No
- Advanced: Yes