Generate Floor Plan From Point Cloud (Indoors)

Summary

Creates a polyline feature class containing 2D polyline features generated from input point cloud data. The output of this tool can be refined and used as an input when populating an Indoors workspace with data to assist with creating floor-aware maps and scenes.

Usage

  • This tool accepts a LAS file as input and creates 2D polyline features that represent vertically-extended architecture such as walls, doors, and columns. Use this tool as part of a larger workflow to generate floor plans from point clouds.

  • You can refine the output polyline feature class created by the tool for use as input to the Import Features To Indoor Dataset tool.

  • When the input point cloud has a coordinate system defined, the Coordinate System parameter is automatically set. If the input point cloud has no coordinate system defined, use the Coordinate System parameter to specify one. If the input point cloud has an incorrect coordinate system defined, you can change it from the input point cloud's layer properties. The tool uses the specified coordinate system when processing the point cloud coordinates and when creating the output line features.

  • The tool processes one level from one facility per tool run. If the input point cloud data covers multiple facilities or levels (floors), use the following Processing Boundary parameters to limit the processing area:

    • Use the Z Ranges parameter to limit processing to a single level or a subset of elevations on a level.
    • Use the Extent parameter to limit processing to a single facility or a subset of a facility. The Extent parameter takes precedence over the Extent environment setting.

  • To improve the quality of the generated output, use the Z Ranges parameter to limit processing to a range of z-values that excludes most furniture, fixtures, lighting, and other objects that aren't room-bounding features. You can explore the point cloud data in a local scene to determine the optimal range of z-values to include. The following illustration shows how a processing z-range of 1-2 meters can avoid furniture and ceiling fixtures:

    Room with furniture and ceiling fixtures and z-range values
    A minimum z-value of 1 and a maximum z-value of 2 are set to avoid capturing furniture and ceiling fixtures in a room.

  • Use the Simplify Lines parameter to straighten generated output polylines and reduce the number of vertices. When this parameter is checked, a polyline compression algorithm is used to normalize generated polylines before removing extra vertices that are not necessary for retaining effective areas.

  • Use the Short Feature Tolerance parameter to delete short polyline features from the data. Features shorter than or equal to the specified tolerance will be removed unless they are within 0.05 meters of other features. Use a value of zero to avoid short features being removed, which can be helpful for visualizing wall positions in sparse point cloud data.

  • This tool may use the input point cloud's KeyPoint classification field during processing. If so, the tool will restore the field values to the original values at the end of the tool run.

Parameters

LabelExplanationData Type
Input Point Cloud

The input LAS file or dataset containing point cloud data from which polyline features will be generated.

LAS Dataset Layer
Output Line Features

The polyline feature class that will be created to store features generated from LAS data.

If no workspace is specified, the scratch workspace will be used.

Feature Class
Coordinate System
(Optional)

The coordinate system of the input LAS data and the output polyline feature class. By default, the coordinate system that is defined in the LAS data for both horizontal and vertical coordinate systems will be used.

Spatial Reference
Output Z Value
(Optional)

The z-value that will be assigned to the generated polyline features. The default is 0.

You can specify a value in meters or feet. The tool will automatically convert the value to use the unit of measure of the vertical coordinate system of the data.

Linear Unit
Simplify Lines
(Optional)

Specifies whether output polylines will be simplified during processing using a polyline compression algorithm to normalize generated polylines before removing extra vertices that are not necessary for retaining effective areas.

  • Checked—Lines will be simplified. This is the default.
  • Unchecked—Lines will not be simplified.
Boolean
Short Feature Tolerance
(Optional)

The tolerance in meters or international feet by which short features will be deleted. The default is 1 meter.

Use a value of 0 to bypass preserving short features.

Linear Unit
Z Ranges
(Optional)

One or more z-ranges of the input point cloud. Points in the specified z-ranges will be analyzed when generating the output polyline features.

If no value is specified, the full range of z-values present in the input point cloud data will be used.

Value Table
Extent
(Optional)

The extent of the data that will be evaluated.

  • Current Display Extent Map View—The extent will be based on the active map or scene.
  • Draw Extent Square and Finish—The extent will be based on a rectangle drawn on the map or scene.
  • Extent of a Layer Layer—The extent will be based on an active map layer. Choose an available layer or use the Extent of data in all layers option. Each map layer has the following options:

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

  • Browse Browse—The extent will be based on a dataset.
  • Intersection of Inputs Intersect—The extent will be the intersecting extent of all inputs.
  • Union of Inputs Union—The extent will be the combined extent of all inputs.
  • Clipboard Paste—The extent can be copied to and from the clipboard.
    • Copy Extent Copy—Copies the extent and coordinate system to the clipboard.
    • Paste Extent Paste—Pastes the extent and coordinate system from the clipboard. If the clipboard does not include a coordinate system, the extent will use the map’s coordinate system.
  • Reset Extent Reset—The extent will be reset to the default value.

