Summary
Classifies ground points in lidar data.
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.
Consider applying a processing extent or boundary to review the results of the classification algorithm on a small area of the lidar data.
Locations with bridges and freeway on-ramps should be reviewed as they may be mis-classified 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) | Specify if existing ground points should be reclassified or reused.
Specify if existing ground points should be accepted or re-evaluated.
| Boolean |
dem_resolution (Optional) | Specifying a distance will result in only a subset of points being evaluated for classification as ground, thereby making the process faster. Consider using this option when needing a faster method for generating a DEM surface. 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) | Specify 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) | Specify how the processing extent is applied.
| Boolean |
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