Classify LAS Ground (3D Analyst)

Summary

Classifies ground points from LAS data.

Learn more about ground classification

Illustration

Classify LAS Ground tool illustration

Usage

  • This tool requires the input LAS dataset to have a projected coordinate system. Data stored in a geographic coordinate system can be reprojected using the Extract LAS tool with a projected coordinate system specified in the Output Coordinate System environment setting. If the projected coordinate system is based on a different datum, a datum transformation should also be specified.

  • Only LAS points with class code values of 0, 1, or 2 can be assigned as ground points. If the LAS files use different class code values to represent unclassified or ground measurements, use the Change LAS Class Codes tool to reassign them accordingly. The classification process also ignores points assigned with the overlap or withheld classification flags.

  • The Standard Classification method typically provides sufficient detection of ground points for most datasets. If the ground points that were detected included many non-ground points, consider using the Conservative Classification method to minimize such errors. Inversely, if the data consistes of rugged terrain with sharp slope characteristics that may be partially obscured by vegetation, consider using the Aggressive Classification method to capture more ground points. If using this option still misses some ridges, delineate the areas that can be improved by its spatial extent or a polygon boundary, and run the tool again with the Recover Ridges option.

  • Review locations with bridges and freeway on-ramps, as they may be misclassified as ground. To correct these locations, apply a processing extent or boundary to isolate the misclassified region along with some of its surrounding terrain, and run the tool again. The region that is isolated should try to avoid including the portion of the bridge or on-ramp that meets the ground surface.

  • Use the DEM Resolution parameter if you need to obtain ground classification faster than the normal processing time for your dataset. This parameter ensures the amount of ground points that are classified would be sufficient for generating a ground raster surface of the specified resolution, but the number of ground classified points will be less than what would otherwise be detected.

    Learn more about creating a ground elevation raster from lidar.

Parameters

LabelExplanationData Type
Input LAS Dataset

The LAS dataset that will be processed. Only the last return of LAS points with class code values of 0, 1, and 2 will be evaluated.

LAS Dataset Layer
Ground Detection Method

Specifies the method that will be used to detect ground points.

  • Standard ClassificationThis method has a tolerance for slope variation that allows it to capture gradual undulations in the ground's topography that would typically be missed by the conservative option but not capture the type of sharp reliefs that would be captured by the aggressive option. This is the default.
  • Conservative Classification When compared to other options, this method uses a tighter restriction on the variation of the ground's slope that allows it to differentiate the ground from low-lying vegetation such as grass and shrubbery. It is best suited for topography with minimal curvature.
  • Aggressive Classification This method detects ground areas with sharper reliefs, such as ridges and hilltops, that may be ignored by the standard option. This method is best used in a second iteration of this tool with the Reuse existing ground parameter checked. Avoid using this method in urban areas or flat, rural areas, as it may result in the misclassification of taller objects—such as utility towers, vegetation, and portions of buildings—as ground.
  • Recover RidgesThis method detects ridges that may be undetected by the aggressive method. A processing extent or boundary polygon must be provided to use this method.
String
Reuse existing ground
(Optional)

Specifies whether existing ground points will be reclassified or reused.

  • Unchecked—Existing ground points will be reclassified. Points that are not found to be a part of the ground will be reassigned a class code value of 1, which represents unclassified points. This is the default.
  • Checked—Existing ground points will be accepted and reused without scrutiny and contribute to the determination of unclassified points.
Boolean
DEM Resolution
(Optional)

A distance that will result in only a subset of points being evaluated for classification as ground, making the process faster. Consider using this parameter when a faster method for generating a DEM surface is needed. The minimum distance is 0.3 meters, but the provided distance must be at least 1.5 times the average point spacing of the lidar data for this process to take effect.

Linear Unit
Compute statistics
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • Checked—Statistics will be computed. This is the default.
  • Unchecked—Statistics will not be computed.
Boolean
Processing Extent
(Optional)

