Extract Objects From Point Cloud (3D Analyst)

Summary

Extracts distinct objects from a classified point cloud into point, polygon, or multipatch features.

Illustration

Extract Objects From Point Cloud tool illustration

Usage

  • This tool uses a clustering distance to establish which points belong to the same object. If multiple class codes can potentially represent the same object, assign a common group ID that will link the class codes during the clustering operation. For example, a large tree may have points assigned with class codes of 3, 4, or 5. The three class codes can be assigned a common group ID to ensure that the tree is properly identified.

  • Extracting objects offers a quantifiable dataset that can be used to create an asset inventory that can be visualized in a map or scene. 3D shapes produced by this tool can aid in making visibility or shadow impact assessments. Simplified geometric representations can also provide a useful cartographic abstraction for visualizing objects in bulkier point clouds.

  • Use the Minimum Number of Points parameter to eliminate objects that are defined by a small number of points, which may not yield meaningful outputs.

  • When using the 2D Concave Hull or 3D Concave Hull option for the Output Geometry Type parameter, an alpha radius for defining the output geometry can either be computed for each object or the same alpha radius can be used on all objects. Computing an alpha radius for each object can be beneficial when extracting multiple objects with highly differing characteristics. When applying the same alpha radius to all objects, specify the desired radius using the Alpha Radius parameter. If no value is provided, the radius used for the 2D Concave Hull option will be the same as the Clustering Distance parameter value. When using the 3D Concave Hull option, the radius will be derived by dividing the Clustering Distance parameter value by the Vertical Clustering Scale Factor parameter value, as long as the scale factor is greater than 0. When the scale factor is 0, the convex hull will be created.

  • The output features will have the following attributes:

    • ObjectCode—The class code or group ID used to identify the object type.
    • COUNT—The number of points that are associated with the object.
    • ALPHA—The alpha radius used to construct the output shape. This field is only added when the Output Geometry Type parameter is set to 2D Concave Hull or 3D Concave Hull.

    The following attributes are only added for polygon geometry types:

    • MIN_Z—The lowest z-value of the points that belong to an object
    • MAX_Z—The highest z-value of the points that belong to an object

    Attributes such as surface area and volume can be computed for multipatch outputs using the Add Z Information tool.

Parameters

LabelExplanationData Type
Input Point Cloud

The classified LAS dataset, point cloud scene layer package, or point cloud I3S service that will be used to detect objects.

LAS Dataset Layer; Scene Layer; File
Class Codes To Extract

The class codes that will be processed to identify objects. A common group ID can be assigned to group multiple class codes into the same object.

Value Table
Clustering Distance

The three-dimensional distance that will be used to identify the points that belong to the same object.

Linear Unit
Output Object Features

The output objects whose feature geometry may be point, polygon, or multipatch based on the Output Geometry Type parameter value.

Feature Class
Output Geometry Type
(Optional)

Specifies the type of geometry that will be created for each object. The specified type will determine whether the objects will be represented as points, polygons, or multipatch features.

  • CenterpointThree-dimensional points will be generated that represent each object with a point that is created approximately in the middle of the object's convex hull.
  • Bounding CircleTwo-dimensional polygons will be generated that represent each object with the minimum bounding circle that surrounds its points.
  • 2D Bounding BoxTwo-dimensional polygons will be generated that represent each object with the smallest oriented bounding box that contains its points.
  • 2D Convex HullTwo-dimensional polygons will be generated that represent each object with the convex hull that contains its points.
  • 2D Concave HullTwo-dimensional polygons will be generated that represent each object with a concave hull that encompasses its points.
  • Bounding SphereMultipatch features will be generated that represent each object with a minimum bounding sphere that encompasses its points.
  • 3D Bounding BoxMultipatch features will be generated that represent each object with the smallest oriented bounding box that contains its points.
  • 3D Convex HullMultipatch features will be generated that represent each object with the convex hull that surrounds its points. This is the default.
  • 3D Concave HullMultipatch features will be generated that represent each object with the concave hull that surrounds its points. This option approximates the closest fitting geometry that can be generated from the points.
String
Minimum Number of Points
(Optional)

The minimum number of points that an object must have for it to generate an output. The default value is 10.

Long
Vertical Clustering Scale Factor

The scale factor that will be applied to the z-values, which will impact how the clustering distance is applied along the z-axis and how points are clustered into objects. The default value is 1 with valid values ranging from 0.0 to 10.0. A scale factor of 0 will result in two-dimensional clustering; a scale factor that is smaller than 1 but larger than 0 will result in a larger z-range for each object. Likewise, a vertical scale factor that is greater than 1 will result in points along the z-axis being clustered over a shorter distance. The vertical scale factor only applies to how the points are clustered. The geometry of the points will not be modified and the z-units will not be altered.

Double
Calculate a unique alpha radius for each object
(Optional)

Specifies whether the alpha radius will be calculated for each object or if the same alpha radius will be applied to all objects.

This parameter is only available when the Output Geometry Type parameter is set to 2D Concave Hull or 3D Concave Hull.

  • Checked—A unique alpha radius will be calculated for each object.
  • Unchecked—The same alpha radius will be used for all objects. When this parameter is unchecked, the Alpha Radius parameter can be used to define this value. If no value is specified, an alpha radius will be calculated for the entire dataset. This is the default.