When coordinates are manually provided, the coordinates must be numeric values and in the active map's coordinate system. The map may use different display units than the provided coordinates. Use a negative value sign for south and west coordinates.

Extent

arcpy.indoors.GenerateFloorPlanFromPointCloud(in_point_cloud, out_line_features, {coordinate_system}, {output_z_value}, {simplify}, {short_feature_tolerance}, {z_ranges}, {extent})
NameExplanationData Type
in_point_cloud

The input LAS file or dataset containing point cloud data from which polyline features will be generated.

LAS Dataset Layer
out_line_features

The polyline feature class that will be created to store features generated from LAS data.

If no workspace is specified, the scratch workspace will be used.

Feature Class
coordinate_system
(Optional)

The coordinate system of the input LAS data and the output polyline feature class. By default, the coordinate system that is defined in the LAS data for both horizontal and vertical coordinate systems will be used.

Spatial Reference
output_z_value
(Optional)

The z-value that will be assigned to the generated polyline features. The default is 0.

You can specify a value in meters or feet. The tool will automatically convert the value to use the unit of measure of the vertical coordinate system of the data.

Linear Unit
simplify
(Optional)

Specifies whether output polylines will be simplified during processing using a polyline compression algorithm to normalize generated polylines before removing extra vertices that are not necessary for retaining effective areas.

  • SIMPLIFYLines will be simplified. This is the default.
  • NO_SIMPLIFYLines will not be simplified.
Boolean
short_feature_tolerance
(Optional)

The tolerance in meters or international feet by which short features will be deleted. The default is 1 meter.

Use a value of 0 to bypass preserving short features.

Linear Unit
z_ranges
[z_ranges,...]
(Optional)

One or more z-ranges of the input point cloud. Points in the specified z-ranges will be analyzed when generating the output polyline features.

If no value is specified, the full range of z-values present in the input point cloud data will be used.

Value Table
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

Code sample

GenerateFloorPlanFromPointCloud example 1 (Python window)

The following Python window script demonstrates how to use the GenerateFloorPlanFromPointCloud function in immediate mode.

import arcpy
arcpy.indoors.GenerateFloorPlanFromPointCloud(r"C:\Indoors\PointcloudData\Floor1scan.LAS",
                                              r"C:\Indoors\ExampleData.gdb\OutputPolylines",
                                              "", "", "", "", "", "",
                                              )
GenerateFloorPlanFromPointCloud example 2 (Python window)

The following stand-alone script demonstrates how to use the GenerateFloorPlanFromPointCloud function.

#Name: Indoors_GenerateFloorPlanFromPointCloud_example2.py
#Description: Generates polyline floor plan features from LAS point cloud data

import arcpy

# Check Out Extensions
arcpy.CheckOutExtension('Indoors')
arcpy.CheckOutExtension('3D')
arcpy.CheckOutExtension('Spatial')  # or 'ImageAnalyst'

# Set Local Variables
in_point_cloud = r"C:\data\Building L - All_Floors.las"
out_line_features = r"C:\data\FloorPlans.gdb\Building_L_East_Floor_1"
coordinate_system = 'PROJCS["NAD_1983_2011_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],
                            PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],
                            PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-116.25],
                            PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],
                            UNIT["Meter",1.0],AUTHORITY["EPSG",6425]]'
output_z_value = "4.25 Meters"
simplify = "SIMPLIFY"
short_feature_tolerance = "25.4 Millimeters"
z_ranges = "1 1.8;2.2 3.2"
extent="DEFAULT"


# Call the function
arcpy.gp.GenerateFloorPlanFromPointCloud(
    in_point_cloud,
    out_line_features,
    coordinate_system,
    output_z_value,
    simplify,
    short_feature_tolerance,
    z_ranges,
    extent
)

# Check In Extensions
arcpy.CheckInExtension('Indoors')
arcpy.CheckInExtension('3D')
arcpy.CheckInExtension('Spatial')

Licensing information

  • Basic: No
  • Standard: No
  • Advanced: Requires 3D Analyst and ArcGIS Indoors Pro or ArcGIS Indoors Maps. Also requires Spatial Analyst or Image Analyst

Related topics