Label | Explanation | Data 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 |
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
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})
Name | Explanation | Data 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
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")
)
Environments
Licensing information
- Basic: Requires 3D Analyst
- Standard: Requires 3D Analyst
- Advanced: Requires 3D Analyst