Classify Point Cloud Using Trained Model (3D Analyst)

Summary

Classifies a point cloud using a PointCNN classification model.

Usage

  • This tool uses the PointCNN implementation using deep learning frameworks.

    To set up your machine to use deep learning frameworks in ArcGIS Pro, see Install deep learning frameworks for ArcGIS.

  • The tool classifies all points in the input point cloud by default. If any of the existing class codes in the input point cloud are classified properly, exclude those points from being modified by indicating which class codes should be edited or preserved using the Existing Class Code Handling and Existing Class Codes parameters.

    Learn more about classifying a point cloud with deep learning

  • The input point cloud must have the same attributes with similar ranges of values as the training data used to develop the classification model. For example, if the trained model used the intensity attribute with a specific range of values, the point cloud must have intensity values in the same range. The point density and distribution should also be similar to the data that was used when training the model.

  • If the spatial reference of the input point cloud does not use a projected coordinate system, the Output Coordinate System environment can be used to define a projected coordinate system that will be used when classifying its points.

  • The Reference Surface parameter is a required input when using a classification model that was trained with reference height information. The raster provided for this parameter is used to derive the relative height attribute for each overlapping point. The attribute is calculated by taking the z-value of each point and subtracting the height obtained from the raster through bilinear interpolation. This information helps differentiate objects associated with classes that have a distinctive range of relative heights from the raster surface, which allows them to be differentiated more readily. When the model is trained with relative height information, the raster surface that is provided as input for classification should be based on the same type of points. If the raster that was used for incorporating relative height during training was based on ground classified points, provide the same type of raster for this tool. For LAS datasets representing outdoor surveys, the most typical source of relative height information will be ground classified points from the same point cloud. A raster surface can be generated from the ground classified points by filtering the LAS dataset from its layer properties and using the LAS Dataset To Raster tool. If the tool is used in Python, the Make LAS Dataset Layer can be used to filter for the desired points prior to creating the raster. A ground surface can also be generated from a point cloud scene layer using the Point Cloud To Raster tool. Raster surfaces that are not sourced from the input point cloud can also be used, but you must ensure that the z-values in the raster correspond appropriately with the z-values in the point cloud.

Parameters

LabelExplanationData Type
Target Point Cloud

The point cloud that will be classified.

LAS Dataset Layer
Input Model Definition

The input Esri model definition file (*.emd) or deep learning package (*.dlpk) that will be used to classify the point cloud. A web address for a deep learning package that is published on ArcGIS Online or ArcGIS Living Atlas can also be used.

File; String
Target Classification

The class codes from the trained model that will be used to classify the input point cloud. All classes from the input model will be used by default unless a subset is specified.

String
Existing Class Code Handling
(Optional)

Specifies how the editable points from the input point cloud will be defined.

  • Edit All Points
  • Edit Selected Points
  • Preserve Selected Points
String
Existing Class Codes
(Optional)

The classes for which points will be edited or have their original class code designation preserved based on the Existing Class Code Handling parameter value.

Long
Compute statistics
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • Checked—Statistics will be computed. This is the default.
  • Unchecked—Statistics will not be computed.
Boolean
Processing Boundary

The polygon boundary that defines the subset of points to be processed from the input point cloud. Points outside the boundary features will not be evaluated.

Feature Layer
Update pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • Checked—The LAS dataset pyramid will be updated. This is the default.
  • Unchecked—The LAS dataset pyramid will not be updated.
Boolean
Reference Surface
(Optional)

The raster surface that will be used to provide relative height values for each point in the point cloud data. Points that do not overlap with the raster will be omitted from the analysis.

Raster Layer
Excluded Class Codes
(Optional)

The class codes that will be excluded from processing. Any value in the range of 0 to 255 can be specified.

Long
Batch Size
(Optional)

The point cloud data blocks that will be simultaneously processed by the neural network during the inferencing operation. When no value is specified, the optimal batch size will be calculated based on the available GPU memory. The amount of GPU memory used by a given block depends on the block point limit and point cloud attributes required by the model.

Long

Derived Output

LabelExplanationData Type
Output Point Cloud

The point cloud that was classified by the deep learning model.

Feature Layer

arcpy.ddd.ClassifyPointCloudUsingTrainedModel(in_point_cloud, in_trained_model, output_classes, {in_class_mode}, {target_classes}, {compute_stats}, boundary, {update_pyramid}, {reference_height}, {excluded_class_codes}, {batch_size})
NameExplanationData Type
in_point_cloud

The point cloud that will be classified.

LAS Dataset Layer
in_trained_model

The input Esri model definition file (*.emd) or deep learning package (*.dlpk) that will be used to classify the point cloud. A web address for a deep learning package that is published on ArcGIS Online or ArcGIS Living Atlas can also be used.

File; String
output_classes
[output_classes,...]

The class codes from the trained model that will be used to classify the input point cloud. All classes from the input model will be used by default unless a subset is specified.

String
in_class_mode
(Optional)

Specifies how the editable points from the input point cloud will be defined.

  • EDIT_ALLAll points in the input point cloud will be edited. This is the default.
  • EDIT_SELECTEDOnly points with class codes specified in the target_classes parameter will be edited; all other points will remain unchanged.
  • PRESERVE_SELECTEDPoints with class codes specified in the target_classes parameter will be preserved; the remaining points will be edited.
String
target_classes
[target_classes,...]
(Optional)

The classes for which points will be edited or have their original class code designation preserved based on the in_class_mode parameter value.

Long
compute_stats
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • COMPUTE_STATSStatistics will be computed. This is the default.
  • NO_COMPUTE_STATSStatistics will not be computed.
Boolean
boundary

The polygon boundary that defines the subset of points to be processed from the input point cloud. Points outside the boundary features will not be evaluated.

Feature Layer
update_pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • UPDATE_PYRAMIDThe LAS dataset pyramid will be updated. This is the default.
  • NO_UPDATE_PYRAMIDThe LAS dataset pyramid will not be updated.
Boolean
reference_height
(Optional)

The raster surface that will be used to provide relative height values for each point in the point cloud data. Points that do not overlap with the raster will be omitted from the analysis.

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(Optional)

The class codes that will be excluded from processing. Any value in the range of 0 to 255 can be specified.

Long
batch_size
(Optional)

The point cloud data blocks that will be simultaneously processed by the neural network during the inferencing operation. When no value is specified, the optimal batch size will be calculated based on the available GPU memory. The amount of GPU memory used by a given block depends on the block point limit and point cloud attributes required by the model.

Long

Derived Output

NameExplanationData Type
out_point_cloud

The point cloud that was classified by the deep learning model.

Feature Layer

Code sample

ClassifyPointCloudUsingTrainedModel example (stand-alone script)

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


import arcpy
arcpy.env.workspace = 'C:/data/'
arcpy.ddd.ClassifyPointCloudUsingTrainedModel('2018_survey.lasd', 'electrical_infrastructure_classification.emd', 
                                              [14, 15], 'EDIT_SELECTED', [0,1])

Licensing information

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

Related topics