Boolean
Alpha Radius
(Optional)

The alpha radius that will be used to define the alpha shape when constructing the object features.

This parameter applies when the Calculate a unique alpha radius for each object parameter is unchecked and the Output Geometry Type parameter is set to 2D Concave Hull or 3D Concave Hull.

A larger alpha radius will create a more unified object feature with simpler boundaries until the point of reaching the convex hull, while smaller values will encompass the object's points with greater detail while also increasing the likelihood of producing disconnected parts. When no alpha radius is defined, the value is derived from the Clustering Distance and Vertical Clustering Scale Factor parameters.

See the Usage section in the tool help for more information about how the default alpha radius is derived.

Linear Unit

arcpy.ddd.ExtractObjectsFromPointCloud(in_point_cloud, class_codes_to_extract, clustering_distance, out_features, {geometry_type}, {min_points}, vertical_scale_factor, {alpha_calculation}, {alpha_radius})
NameExplanationData Type
in_point_cloud

The classified LAS dataset, point cloud scene layer package, or point cloud I3S service that will be used to detect objects.

LAS Dataset Layer; Scene Layer; File
class_codes_to_extract
[class_codes_to_extract,...]

The class codes that will be processed to identify objects. A common group ID can be assigned to group multiple class codes into the same object.

Value Table
clustering_distance

The three-dimensional distance that will be used to identify the points that belong to the same object.

Linear Unit
out_features

The output objects whose feature geometry may be point, polygon, or multipatch based on the geometry_type parameter value.

Feature Class
geometry_type
(Optional)

Specifies the type of geometry that will be created for each object. The specified type will determine whether the objects will be represented as points, polygons, or multipatch features.

  • CENTERPOINTThree-dimensional points will be generated that represent each object with a point that is created approximately in the middle of the object's convex hull.
  • BOUNDING_CIRCLETwo-dimensional polygons will be generated that represent each object with the minimum bounding circle that surrounds its points.
  • BOUNDING_BOX_2DTwo-dimensional polygons will be generated that represent each object with the smallest oriented bounding box that contains its points.
  • CONVEX_HULL_2DTwo-dimensional polygons will be generated that represent each object with the convex hull that contains its points.
  • CONCAVE_HULL_2DTwo-dimensional polygons will be generated that represent each object with a concave hull that encompasses its points.
  • BOUNDING_SPHEREMultipatch features will be generated that represent each object with a minimum bounding sphere that encompasses its points.
  • BOUNDING_BOX_3DMultipatch features will be generated that represent each object with the smallest oriented bounding box that contains its points.
  • CONVEX_HULL_3DMultipatch features will be generated that represent each object with the convex hull that surrounds its points. This is the default.
  • CONCAVE_HULL_3DMultipatch features will be generated that represent each object with the concave hull that surrounds its points. This option approximates the closest fitting geometry that can be generated from the points.
String
min_points
(Optional)

The minimum number of points that an object must have for it to generate an output. The default value is 10.

Long
vertical_scale_factor

The scale factor that will be applied to the z-values, which will impact how the clustering distance is applied along the z-axis and how points are clustered into objects. The default value is 1 with valid values ranging from 0.0 to 10.0. A scale factor of 0 will result in two-dimensional clustering; a scale factor that is smaller than 1 but larger than 0 will result in a larger z-range for each object. Likewise, a vertical scale factor that is greater than 1 will result in points along the z-axis being clustered over a shorter distance. The vertical scale factor only applies to how the points are clustered. The geometry of the points will not be modified and the z-units will not be altered.

Double
alpha_calculation
(Optional)

Specifies whether the alpha radius will be calculated for each object or if the same alpha radius will be applied to all objects.

This parameter is only enabled when the geometry_type parameter is set to CONCAVE_HULL_2D or CONCAVE_HULL_3D.

  • PER_OBJECTA unique alpha radius will be calculated for each object.
  • ALL_OBJECTSThe same alpha radius will be used for all objects. When this option is specified, the alpha_radius parameter can be used to define this value. If no value is specified, an alpha radius will be calculated for the entire dataset. This is the default.
Boolean
alpha_radius
(Optional)

The alpha radius that will be used to define the alpha shape when constructing the object features.

This parameter applies when the alpha_calculation parameter is set to ALL_OBJECTS and the geometry_type parameter is set to CONCAVE_HULL_2D or CONCAVE_HULL_3D.

A larger alpha radius will create a more unified object feature with simpler boundaries until the point of reaching the convex hull, while smaller values will encompass the object's points with greater detail while also increasing the likelihood of producing disconnected parts. When no alpha radius is defined, the value is derived from the clustering_distance and vertical_clustering_scale_factor parameters.

See the Usage section in the tool help for more information about how the default alpha radius is derived.

Linear Unit

Code sample

ExtractObjectsFromPointCloud example 1 (Python window)

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

import arcpy
arcpy.env.workspace = r"C:/GIS_Data"
arcpy.ddd.ExtractObjectsFromPointCloud("Terrestrial_Scan.lasd", [(4, 5), (5, 5)],
                                       "60 Centimeters", "Trees.shp", 
                                       "CONCAVE_HULL_2D", 50)