Classify LAS Building (3D Analyst)

Summary

Classifies building rooftops and sides in LAS data.

Illustration

Classify LAS Building tool illustration

Usage

  • Points representing walls, vertical facades, and small rooftop features—such as dormers and chimneys—may not be included in the building classification. If such points are necessary, consider running the tool with the options for classifying points that are above and below the roof.

  • The LAS data must have classified ground points before you can classify building rooftop points. Consider using the Classify LAS Ground tool if ground points have not been classified. The ground points must have a class code value of 2. If ground points have a class code value other than 2, use the Change LAS Class Codes tool to reassign the class code accordingly.

  • LAS points with class code values of 0, 1, and 6 will be evaluated to determine if they fit the characteristics of building rooftops. Points classified as buildings that do not meet this criteria will be reassigned to a class code value of 1 unless the option to reuse existing building classified points is specified.

  • The Method parameter is not used when the Is photogrammetric data option is specified.

Parameters

LabelExplanationData Type
Input LAS Dataset

The LAS dataset to be classified.

LAS Dataset Layer
Minimum Rooftop Height
(Optional)

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

Linear Unit
Minimum Area

The smallest area of the building rooftop.

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

  • Current Display Extent Current Display Extent—The extent will be based on the active map or scene. This option is only available when there is an active map.
  • Draw Extent Draw Extent—The extent will be based on a rectangle drawn on the map or scene. This option will create a feature class in the project geodatabase and add a layer to the map. The feature class will have the same coordinate system as the map.
    Note:

    This option is not available in the Environments dialog box. It is only available from a tool parameter with an extent data type or from the Environments tab on a tool dialog box.

    Note:

    When the Enable and disable editing from the Edit tab editing option is checked, you must enable editing on the Edit ribbon tab to draw the extent.

  • Extent of a Layer Layer—The extent will be based on an active map layer. Use the drop-down list to choose an available layer or use the Extent of data in all layers option to get the combined extent of all active map layers, excluding the basemap. This option is only available when there is an active map with layers.

    Each map layer has the following options:

    • All Features Select All—The extent of all features in the layer.
    • Selected Features Area from Selected Features—The extent of the selected features in the layer.
    • Visible Features Extent Indicator—The extent of visible features in the layer.
      Note:

      The extents from the Selected Features Area from Selected Features and Visible Features Extent Indicator options are only available for feature layers.

  • Browse Browse—The extent will be based on an existing dataset.
  • Intersection of Inputs Intersect—The extent will be based on the minimum or intersecting extent of all inputs. If no inputs overlap, a null extent with all zeros will result.
  • Union of Inputs Union—The extent will be based on the maximum or combined extent of all inputs.
  • Clipboard Paste—The extent can be copied to and from the clipboard.
    • Copy Extent Copy—Copies the extent coordinates and coordinate system to the clipboard.
    • Paste Extent Paste—Pastes the extent coordinates and, optionally, the coordinate system from the clipboard. If the clipboard values do not include a coordinate system, the extent will use the map’s coordinate system.
    Note:

    The extent coordinates are copied to and pasted from the clipboard using the same formatting and order as the ArcPy Extent object: x-min, y-min, x-max, y-max, and the spatial reference.

  • Reset Extent Reset—The extent will be reset to the default value.
  • Manually entered coordinates—The coordinates must be numeric values and in the active map's coordinate system.
    Caution:

    The map may use different display units than the entered coordinates. The use of a cardinal direction (N, S, E, W) is not supported. Use a negative value sign for south and west coordinates.

Extent
Processing Boundary

A polygon feature that will define the area of interest to be processed.

Feature Layer
Process entire LAS files that intersect extent
(Optional)

Specifies how the area of interest will be used in determining how .las files will be processed. The area of interest is defined by the Processing Extent parameter value, the Processing Boundary parameter value, or a combination of both.

  • Unchecked—Only LAS points that intersect the area of interest will be processed. This is the default.
  • Checked—If any portion of a .las file intersects the area of interest, all the points in that file, including those outside the area of interest, will be processed.
Boolean
Average Point Spacing

The average spacing of LAS points. This parameter is no longer used.

Linear Unit
Reuse existing building classified points
(Optional)

Specifies whether the existing building classified points will be reused or reevaluated.

  • Unchecked—Existing building classified points will be reevaluated to fit the criteria for plane detection, and points that do not fit the specified area and height will be assigned a value of 1. This is the default.
  • Checked—Existing building classified points will contribute to the plane detection process but will not be reclassified in the event they do not meet the criteria specified in the tool's execution. Use this option if the existing classification is necessary.
Boolean
Is photogrammetric data
(Optional)

Specifies whether the points in the .las file were derived using a photogrammetric technique.

  • Unchecked—The points in the .las file were obtained from a lidar survey, not from a photogrammetric technique for producing point clouds. This is the default.
  • Checked—The points in the .las file were obtained using a photogrammetric technique for producing point clouds from overlapping imagery.