The extent of the data that will be evaluated.

  • Current Display Extent Map View—The extent will be based on the active map or scene.
  • Draw Extent Square and Finish—The extent will be based on a rectangle drawn on the map or scene.
  • Extent of a Layer Layer—The extent will be based on an active map layer. Choose an available layer or use the Extent of data in all layers option. Each map layer has the following options:

    • All Features Select All—The extent of all features.
    • Selected Features Area from Selected Features—The extent of the selected features.
    • Visible Features Extent Indicator—The extent of visible features.

  • Browse Browse—The extent will be based on a dataset.
  • Intersection of Inputs Intersect—The extent will be the intersecting extent of all inputs.
  • Union of Inputs Union—The extent will be the combined extent of all inputs.
  • Clipboard Paste—The extent can be copied to and from the clipboard.
    • Copy Extent Copy—Copies the extent and coordinate system to the clipboard.
    • Paste Extent Paste—Pastes the extent and coordinate system from the clipboard. If the clipboard does not include a coordinate system, the extent will use the map’s coordinate system.
  • Reset Extent Reset—The extent will be reset to the default value.

When coordinates are manually provided, the coordinates must be numeric values and in the active map's coordinate system. The map may use different display units than the provided coordinates. Use a negative value sign for south and west coordinates.

Extent
Processing Boundary

The polygon feature or features that will define the area to be processed.

Feature Layer
Process entire LAS files that intersect extent
(Optional)

Specifies how the area of interest will be used in determining how .las files will be processed. The area of interest is defined by the Processing Extent parameter value, the Processing Boundary parameter value, or a combination of both.

  • Unchecked—Only LAS points that intersect the area of interest will be processed. This is the default.
  • Checked—If any portion of a .las file intersects the area of interest, all the points in that file, including those outside the area of interest, will be processed.
Boolean
Update pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • Checked—The LAS dataset pyramid will be updated. This is the default.
  • Unchecked—The LAS dataset pyramid will not be updated.
Boolean
Detection Algorithm
(Optional)

Specifies the version of the ground detection algorithm that will be used to classify the ground points.

  • LatestThe most recent version of the ground detection algorithm will be used. This option improves the handling of noise and outlier points, especially for photogrammetrically derived point clouds. It also produces better results and faster performance in most cases. This is the default.
  • First GenerationThe initial version of the ground detection algorithm will be used. Use this option only when the results from the latest version are not suitable.
String
Classify low-noise points
(Optional)

Specifies whether points below a given distance beneath the ground will be classified as low noise. The distance at which noise points are identified is based on the Minimum Depth Below Ground parameter value. Low-noise points are assigned a class code value of 7.

  • Checked—Low-noise points will be classified.
  • Unchecked—Low-noise points will not be classified. This is the default.
Boolean
Minimum Depth Below Ground
(Optional)

The distance below the ground that will be used to classify low-noise points. The ground will be defined by a triangulated surface created from ground-classified points. All points with class codes 0 or 1 that are below the ground by the height provided in this parameter will be assigned a class code value of 7.

Linear Unit
Preserve existing low noise
(Optional)

Specifies whether existing low-noise points with class code 7 will be preserved or reclassified. If low-noise points are reclassified, any points that are not below the ground by at least the distance provided for the Minimum Depth Below Ground parameter value will be assigned a class code value of 1.

  • Checked—Existing low-noise points will be preserved. This is the default.
  • Unchecked—Existing low-noise points will be reclassified.
Boolean
Classify high-noise points
(Optional)

Specifies whether points above a given distance from the ground will be classified as high noise. The distance at which noise points are identified is based on the Minimum Height Above Ground parameter value. High-noise points are assigned a class code value of 18.

  • Checked—High-noise points will be classified.
  • Unchecked—High-noise points will not be classified. This is the default.
Boolean
Minimum Height Above Ground
(Optional)

The distance above the ground that will be used to classify high-noise points. The ground will be defined by a triangulated surface created from ground-classified points. All points with class codes 0 or 1 that are above the ground by the height provided in this parameter will be assigned a class code value of 18.

Linear Unit
Preserve existing high noise
(Optional)

Specifies whether existing high-noise points with class code 18 will be preserved or reclassified. If high-noise points are reclassified, any points that are not above the ground by at least the distance provided for the Minimum Height Above Ground parameter will be assigned a class code value of 1.

  • Checked—Existing high-noise points will be preserved. This is the default.
  • Unchecked—Existing high-noise points will be reclassified.
Boolean

Derived Output

LabelExplanationData Type
Output LAS Dataset

The LAS dataset that was modified.

LAS Dataset Layer

