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 consists 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 a dataset. This parameter ensures that the amount of ground points that are classified will 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.

  • Classifying model-key points will result in a subset of ground points being available for use as a substitute to the full-resolution ground points. This can be helpful when the ground sample density is higher than required for a given application. Unlike the DEM Resolution parameter, which provides a way for rapidly achieving ground classification, classifying model-key points will provide a more complete classification of ground points and have a subset that can be used in down-stream operations, such as the creation of an elevation raster surface. In LAS file version 1.0, the model-key points will be assigned a class code value of 8; in all other LAS file versions, the model-key points will remain as class 2 but will have the model-key classification flag assigned.

    Learn more about creating a ground elevation raster from lidar

  • Points flagged as withheld or overlap will be ignored. Withheld points are originally defined as to not be used for classification. Overlap points are ignored from processing because their inclusion can create dramatic fluctuations in point density, and they may also introduce noise related calibration issues between flight lines.

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 Classification option but not capture the type of sharp reliefs that would be captured by the Aggressive Classification 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 Classification 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 Classification option. A processing extent or boundary polygon must be provided to use this method.
  • Model Key ClassificationThis method classifies a subset of existing ground points as model key. For this reason, the ground points must already be classified. This option provides a faster way to achieve model key classification instead of reclassifying all the ground points. In LAS versions 1.0 to 1.3, the ground points that are identified as model key will be assigned a class code value of 7. LAS version 1.4 files will maintain the ground class code of 2 and have the model key classification flag assigned.
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
Classify model-key points
(Optional)

Specifies whether model-key points will be classified with the ground points.

When this parameter is checked, model-key points in LAS file version 1.0 will be assigned a class code value of 8, and model-key points in all other LAS file versions will remain with class code 2 but have the model-key classification flag assigned. This option is enforced when the Ground Detection Method parameter value is Model Key Classification.

  • Checked—Model-key points will be classified.
  • Unchecked—Model-key points will not be classified. This is the default.
Boolean
Classification Type
(Optional)

Specifies the method that will be used to classify model-key points.

  • Z ToleranceModel-key points will be selected to ensure that the TIN surface derived from the model-key points is within a given height range of the TIN surface derived from the complete set of ground points. This is the default.
  • Window SizeModel-key points will be derived using the window-size thinning method, where the data is divided into a grid whose resolution is set by the Window Size parameter value. Each grid will have one ground point selected based on the option specified for the Window Size Point Selection Method parameter.
String
Z Tolerance
(Optional)

The maximum height deviation that will be allowed between the TIN surface created from the model-key points and the TIN created from the complete set of ground points. The larger the parameter value is, the smaller the number of model-key points will be.

Linear Unit
Window Size
(Optional)

The resolution that will be used by the window size sub-sampling technique.

When the Classification Type parameter value is Z Tolerance, the window size will be used to ensure a minimal sample density is achieved which can avoid the creation of large gaps in the data that can cause issues for certain types of analysis. To ignore this process leave the parameter unspecified or provide a value that is less than or equal to 0.0.

Linear Unit
Window Size Point Selection Method
(Optional)

Specifies the height based criteria that will be used to select a subset of ground points when using the window size method. Each bin of the window-size sub-sampling technique will have one point. The point that corresponds with the selected method will be used in the detection of model-key points.

  • AverageThe point whose z-value is closest to the average of all points in the window size bin will be used. This is the default.
  • MaximumThe point with the highest z-value in the window size bin will be used.
  • MinimumThe point with the lowest z-value in the window size bin will be used.
String

Derived Output

LabelExplanationData Type
Output LAS Dataset

The LAS dataset that was modified. In LAS versions 1.0 to 1.3, the ground points that are identified as model key will be assigned a class code value of 7. LAS version 1.4 files will maintain the ground class code of 2 and have the model key classification flag assigned.

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}, {classify_key_points}, {classification_type}, {z_tolerance}, {window_size}, {window_size_method})
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 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 misclassify 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. A processing extent or boundary polygon must be provided to use this method.
  • MODEL_KEYThis method classifies model-key points from a subset of existing ground points. This option provides a faster way to classify model-key points for datasets where ground points are already classified. In LAS file versions 1.0 to 1.3, the ground points that are identified as model key will be assigned a class code value of 7. LAS version 1.4 files will maintain the ground class code of 2 and have the model key classification flag assigned.
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
classify_key_points
(Optional)

Specifies whether model-key points will be classified with the ground points.

When this parameter is set to CLASSIFY_KEY_POINTS, model-key points in LAS file version 1.0 will be assigned a class code value of 8, and model-key points in all other LAS file versions will remain with class code 2 but have the model-key classification flag assigned. This option is enforced when the method parameter value is CLASSIFY_MODEL_KEY_POINTS.

  • CLASSIFY_KEY_POINTSModel-key points will be classified.
  • NO_CLASSIFY_KEY_POINTSModel-key points will not be classified. This is the default.
Boolean
classification_type
(Optional)

Specifies the method that will be used to classify model-key points.

  • Z_TOLERANCEModel-key points will be the minimum number of points required to ensure that the TIN surface derived from the model-key points is within a given height range of the TIN surface derived from the complete set of ground points. This is the default.
  • WINDOW_SIZEModel-key points will be derived using the window-size thinning method, where the data is divided into a grid whose resolution is set by the window_size_ parameter value. Each grid will have one ground point selected based on the option specified for the window_size_method parameter.
String
z_tolerance
(Optional)

The maximum height deviation that will be allowed between the TIN surface created from the model-key points and the TIN created from the complete set of ground points. The larger the parameter value is, the smaller the number of model-key points will be.

Linear Unit
window_size
(Optional)

The resolution that will be used by the window size sub-sampling technique.

When the classification_type parameter value is Z_TOLERANCE, the window size will be used to ensure a minimal sample density is achieved which can avoid the creation of large gaps in the data that can cause issues for certain types of analysis. To ignore this process leave the parameter unspecified or provide a value that is less than or equal to 0.0.

Linear Unit
window_size_method
(Optional)

Specifies the height based criteria that will be used to select a subset of ground points when using the window size method. Each bin of the window-size sub-sampling technique will have one point. The point that corresponds with the selected method will be used in the detection of model-key points.

  • AVERAGEThe point whose z-value is closest to the average of all points in the window size bin will be used. This is the default.
  • MAXIMUMThe point with the highest z-value in the window size bin will be used.
  • MINIMUMThe point with the lowest z-value in the window size bin will be used.
String

Derived Output

NameExplanationData Type
out_las_dataset

The LAS dataset that was modified. In LAS versions 1.0 to 1.3, the ground points that are identified as model key will be assigned a class code value of 7. LAS version 1.4 files will maintain the ground class code of 2 and have the model key classification flag assigned.

LAS Dataset Layer

Code sample

ClassifyLasGround example 1 (Python window)

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

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.ClassifyLasGround('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