Skip To Content

Classify LAS Building

Summary

Classifies building rooftop points in aerial lidar data.

Illustration

Classification of building rooftop points.

Usage

  • The LAS data must have ground points classified with a class code value of 2. Consider using the Classify LAS Ground tool if ground points have not been classified. If ground points are assigned a different class code value, use the Change LAS Class Codes tool to reassign their values to 2.

  • LAS points from overlapping scans should be classified to obtain best results and avoid the misidentification of non-building lidar returns. If the LAS data being processed contains returns from overlapping scans that are not classified as such, consider using the Classify LAS Overlap tool to classify such points. Additionally, modify the value in the Average Point Spacing parameter to provide an estimate of the nominal point spacing outside of the regions of overlap.

  • LAS points with class code values of 0 and 1 will be evaluated to determine if they fit the minimum area specified for identifying building rooftops. Existing building classified points with a class code value of 6 will also be used to determine if adjacent points contribute to the same structure.

  • If small clusters of points that do not belong to buildings are erroneously classified, consider increasing the Minimum Area parameter to eliminate the inclusion of such points. Inversely, if buildings appear to have been missed by the tool, consider using a smaller value to obtain better results.

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

    Note:

    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.

Syntax

ClassifyLasBuilding_3d (in_las_dataset, {min_height}, min_area, {compute_stats}, {extent}, boundary, {process_entire_files}, point_spacing)
ParameterExplanationData Type
in_las_dataset

The LAS dataset to be classified.

LAS Dataset Layer
min_height
(Optional)

The height from the ground that defines the lowest point from which rooftop points will be identified.

Linear Unit
min_area

The smallest area of coplanar points that will be used to establish the presence of a building rooftop.

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

  • COMPUTE_STATSStatistics will be computed.
  • NO_COMPUTE_STATSStatistics will not be computed. This is the default.
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.

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

The average spacing of LAS points that will be used for establishing the presence of building roof tops. This value will default to the average spacing calculated for the LAS dataset.

Linear Unit

Code sample

ClassifyLasBuilding example 1 (Python window)

The following sample demonstrates the use of this tool in the Python window.

arcpy.env.workspace = 'C:/data'

arcpy.ClassifyLasBuilding_3d('Highland.lasd', minHeight='9 feet', 
                             minArea='30 Square Feet', compute_stats=True)
ClassifyLasBuilding example 2 (stand-alone script)

The following sample demonstrates the use of this tool in a stand-alone Python script.

'''****************************************************************************
       Name: Tile & Classify LAS Files
Description: Creates & classifies tiled LAS files.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las = arcpy.GetParameterAsText(1) # The LAS files that need to be tiled
out_folder = arcpy.GetParameterAsText(2) # folder for LAS files
basename = arcpy.GetParameterAsText(3) # basename for output files
out_lasd = arcpy.GetParameterAsText(4) # output LAS dataset


try:
    # Create temp LAS dataset to reference LAS files that will be tiled
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las, temp_lasd)
    arcpy.ddd.TileLas(temp_lasd, out_folder, basename, out_lasd, las_version=1.4, 
                      point_format=7, file_size=300)
    arcpy.management.Delete(temp_lasd)
    arcpy.ddd.ClassifyLasGround(out_lasd, method='AGGRESSIVE')
    arcpy.ddd.ClassifyLasBuilding(out_lasd, min_height='3 Meters', min_area='4 Meters')
    arcpy.ddd.ClassifyLasByHeight(out_lasd, height_classification=[(3, 6), (4,20), (5,70)],
                                  noise='All Noise', compute_stats='COMPUTE_STATS')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Licensing information

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

Related topics