Extract Mesh Features Using Point Cloud (3D Analyst)

Summary

Extracts multipatch features representing objects in an integrated mesh based on a classified point cloud.

Usage

  • This tool uses classified points in a point cloud to identify the corresponding objects in the integrated mesh. For this reason, the point cloud that was classified should be created from the integrated mesh. The Mesh To LAS tool can be used to create a point cloud that can be classified for object extraction from the mesh.

  • Each class code will have a corresponding group ID. A common group ID can be assigned to multiple class codes to ensure that points describing elements of the same object can be treated as one object.

  • The object extraction process aggregates classified points into clusters and identifies the objects in the integrated mesh based on their proximity to the clustered set of points. Points closer than the Cluster Distance parameter value will be considered as belonging to the same object. This parameter value should be larger than the average point spacing of the data.

  • The Maximum Triangle Area parameter subdivides the mesh triangles to support cases in which multiple objects may be present in a given triangle. Consequently, the multipatch triangles won't match the mesh triangles.

  • If the point cloud or integrated mesh is sourced from an indexed 3D scene layer service, the service must have the export feature enabled to be used as inputs for this tool.

Parameters

LabelExplanationData Type
Input Integrated Mesh

The integrated mesh I3S service or scene layer package that will be processed.

Scene Layer; File
Input Point Cloud

The LAS dataset, I3S point cloud, or point cloud scene layer package with classified points that will be used to extract features from the integrated mesh.

LAS Dataset Layer; Scene Layer; File
Output Multipatch Features

The output multipatch features that represent the objects detected from the integrated mesh.

Feature Class
Class Codes To Extract

The class code values from the point cloud that will be used to identify the objects in the integrated mesh. Each code will have a default group ID of the same value. A common group ID can be assigned to ensure that points from multiple class codes can be grouped together into one object.

Value Table
Point Distance Threshold

The maximum distance between the centers of the subdivided mesh triangles and the points representing a given object. The mesh elements that are within this distance will be created as an object in the output feature class.

Linear Unit
Maximum Triangle Area
(Optional)

The maximum area of the subdivided mesh triangles. The input mesh triangles are subdivided to optimize the quality of the output.

Areal Unit
Cluster Distance
(Optional)

The distance that will be used to cluster the points within each object group. When no value is specified, the Point Distance Threshold parameter value will be used as the clustering distance.

Linear Unit
Minimum Cluster Area
(Optional)

The minimum surface area of the mesh triangles that are within the specified proximity from a given object cluster. Any mesh object cluster that is smaller than the specified value will be ignored. By default, no value is used, which will result in all object clusters being treated as valid objects.

Areal Unit
Extraction Boundary
(Optional)

A boundary that represents the 2D area that will be processed. When the expected data is in a subset of the integrated mesh, providing a boundary feature can optimize performance of the tool by limiting the area that will be evaluated.

Feature Layer

arcpy.ddd.ExtractMeshFeaturesUsingPointCloud(in_mesh, in_point_cloud, out_feature_class, class_codes, point_distance_threshold, {maximum_triangle_area}, {cluster_distance}, {minimum_cluster_area}, {boundary})
NameExplanationData Type
in_mesh

The integrated mesh I3S service or scene layer package that will be processed.

Scene Layer; File
in_point_cloud

The LAS dataset, I3S point cloud, or point cloud scene layer package with classified points that will be used to extract features from the integrated mesh.

LAS Dataset Layer; Scene Layer; File
out_feature_class

The output multipatch features that represent the objects detected from the integrated mesh.

Feature Class
class_codes
[class_codes,...]

The class code values from the point cloud that will be used to identify the objects in the integrated mesh. Each code will have a default group ID of the same value. A common group ID can be assigned to ensure that points from multiple class codes can be grouped together into one object.

Value Table
point_distance_threshold

The maximum distance between the centers of the subdivided mesh triangles and the points representing a given object. The mesh elements that are within this distance will be created as an object in the output feature class.

Linear Unit
maximum_triangle_area
(Optional)

The maximum area of the subdivided mesh triangles. The input mesh triangles are subdivided to optimize the quality of the output.

Areal Unit
cluster_distance
(Optional)

The distance that will be used to cluster the points within each object group. When no value is specified, the point_distance_threshold parameter value will be used as the clustering distance.

Linear Unit
minimum_cluster_area
(Optional)

The minimum surface area of the mesh triangles that are within the specified proximity from a given object cluster. Any mesh object cluster that is smaller than the specified value will be ignored. By default, no value is used, which will result in all object clusters being treated as valid objects.

Areal Unit
boundary
(Optional)

A boundary that represents the 2D area that will be processed. When the expected data is in a subset of the integrated mesh, providing a boundary feature can optimize performance of the tool by limiting the area that will be evaluated.

Feature Layer

Code sample

ExtractMeshFeaturesUsingPointCloud example (Python window)

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

import arcpy
arcpy.env.workspace = "C:/data"

lidar = "lidar/NE_neighborhood.lasd"
clusterDist = arcpy.Describe(lidar).pointSpacing * 2.5

arcpy.ddd.ExtractMeshFeaturesUsingPointCloud(in_mesh="NorthEast_Neighborhood_mesh.slpk",
                                             in_point_cloud=lidar,
                                             out_feature_class="NE_data.gdb/trees",
                                             class_codes=[[4, 5], [5, 5]],
                                             point_distance_threshold="25 centimeters",
                                             maximum_triangle_area="",
                                             clustering_distance=clusterDist,
                                             boundary="NE_data.gdb/parks")
)

Licensing information

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

Related topics