Summary
Reclassifies lidar points based on their height from the ground surface.
Usage
This tool requires LAS points classified as ground using the class code values of either 2 or 8. If points that represent the ground were assigned a different class code value, consider using the Change LAS Class Codes tool to conform the class code definition to the LAS format specifications. Only LAS points with class code values of 0 or 1 will be reclassified.
Consider using this tool to classify vegetation in lidar data collected over remote areas with minimal presence of buildings.
Consider applying a processing extent to review the appropriateness of the designated Z-range values on a subset of LAS points. Once the reclassified region is deemed satisfactory, it can then be applied to a larger extent.
-
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
ClassifyLasByHeight_3d (in_las_dataset, ground_source, height_classification, {noise}, {compute_stats}, {extent}, boundary, {process_entire_files})
Parameter | Explanation | Data Type |
in_las_dataset | The LAS dataset that will be processed. Only LAS points with class code values of 0 and 1 will be evaluated. | LAS Dataset Layer |
ground_source | The source of ground measurements that will be used to determine height above ground.
| String |
height_classification [class_code, height_from_ground] | The class code value that will be assigned to LAS points that fall within the range of values derived from the specified height from ground. The order of entry influences the height ranges that are used to define the reclassification of LAS points. The first entry's Z-range will span from the ground surface to the specified height_from_ground value. The Z-range of subsequent entries will span from the upper limit of the preceding entry to its own height_from_ground value. | Value Table |
noise (Optional) | Indicates whether to reclassify points as noise based on their proximity from the ground. Noise artifacts in lidar data can be introduced by sensor errors and the inadvertent interception of aerial obstructions like birds in the path of the lidar pulse.
| String |
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 region for which LAS ground points will be evaluated. | Feature Layer |
process_entire_files (Optional) | Specify how the processing extent is applied.
| Boolean |
Code sample
ClassifyLasByHeight example 1 (Python window)
The following sample demonstrates the use of this tool in the Python window.
arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasByHeight_3d('lidar.lasd', 'Ground',
[[3, 5], [4, 17], [5, 120]], 'HIGH_NOISE')
ClassifyLasByHeight example 2 (stand-alone script)
The following sample demonstrates the use of this tool in a stand-alone Python script.
'''****************************************************************************
Name: Classify Vegetation Points
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
import exceptions, sys, traceback
# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
lasd = arcpy.GetParameterAsText(2)
extent = arcpy.GetParameter(3)
calcStats = arcpy.GetParameter(4)
try:
# Execute CreateLasDataset
arcpy.management.CreateLasDataset(inLas, lasd, folder_recursion=recursion)
# Execute ChangeLasClassCodes
arcpy.ddd.ClassifyLasByHeight(lasd, ground_source='GROUND',
height_classification=[[3, 5],
[4, 17],
[5, 120]],
noise='ALL_NOISE', compute_stats=calcStats,
extent=extent)
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Environments
Licensing information
- ArcGIS for Desktop Basic: Requires 3D Analyst
- ArcGIS for Desktop Standard: Requires 3D Analyst
- ArcGIS for Desktop Advanced: Requires 3D Analyst