Summary
Classifies ground points in aerial lidar data.
Illustration

Usage
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 0
Never Classified
1
Unassigned
2
Ground
3
Low Vegetation
4
Medium Vegetation
5
High Vegetation
6
Building
7
Low Noise
8
Model Key / Reserved
9
Water
10
Rail
11
Road Surface
12
Overlap / Reserved
13
Wire – Guard
14
Wire – Conductor
15
Transmission Tower
16
Wire – Connector
17
Bridge Deck
18
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)
Syntax
ClassifyLasGround_3d (in_las_dataset, method, {reuse_ground}, {dem_resolution}, {compute_stats}, {extent}, boundary, {process_entire_files})
Parameter | Explanation | Data Type |
in_las_dataset | 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 |
method | The method used for detecting ground points.
| String |
reuse_ground (Optional) | Specifies if existing ground points should be reclassified or reused.
| Boolean |
dem_resolution (Optional) | 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 |
compute_stats (Optional) | 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.
| Boolean |
extent (Optional) | Specifies the extent of the data that will be evaluated by this tool. | Extent |
boundary | A polygon feature that defines the area of interest that will be processed by this tool. | Feature Layer |
process_entire_files (Optional) | Specifies how the processing extent is applied.
| Boolean |
Derived Output
Name | Explanation | Data 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())
Environments
Licensing information
- ArcGIS Desktop Basic: Requires 3D Analyst
- ArcGIS Desktop Standard: Requires 3D Analyst
- ArcGIS Desktop Advanced: Requires 3D Analyst