Extract Rails From Point Cloud (3D Analyst)

Summary

Extracts rail track lines and center lines from classified railroad tracks in a LAS dataset, point cloud scene layer package, or I3S point cloud layer.

Usage

  • This tool requires the installation of deep learning frameworks. To set up your machine to use deep learning frameworks in ArcGIS Pro, see Install deep learning frameworks for ArcGIS.

  • This tool requires the rail points to be classified. The rail features are made from classified rail points. The LAS standard uses class 10 for rail, although custom classes can be specified. If more than one class is provided, each class is assumed to represent a different type of rail and will be processed separately to produce distinct output features. Although the rail extraction process can overcome noise, reducing errors in the classification of railway points will result in more accurate railway features.

  • The output rail lines and centerlines will have a CLASS_CODE field that indicates the point class that was used to generate the feature.

  • The presence of rail junctures, where switches join or split the railway into different tracks, will typically produce discontinuities in the output rails and centerlines.

  • While the tool can be run using the CPU, it is recommended that you use a CUDA-capable NVIDIA GPU for this operation. If multiple CUDA-capable GPUs are present, specify a GPU ID environment value of -1 to use all eligible GPUs.

Parameters

LabelExplanationData Type
Input Point Cloud

The input LAS dataset or point cloud scene layer containing the classified railway points.

LAS Dataset Layer; Scene Layer
Rail Class Codes

The class codes that will be used for rail points.

Long
Output Rail Lines

The output 3D rail lines that will be extracted from the point cloud.

Feature Class
Rail Standard
(Optional)

Specifies the rail standard that will be used. The standard describes the measurements of the track gauge and rail thickness. The specification will impact the algorithm that will be used for extracting the rail features.

  • US Standard 115REThe 115 lb United States rail standard defined by the American Railway Engineering and Maintenance-of-Way Association (AREMA) will be used. This is the default.
  • US Standard 132REThe 132 lb United States rail standard defined by AREMA will be used.
  • US Standard 141REThe 141 lb United States rail standard defined by AREMA will be used.
  • EU Standard UIC54The 54.77 kg European rail standard defined by the International Union of Railways will be used.
  • EU Standard UIC60The 60 kg European rail standard defined by the International Union of Railways will be used.
  • CustomA different standard will be used. When this option is specified, provide values for the track gauge and rail thickness parameters.
String
Output 3D Centerlines
(Optional)

The output 3D center line that represents the middle of the rail track.

Feature Class
Track Gauge
(Optional)

The track gauge that describes the inner distance between the two rails of a railway track. The default is 1435 millimeters, which corresponds to the US 115 RE standard, but this value will be updated to match the specified rail standard.

Linear Unit
Rail Thickness
(Optional)

The width of the top part of each rail. The default value is 66.675 millimeters, which corresponds to the US 115 RE standard, but this value will be updated to match the specified rail standard.

Linear Unit
Horizontal Smoothing Kernel Distance
(Optional)

The x,y distance that will be used to apply a weighted average-based smoothing function in the horizontal direction onto the output rail lines. This parameter will help to overcome the distortions of incomplete, misclassified, or noisy rail points. The default is 0.8 meters.

Linear Unit
Vertical Smoothing Kernel Distance
(Optional)

The z-distance that will be used to apply a weighted average-based smoothing function in the vertical direction onto the output rail lines. This parameter will help to overcome the distortions of incomplete, misclassified, or noisy rail points. The default is 10 meters.

Linear Unit
Horizontal Rail Tolerance
(Optional)

The distance that will be used in the x,y direction to identify points that belong to the same rail in a given track. The default is 10 centimeters.

Linear Unit
Vertical Rail Tolerance
(Optional)

The distance that will be used in the z-direction to identify points that belong to the same rail in a given track. The default is 3 centimeters.

Linear Unit
Centerline Alignment Tolerance
(Optional)

The tolerance distance that will be used to align the centerline feature between the rails of a given track. The default is 50 millimeters.

Linear Unit
Rail Crown Detection Radius
(Optional)

The search radius that will be used to identify continuous points that define the rail crown, which is the topmost portion of a given rail track. The default is 20 meters.

Linear Unit
Horizontal Simplification Tolerance
(Optional)

The distance that will be used to simplify the output rail line in the x,y direction. The horizontal position of the simplified rail will not deviate from the original by more than this amount. The default is 2 millimeters.

Linear Unit
Vertical Simplification Tolerance
(Optional)

The distance that will be used to simplify the output rail line in the z-direction. The height of the simplified rail will not deviate from the original by more than this amount. The default is 2 millimeters.

Linear Unit
Minimum Output Line Length
(Optional)

