Skip To Content

Classify LAS Ground


Classifies ground points in aerial lidar data.


Classify LAS Ground


  • Only the last return of LAS points with class code values of 0, 1, or 2 will be considered for reclassification as ground. If your LAS files use different class code values to represent unclassified or ground measurements, consider using the Change LAS Class Codes tool to reassign them accordingly. The classification process will also ignore points that are assigned with either the overlap or noise classification flag.

  • If the ground classification is being done solely to create a ground raster surface of a specific resolution, consider using the DEM Resolution parameter with the desired raster resolution to create the requisite classification result for interpolating the surface.

  • When the ground has regions with widely divergent slope profiles, such as relatively flat areas alongside locations with steep slope profiles, consider running the ground classifier again with the aggressive detection method and the reuse ground option enabled. Apply a processing extent or specify a polygon boundary to review the results of the classification algorithm on a small area of the LAS data.

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

  • The LAS format supports the classification of each point based on the specifications defined by the American Society for Photogrammetry and Remote Sensing (ASPRS). The ArcGIS platform applies the classification scheme specified for LAS file version 1.4:

    Classification Value Classification Type


    Never Classified






    Low Vegetation


    Medium Vegetation


    High Vegetation




    Low Noise


    Model Key / Reserved






    Road Surface


    Overlap / Reserved


    Wire – Guard


    Wire – Conductor


    Transmission Tower


    Wire – Connector


    Bridge Deck


    High Noise

    19 – 63

    Reserved for ASPRS Definition (LAS 1.1 to 1.3 support up to class code 31)

    32 – 255

    User Definable (Only supported in LAS 1.0 and certain versions of 1.4)


    While the bulk of new class code assignments introduced with LAS 1.4 were previously designated as Reserved, class codes 8 and 12 were changed from Model Key and Overlap to Reserved.


ClassifyLasGround_3d (in_las_dataset, method, {reuse_ground}, {dem_resolution}, {compute_stats}, {extent}, boundary, {process_entire_files})
ParameterExplanationData Type

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

LAS Dataset Layer

The method used for detecting 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 method is the default.
  • CONSERVATIVE When compared to other options, this method employs a tighter restriction on the variation of the ground's slope, which 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 pass 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 higher objects—such as utility towers, vegetation, and portions of buildings—as ground.

Specifies if existing ground points should 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 re-assigned a class code value of 1, which represents unclassified points. This is the default.
  • REUSE_GROUND Existing ground points will be accepted without scrutiny and contribute to the determination of unclassified points.

Specifies 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 option 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

Specifies whether statistics should be computed for the LAS files referenced by the LAS dataset. The presence of statistics allows the LAS dataset layer's filtering and symbology options to only show LAS attribute values that exist in the LAS files.

  • COMPUTE_STATSStatistics will be computed.
  • NO_COMPUTE_STATSStatistics will not be computed. This is the default.

Specifies the extent of the data that will be evaluated by this tool.


A polygon feature that defines the area of interest that will be processed by this tool.

Feature Layer

Specifies how the processing extent is 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.

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', 
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)

    # Execute CreateLasDataset, 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", 
    # Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, ground_source='GROUND', 
                                  height_classification=[[3, 5], 
                                                         [4, 17], 
                                                         [5, 120]], 
                                  noise='HIGH_NOISE', compute_stats="COMPUTE_STATS")

except arcpy.ExecuteError:

Licensing information

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

Related topics