Classify LAS Ground (3D Analyst)

Summary

Classifies ground points from LAS data.

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.

  • Only LAS points with class code values of 0, 1, or 2 can be assigned as ground points. If your 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.

  • Consider using the DEM Resolution parameter to generate faster results if the ground classified points will be used to generate a ground raster surface at a specific resolution. The performance gain is achieved by reducing the number of points assigned to the ground class code while maintaining the coverage necessary for the specified resolution.

  • When classifying LAS returns over a terrain with divergent slope characteristics, such as relatively flat areas alongside locations with steep slope profiles, consider running the tool once with the standard method and a second time with the aggressive detection method and the reuse ground option enabled. Apply a processing extent or specify a polygon boundary to limit this operation to only the region that is needed.

  • Locations with bridges and freeway on-ramps should be reviewed as they may be misclassified as ground.

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 hill tops, that may be ignored by the Standard Classification method. 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.
  • 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 ClassificationThis method detects ground areas with sharper reliefs, such as ridges and hill tops, that may be ignored by the STANDARD method. This method is best used in a second iteration of this tool with the reuse_ground parameter set to REUSE_GROUND. 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.
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, thereby 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 specified 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.

  • Default—The extent will be based on the maximum extent of all participating inputs. This is the default.
  • Union of Inputs—The extent will be based on the maximum extent of all inputs.
  • Intersection of Inputs—The extent will be based on the minimum area common to all inputs.
  • Current Display Extent—The extent is equal to the visible display. The option is not available when there is no active map.
  • As Specified Below—The extent will be based on the minimum and maximum extent values specified.
  • Browse—The extent will be based on an existing dataset.
Extent
Processing Boundary

A polygon feature that defines the area of interest 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 .las 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 is 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. This option should only be used if the results from the latest version are not suitable.
String

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})
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.
  • AGGRESSIVEThis method detects ground areas with sharper reliefs, such as ridges and hill tops, that may be ignored by the STANDARD method. This method is best used in a second iteration of this tool with the reuse_ground parameter set to REUSE_GROUND. 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.
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, thereby 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 specified 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

A polygon feature that defines the area of interest 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 .las 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 is 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. This option should only be used if the results from the latest version are not suitable.
String

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())

Licensing information

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

Related topics