arcpy.ddd.ClassifyLasGround(in_las_dataset, method, {reuse_ground}, {dem_resolution}, {compute_stats}, {extent}, boundary, {process_entire_files}, {update_pyramid}, {algorithm}, {classify_low_noise}, {minimum_depth_below_ground}, {preserve_low_noise}, {classify_high_noise}, {minimum_height_above_ground}, {preserve_high_noise})
NameExplanationData Type
in_las_dataset

The LAS dataset that will be processed. Only the last return of LAS points with class code values of 0, 1, and 2 will be evaluated.

LAS Dataset Layer
method

Specifies the method that will be used to detect ground points.

  • STANDARDThis method has a tolerance for slope variation that allows it to capture gradual undulations in the ground's topography that would typically be missed by the conservative option but not capture the type of sharp reliefs that would be captured by the aggressive option. This is the default.
  • CONSERVATIVE When compared to other options, this method uses a tighter restriction on the variation of the ground's slope that allows it to differentiate the ground from low-lying vegetation such as grass and shrubbery. It is best suited for topography with minimal curvature.
  • AGGRESSIVE This method detects ground areas with sharper reliefs, such as ridges and hilltops, that may be ignored by the standard option. This method is best used in a second iteration of this tool with the Reuse existing ground parameter checked. Avoid using this method in urban areas or flat, rural areas, as it may result in the misclassification of taller objects—such as utility towers, vegetation, and portions of buildings—as ground.
  • RECOVER_RIDGESThis method detects ridges that may be undetected by the aggressive method. A processing extent or boundary polygon must be provided to use this method.

Specifies the method that will be used to detect ground points.

  • STANDARDThis method typically offers the best results for most landscapes, as it has a tolerance for slope variation that allows it to detect the ground on a broad variety of landscapes. It will capture more ground points than the conservative option but may miss ground points on terrains with steep slope characteristics. This is the default.
  • CONSERVATIVE When compared to other options, this method uses a tighter restriction on the variation of the ground's slope that allows it to differentiate the ground from low-lying vegetation such as grass and shrubbery. It is best suited for topography with minimal curvature.
  • AGGRESSIVEThis method is best suited for ground detection over rugged terrain. Avoid using this method in terrain that contains relatively flat slope profiles as it may mis-classify low vegetation points and human constructed objects as ground.
  • RECOVER_RIDGESThis method detects ground points along ridges that were undetected by a preceding classification. It is intended for use in isolated areas where ground points on rugged terrain were not adequately detected. For this reason, a processing extent or boundary polygon must be provided.
String
reuse_ground
(Optional)

Specifies whether existing ground points will be reclassified or reused.

  • RECLASSIFY_GROUND Existing ground points will be reclassified. Points that are not found to be a part of the ground will be reassigned a class code value of 1, which represents unclassified points. This is the default.
  • REUSE_GROUND Existing ground points will be accepted and reused without scrutiny and contribute to the determination of unclassified points.
Boolean
dem_resolution
(Optional)

A distance that will result in only a subset of points being evaluated for classification as ground, making the process faster. Consider using this parameter when a faster method for generating a DEM surface is needed. The minimum distance is 0.3 meters, but the provided distance must be at least 1.5 times the average point spacing of the lidar data for this process to take effect.

Linear Unit
compute_stats
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • COMPUTE_STATSStatistics will be computed. This is the default.
  • NO_COMPUTE_STATSStatistics will not be computed.
Boolean
extent
(Optional)

The extent of the data that will be evaluated.

  • MAXOF—The maximum extent of all inputs will be used.
  • MINOF—The minimum area common to all inputs will be used.
  • DISPLAY—The extent is equal to the visible display.
  • Layer name—The extent of the specified layer will be used.
  • Extent object—The extent of the specified object will be used.
  • Space delimited string of coordinates—The extent of the specified string will be used. Coordinates are expressed in the order of x-min, y-min, x-max, y-max.
Extent
boundary

The polygon feature or features that will define the area to be processed.

Feature Layer
process_entire_files
(Optional)

Specifies how the processing extent will be applied.

  • PROCESS_EXTENTOnly LAS points that intersect the area of interest will be processed. This is the default.
  • PROCESS_ENTIRE_FILESIf any portion of a .las file intersects the area of interest, all the points in that file, including those outside the area of interest, will be processed.
Boolean
update_pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • UPDATE_PYRAMIDThe LAS dataset pyramid will be updated. This is the default.
  • NO_UPDATE_PYRAMIDThe LAS dataset pyramid will not be updated.
