Classify LAS By Height (3D Analyst)

Summary

Reclassifies lidar points based on their height from the ground surface.

Usage

  • This tool reclassifies LAS points with class code values of 0 or 1 based on their height from the ground surface created using LAS points with class code values of 2, 8, or both 2 and 8. The American Society for Photogrammetry and Remote Sensing defines the LAS format specifications with a definition for class code that assigns 2 for ground and 8 for model key in LAS versions prior to 1.4. Model key classification was traditionally used to identify a subset of ground points. At LAS version 1.4, the model key designation was made into a classification flag which can be applied to any class code, and the definition for a class code value of 8 was reserved for later use.

  • If the LAS data does not have any ground classified points, use the Classify LAS Ground tool. If the ground points use values other than 2 or 8, use the Change LAS Class Codes tool to reclassify the ground points accordingly.

  • Classifying points using height gradients from the ground surface can provide a useful way to visualize and filter the point cloud which can also aid the process of conducting more refined interactive classification. The tool defaults to classifying class codes 3, 4, and 5, which represent low, medium and high vegetation in the ASPRS specification for the LAS format.

  • 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.

Parameters

LabelExplanationData Type
Input 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

Specifies the source of ground measurements that will be used to determine height above ground.

  • All Ground PointsLAS points designated with the ground classification code value of 2 and model key code value of 8 will be used.
  • Model Key PointsOnly LAS points designated with the model key classification code value of 8 will be used.
String
Height Classification

The class code and maximum height from ground that will be used to reclassify LAS points. The order of the classes in the table will define the range of z-values that will be used to process the reclassification. The z-range of the first entry 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 Classification
(Optional)

Specifies whether and how points will be reclassified 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, such as birds, in the path of the lidar pulse.

  • Low and High NoiseBoth low and high noise will be classified.
  • High NoiseOnly points that are above the maximum height in the LAS classification table will be reclassified as high noise.
  • Low NoiseOnly points below the ground surface will be reclassified as noise. This option is only available when all ground points are used to define the ground surface.
  • NoneNo points will be reclassified as noise.
String
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.

  • Default—The extent will be based on the maximum extent of all participating inputs. This is the default.
  • Union of Inputs—The extent will be based on the maximum extent of all inputs.
  • Intersection of Inputs—The extent will be based on the minimum area common to all inputs.
  • Current Display Extent—The extent is equal to the visible display. The option is not available when there is no active map.
  • As Specified Below—The extent will be based on the minimum and maximum extent values specified.
  • Browse—The extent will be based on an existing dataset.
Extent
Process entire LAS files that intersect extent
(Optional)

Specifies how the processing extent will be applied.

  • Unchecked—Only LAS points that are within the processing extent will be evaluated. This is the default.
  • Checked—All points in the .las files that intersect the processing extent will be evaluated.
Boolean
Processing Boundary

A polygon feature that defines the region for which LAS ground points will be evaluated.

Feature Layer
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

Derived Output

LabelExplanationData Type
Updated Input LAS Dataset

The LAS dataset that was modified.

LAS Dataset Layer

arcpy.ddd.ClassifyLasByHeight(in_las_dataset, ground_source, height_classification, {noise}, {compute_stats}, {extent}, {process_entire_files}, boundary, {update_pyramid})
NameExplanationData 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

Specifies the source of ground measurements that will be used to determine height above ground.

  • GROUNDLAS points designated with the ground classification code value of 2 and model key code value of 8 will be used.
  • MODEL_KEYOnly LAS points designated with the model key classification code value of 8 will be used.
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 will be used to define the reclassification of LAS points. The z-range of the first entry 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)

Specifies whether and how points will be reclassified 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, such as birds, in the path of the lidar pulse.

  • ALL_NOISEBoth low and high noise will be classified.
  • HIGH_NOISEOnly points that are above the maximum height in the LAS classification table will be reclassified as high noise.
  • LOW_NOISEOnly points below the ground surface will be reclassified as noise. This option is only available when all ground points are used to define the ground surface.
  • NONENo points will be reclassified as noise.
String
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
process_entire_files
(Optional)

Specifies how the processing extent will be applied.

  • PROCESS_ENTIRE_FILESOnly LAS points that are within the processing extent will be evaluated. This is the default.
  • PROCESS_EXTENTAll points in the .las files that intersect the processing extent will be evaluated.
Boolean
boundary

A polygon feature that defines the region for which LAS ground points will be evaluated.

Feature Layer
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

Derived Output

NameExplanationData Type
out_las_dataset

The LAS dataset that was modified.

LAS Dataset Layer

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.ddd.ClassifyLasByHeight('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())

Licensing information

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

Related topics