Boolean
Classification Method
(Optional)

Specifies the classification method that will be used.

  • AggressivePoints that fit the planar rooftop characteristics with a relatively high tolerance for outliers will be detected. Use this method if the points are not well calibrated.
  • StandardPoints that fit the planar rooftop characteristics with a relatively moderate tolerance for irregular points will be detected. This is the default
  • ConservativePoints that fit the planar rooftop characteristics with a relatively low tolerance for irregular points will be detected. Use this method if the building points are co-planar with points from objects that are not buildings.
String
Classify points above the roof
(Optional)

Specifies whether points above the planes detected for the roof will be classified.

  • Unchecked—Points detected above the planes will not be classified. This is the default.
  • Checked—Points detected above the planes will be classified.
Boolean
Maximum Height Above Roof
(Optional)

The maximum height of the points above the building rooftop that will be classified to the value designated in the Above Roof Class Code parameter.

Linear Unit
Above Roof Class Code
(Optional)

The class code that will be assigned to points above the roof.

Long
Classify points below the roof
(Optional)

Specifies whether points between the roof and the ground will be classified.

  • Unchecked—Points between the roof and the ground will not be classified. This is the default.
  • Checked—Points between the roof and the ground will be classified.
Boolean
Below Roof Class Code
(Optional)

The class code that will be assigned to points between the ground and the roof.

Long
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
Derived LAS Dataset

The LAS dataset that is classified for building rooftops.

LAS Dataset Layer

arcpy.ddd.ClassifyLasBuilding(in_las_dataset, {min_height}, min_area, {compute_stats}, {extent}, boundary, {process_entire_files}, point_spacing, {reuse_building}, {photogrammetric_data}, {method}, {classify_above_roof}, {above_roof_height}, {above_roof_code}, {classify_below_roof}, {below_roof_code}, {update_pyramid})
NameExplanationData 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 the building rooftop.

Areal Unit
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
boundary

A polygon feature that will define the area of interest to be processed.

Feature Layer
process_entire_files
(Optional)

Specifies how the processing extent will be 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 file, including those outside the area of interest, will be processed.
Boolean
point_spacing

The average spacing of LAS points. This parameter is no longer used.

Linear Unit
reuse_building
(Optional)

Specifies whether the existing building classified points will be reused or reevaluated.

Specifies whether the existing building classified points will be reused or reevaluated.

  • RECLASSIFY_BUILDINGExisting building classified points will be reevaluated to fit the criteria for plane detection, and points that do not fit the specified area and height will be assigned a value of 1. This is the default.
  • REUSE_BUILDINGExisting building classified points will contribute to the plane detection process but will not be reclassified in the event they do not meet the criteria specified in the tool's execution. Use this option if the existing classification is necessary.
Boolean
photogrammetric_data
(Optional)

Specifies whether the points in the .las file were derived using a photogrammetric technique.

Specifies whether the points in the .las file were derived using a photogrammetric technique.

  • NOT_PHOTOGRAMMETRIC_DATAThe points in the .las file were obtained from a lidar survey, not from a photogrammetric technique for producing point clouds. This is the default.
  • PHOTOGRAMMETRIC_DATAThe points in the .las file were obtained using a photogrammetric technique for producing point clouds from overlapping imagery.
Boolean
method
(Optional)

Specifies the classification method that will be used.

  • AGGRESSIVEPoints that fit the planar rooftop characteristics with a relatively high tolerance for outliers will be detected. Use this method if the points are not well calibrated.
  • STANDARDPoints that fit the planar rooftop characteristics with a relatively moderate tolerance for irregular points will be detected. This is the default
  • CONSERVATIVEPoints that fit the planar rooftop characteristics with a relatively low tolerance for irregular points will be detected. Use this method if the building points are co-planar with points from objects that are not buildings.
String
classify_above_roof
(Optional)

Specifies whether points above the planes detected for the roof will be classified.

  • NO_CLASSIFY_ABOVE_ROOFPoints detected above the planes will not be classified. This is the default..
  • CLASSIFY_ABOVE_ROOFPoints detected above the planes will be classified.
Boolean
above_roof_height
(Optional)

The maximum height of the points above the building rooftop that will be classified to the value designated in the Above Roof Class Code parameter.

Linear Unit
above_roof_code
(Optional)

The class code that will be assigned to points above the roof.

Long
classify_below_roof
(Optional)

Specifies whether points between the roof and the ground will be classified.

  • NO_CLASSIFY_BELOW_ROOFPoints between the roof and the ground will not be classified. This is the default.
  • CLASSIFY_BELOW_ROOFPoints between the roof and the ground will be classified.
Boolean
below_roof_code
(Optional)

The class code that will be assigned to points between the ground and the roof.

Long
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
derived_las_dataset

The LAS dataset that is classified for building rooftops.

LAS Dataset Layer

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

Related topics