Boolean
algorithm
(Optional)

Specifies the version of the ground detection algorithm that will be used to classify the ground points.

  • LATESTThe most recent version of the ground detection algorithm will be used. This option improves the handling of noise and outlier points, especially for photogrammetrically derived point clouds. It also produces better results and faster performance in most cases. This is the default.
  • FIRSTThe initial version of the ground detection algorithm will be used. Use this option only when the results from the latest version are not suitable.
String
classify_low_noise
(Optional)

Specifies whether points below a given distance beneath the ground will be classified as low noise. The distance at which noise points are identified is based on the minimum_depth_below_ground parameter value. Low-noise points are assigned a class code value of 7.

  • CLASSIFY_LOW_NOISELow-noise points will be classified.
  • NO_CLASSIFY_LOW_NOISELow-noise points will not be classified. This is the default.
Boolean
minimum_depth_below_ground
(Optional)

The distance below the ground that will be used to classify low-noise points. The ground will be defined by a triangulated surface created from ground-classified points. All points with class codes 0 or 1 that are below the ground by the height provided in this parameter will be assigned a class code value of 7.

Linear Unit
preserve_low_noise
(Optional)

Specifies whether existing low noise points with class code 7 will be preserved or reclassified. If low-noise points are reclassified, any points that are not below the ground by at least the distance provided for the minimum_depth_below_ground parameter value will be assigned a class code value of 1.

  • PRESERVE_LOW_NOISEExisting low-noise points will be preserved. This is the default.
  • RECLASSIFY_LOW_NOISEExisting low-noise points will be reclassified.
Boolean
classify_high_noise
(Optional)

Specifies whether points above a given distance from the ground will be classified as high noise. The distance at which noise points are identified is based on the minimum_height_above_ground parameter value. High-noise points are assigned a class code value of 18.

  • CLASSIFY_HIGH_NOISEHigh-noise points will be classified.
  • NO_CLASSIFY_HIGH_NOISEHigh-noise points will not be classified. This is the default.
Boolean
minimum_height_above_ground
(Optional)

The distance above the ground that will be used to classify high-noise points. The ground will be defined by a triangulated surface created from ground-classified points. All points with class codes 0 or 1 that are above the ground by the height provided in this parameter will be assigned a class code value of 18.

Linear Unit
preserve_high_noise
(Optional)

Specifies whether existing high-noise points with class code 18 will be preserved or reclassified. If high-noise points are reclassified, any points that are not above the ground by at least the distance provided for the minimum_height_above_ground parameter will be assigned a class code value of 1.

  • PRESERVE_HIGH_NOISEExisting high-noise points will be preserved. This is the default.
  • RECLASSIFY_HIGH_NOISEExisting high-noise points will be reclassified.
Boolean

Derived Output

NameExplanationData Type
out_las_dataset

The LAS dataset that was modified.

LAS Dataset Layer

Code sample

ClassifyLasGround example 1 (Python window)

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

arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasGround_3d('metro.lasd', 'CONSERVATIVE', 
                           boundary='study_area.shp', 
                           process_entire_files='PROCESS_ENTIRE_FILES')
ClassifyLasGround example 2 (stand-alone script)

The following sample demonstrates the use of this tool in a stand-alone Python script:

'''****************************************************************************
Name:        Classify Ground & Vegetation in Forest Environment
Description: Classify points representing vegetation with LAS class code values
             of 3, 4, and 5. The code is designed for use as a script tool.
****************************************************************************'''
# Import system modules
import arcpy

# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
lasd = arcpy.GetParameterAsText(2)

try:
    arcpy.CheckOutExtension('3D')
    # Execute CreateLasDataset
    arcpy.management.CreateLasDataset(inLas, lasd, folder_recursion=recursion)
    # Make an initial pass of ground classifier
    arcpy.ddd.ClassifyLasGround(lasd, method="Conservative")
    # Make a secondary pass to capture ridges
    arcpy.ddd.ClassifyLasGround(lasd, method="Aggressive", 
                                reuse_ground="REUSE_GROUND")
    # Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, ground_source='GROUND', 
                                  height_classification=[[3, 5], 
                                                         [4, 17], 
                                                         [5, 120]], 
                                  noise='HIGH_NOISE', compute_stats="COMPUTE_STATS")
    arcpy.CheckInExtension('3D')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Related topics