Skip To Content

LAS Building Multipatch


Creates building models derived from rooftop points captured in lidar data.


  • This tool assumes the LAS points being processed represent the building rooftop and were obtained from an aerial survey. This tool does not make effective use of points representing the sides of the buildings, so these points should be filtered out, if possible.

  • LAS points are processed more efficiently when the LAS dataset has statistics present. Consider using LAS Dataset Statistics to compute statistics, if needed.

  • Consider using the Classify LAS Building tool to identify buildings, particularly if vegetation overhanging the rooftop may be common. Review the result of the automated classification prior to executing this tool with the building classified points. Additional corrections can be made through interactive classification editing of LAS points.

  • The building model is generated by constructing a TIN using the LAS points and the building footprint polygon. The footprint is included in the TIN as a clip polygon with a constant Z set to the ground height. The ground height should be derived from an elevation source that utilizes the same vertical datum as the LAS dataset being processed. The ground height is derived from a field in the footprint's attribute table, the value's linear unit is assumed to be the same as the z-unit of the input LAS dataset. When the ground height is defined by a surface, the smallest z-value within the extent of the building footprint is used to determine the ground height.

  • The LAS dataset can be used to define the ground source as a field value in the building footprint attribute table or as a surface by filtering the LAS dataset for ground points and following one of the following steps:


    Consider using the Classify LAS Ground tool to classify ground points if they have not already been classified.


LasBuildingMultipatch_3d (in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
ParameterExplanationData Type

The LAS dataset whose points define the building rooftop.

LAS Dataset Layer

The polygon features that define the building footprint.

Feature Layer

The source of ground height values can be either a numeric field in the building footprint attribute table, or a raster or TIN surface. A field-based ground source will be processed faster than a surface-based ground source.

Field; Raster Layer; TIN Layer

The multipatch feature class that will store the output building models.

Feature Class

The LAS points that will be used to define the building rooftop.

  • BUILDING_CLASSIFIED_POINTSLAS points assigned with a class code value of 6. This is the default.
  • LAYER_FILTERED_POINTSLAS points that are filtered by the input layer.
  • ALL_POINTSAll LAS points that overlay the building footprint.

The z-tolerance value that will be used to reduce the number of LAS points factored into modeling the building rooftop. This value defines the maximum threshold of deviation between the output rooftop model and the rooftop surface created from the full resolution of LAS points.

Linear Unit

Code sample

LasBuildingMultipatch example 1 (Python window)

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

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

arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif', 
                               'highland_3d_bldgs.shp', simplification='4 Feet')
LasBuildingMultipatch example 2 (stand-alone script)

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

       Name: Extract Building Footprints & Generate 3D Models
Description: Extract footprint from lidar points classified as buildings, 
             regularize its geometry, and calculate the building height.

import arcpy

lasd = arcpy.GetParameterAsText(0)
footprint = arcpy.GetParameterAsText(1)
model = arcpy.GetParameterAsText(2)

    lasd_layer = 'building points', lasd_layer, class_code=6)
    temp_raster = 'in_memory/bldg_raster', temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
    arcpy.ddd.LasPointStatsByArea(lasd_layer, footprint, ['MIN_Z', 'MAX_Z']), 'Height', 'Double'), 'Height', 
                                    "round('!Z_Max! - !Z_Min!', 2)", 
    simplification = arcpy.Describe(lasd).pointSpacing * 4
    arcpy.ddd.LasBuildingMultipatch(lasd_layer, footprint, 'Z_MIN', model, 
                                    'BUILDING_CLASSIFIED_POINTS', simplification)

except arcpy.ExecuteError:

Licensing information

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

Related topics