The minimum three-dimensional length that a detected line must have to be included in the output line features. Any detected line that is shorter than this length will be ignored. The default is 1 meter.

Linear Unit

arcpy.ddd.ExtractRailsFromPointCloud(in_point_cloud, class_codes, out_3d_lines, {rail_standard}, {out_3d_centerlines}, {track_gauge}, {rail_thickness}, {horizontal_smoothing_kernel_distance}, {vertical_smoothing_kernel_distance}, {horizontal_rail_tolerance}, {vertical_rail_tolerance}, {centerline_alignment_tolerance}, {rail_crown_detection_radius}, {horizontal_simplification_tolerance}, {vertical_simplification_tolerance}, {min_line_length})
NameExplanationData Type
in_point_cloud

The input LAS dataset or point cloud scene layer containing the classified railway points.

LAS Dataset Layer; Scene Layer
class_codes
[class_codes,...]

The class codes that will be used for rail points.

Long
out_3d_lines

The output 3D rail lines that will be extracted from the point cloud.

Feature Class
rail_standard
(Optional)

Specifies the rail standard that will be used. The standard describes the measurements of the track gauge and rail thickness. The specification will impact the algorithm that will be used for extracting the rail features.

  • US_115_REThe 115 lb United States rail standard defined by the American Railway Engineering and Maintenance-of-Way Association (AREMA) will be used. This is the default.
  • US_132_REThe 132 lb United States rail standard defined by AREMA will be used.
  • US_141_REThe 141 lb United States rail standard defined by AREMA will be used.
  • EU_UIC_54The 54.77 kg European rail standard defined by the International Union of Railways will be used.
  • EU_UIC_60The 60 kg European rail standard defined by the International Union of Railways will be used.
  • CUSTOMA different standard will be used. When this option is specified, provide values for the track gauge and rail thickness parameters.
String
out_3d_centerlines
(Optional)

The output 3D center line that represents the middle of the rail track.

Feature Class
track_gauge
(Optional)

The track gauge that describes the inner distance between the two rails of a railway track. The default is 1435 millimeters, which corresponds to the US 115 RE standard, but this value will be updated to match the specified rail standard.

Linear Unit
rail_thickness
(Optional)

The width of the top part of each rail. The default value is 66.675 millimeters, which corresponds to the US 115 RE standard, but this value will be updated to match the specified rail standard.

Linear Unit
horizontal_smoothing_kernel_distance
(Optional)

The x,y distance that will be used to apply a weighted average-based smoothing function in the horizontal direction onto the output rail lines. This parameter will help to overcome the distortions of incomplete, misclassified, or noisy rail points. The default is 0.8 meters.

Linear Unit
vertical_smoothing_kernel_distance
(Optional)

The z-distance that will be used to apply a weighted average-based smoothing function in the vertical direction onto the output rail lines. This parameter will help to overcome the distortions of incomplete, misclassified, or noisy rail points. The default is 10 meters.

Linear Unit
horizontal_rail_tolerance
(Optional)

The distance that will be used in the x,y direction to identify points that belong to the same rail in a given track. The default is 10 centimeters.

Linear Unit
vertical_rail_tolerance
(Optional)

The distance that will be used in the z-direction to identify points that belong to the same rail in a given track. The default is 3 centimeters.

Linear Unit
centerline_alignment_tolerance
(Optional)

The tolerance distance that will be used to align the centerline feature between the rails of a given track. The default is 50 millimeters.

Linear Unit
rail_crown_detection_radius
(Optional)

The search radius that will be used to identify continuous points that define the rail crown, which is the topmost portion of a given rail track. The default is 20 meters.

Linear Unit
horizontal_simplification_tolerance
(Optional)

The distance that will be used to simplify the output rail line in the x,y direction. The horizontal position of the simplified rail will not deviate from the original by more than this amount. The default is 2 millimeters.

Linear Unit
vertical_simplification_tolerance
(Optional)

The distance that will be used to simplify the output rail line in the z-direction. The height of the simplified rail will not deviate from the original by more than this amount. The default is 2 millimeters.

Linear Unit
min_line_length
(Optional)

The minimum three-dimensional length that a detected line must have to be included in the output line features. Any detected line that is shorter than this length will be ignored. The default is 1 meter.

Linear Unit

Code sample

ExtractRailsFromPointCloud example (Python window)

The following sample demonstrates the use of this tool in the Python window:

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.ExtractRailsFromPointCloud("Rail_Survey.lasd", 10, "RailTracks.shp", 
                                     out_3d_centerlines="RailCenterlines.shp")

Licensing information

  • Basic: Requires 3D Analyst
  • Standard: Requires 3D Analyst
  • Advanced: Requires 3D Analyst

Related topics