从点云中提取对象 (3D Analyst)

摘要

将分类的点云中的不同对象提取为点、面或多面体要素。

插图

从点云中提取对象工具图示

使用情况

  • 此工具使用聚类距离来确定属于同一对象的点。 如果多个类别代码可能表示相同的对象,请分配一个共用组 ID,在聚类操作期间将类别代码链接起来。 例如,一个大树可能具有分配了值为 3、4 或 5 的类别代码的点。 可以为这三个类别代码分配一个共用组 ID,以确保正确识别该树。

  • 提取对象提供了可量化的数据集,可用于创建可在地图或场景中可视化的资产清单。 该工具生成的 3D 形状有助于进行可见性或阴影影响评估。 简化几何表示也可以为在庞大的点云中可视化对象提供有用的制图抽象。

  • 使用最小点数参数来消除由少量点定义的对象,这可能不会产生有意义的输出。

  • 当使用输出几何类型参数的 2D 凹包3D 凹包选项时,可以为每个对象计算用于定义输出几何的 alpha 半径,也可以在所有对象上使用相同的 alpha 半径。 当提取具有高度不同特征的多个对象时,计算每个对象的 alpha 半径可能会很有用。 当对所有对象应用相同的 Alpha 半径时,请使用 Alpha 半径参数指定所需的半径。 如果未提供值,则用于 2D 凹包选项的半径将与聚类距离参数值相同。 使用 3D 凹包选项时,只要比例因子大于 0,则将通过聚类距离参数值除以垂直聚类比例因子参数值来得出半径。 当比例因子为 0 时,将创建凸包。

  • 输出要素将具有以下属性:

    • ObjectCode - 用于标识对象类型的类别代码或组 ID。
    • COUNT - 与对象相关联的点的数量。
    • ALPHA— 用于构建输出形状的 alpha 半径。 仅当输出几何类型参数设置为 2D 凹包3D 凹包时,才会添加此字段。

    以下属性仅适用于面几何类型:

    • MIN_Z - 属于对象的点的最低 Z 值
    • MAX_Z - 属于对象的点的最高 Z 值

    可以使用添加 Z 信息工具计算多面体输出的表面积和体积等属性。

参数

标注说明数据类型
输入点云

将用于检测对象的分类 LAS 数据集、点云场景图层包或点云 I3S 服务。

LAS Dataset Layer; Scene Layer; File
要提取的类代码

要处理以识别对象的类代码。 可以将共用组 ID 分配给多个类代码,以将其分组为同一对象。

Value Table
聚类距离

将用于识别属于同一对象的点的三维距离。

Linear Unit
输出对象要素

根据输出几何类型参数值,要素几何可能是点、面或多面体。

Feature Class
输出几何类型
(可选)

指定将为每个对象创建的几何类型。 指定的类型将确定对象是表示为点、面还是多面体要素。

  • 中心点将生成代表每个对象的三维点,该点大致位于对象凸包的中间位置。
  • 边界圆将生成代表每个对象的二维面,该面是围绕其点所包围的最小边界圆。
  • 2D 边界框将生成代表每个对象的二维面,该面是包含其点的最小定向边界框。
  • 2D 凸包将生成代表每个对象的二维面,该面是包含其点的凸包。
  • 2D 凹包将生成代表每个对象的二维面,该面是包围其点的凹多边形。
  • 边界球将生成代表每个对象的多面体要素,该多面体是包围其点的最小边界球。
  • 3D 边界框将生成代表每个对象的多面体要素,该多面体是包含其点的最小定向边界框。
  • 3D 凸包将生成代表每个对象的多面体要素,该多面体是包围其点的凸包。 这是默认设置。
  • 3D 凹包将生成代表每个对象的多面体要素,该多面体是包围其点的凸包。 此选项近似可以从点生成的最接近的拟合几何。
String
最小点数
(可选)

对象生成输出所需的最小点数。 默认值为 10。

Long
垂直聚类比例因子

将应用于 z 值的比例因子将影响如何沿 z 轴应用聚类距离以及如何将点聚类为对象。 默认值为 1,有效值范围为 0.0 到 10.0。 比例因子为 0 将导致二维聚类;小于 1 但大于 0 的比例因子将导致每个对象的 z 范围更大。 同样,大于 1 的垂直比例因子将导致沿 z 轴的点在较短的距离内聚集。 垂直比例因子仅适用于点的聚类方式。 点的几何不会被修改,z 单位也不会改变。

Double
计算每个对象的唯一 alpha 半径
(可选)

指定是否为每个对象计算 Alpha 半径,或者是否将相同的 Alpha 半径应用于所有对象。

仅当输出几何类型参数设置为 2D 凹包3D 凹包时,此参数才可用。

  • 选中 - 将计算每个对象的唯一 alpha 半径
  • 未选中 - 相同的 Alpha 半径将应用于所有对象。 当取消选中此参数时,可使用 Alpha 半径参数来定义此值。 如果未指定值,将为整个数据集计算 alpha 半径。 这是默认设置。
Boolean
Alpha 半径
(可选)

构造对象要素时将用于定义 alpha 形状的 alpha 半径。

当未选中计算每个对象的唯一 alpha 半径参数且输出几何类型参数设置为 2D 凹包3D 凹包时,适用此参数。

较大的 alpha 半径将创建一个更统一的对象要素,其具有更简单的边界,直到到达凸包的点,而较小的值将包含更详细的对象点,同时也会增加生成断开部分的可能性。 如果未定义 alpha 半径,则该值源自聚类距离垂直聚类比例因子参数。

有关如何派生出默认 alpha 半径的详细信息,请参阅工具帮助中的“使用方法”部分。

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})
名称说明数据类型
in_point_cloud

将用于检测对象的分类 LAS 数据集、点云场景图层包或点云 I3S 服务。

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

要处理以识别对象的类代码。 可以将共用组 ID 分配给多个类代码,以将其分组为同一对象。

Value Table
clustering_distance

将用于识别属于同一对象的点的三维距离。

Linear Unit
out_features

根据 geometry_type 参数值,要素几何可能是点、面或多面体。

Feature Class
geometry_type
(可选)

指定将为每个对象创建的几何类型。 指定的类型将确定对象是表示为点、面还是多面体要素。

  • CENTERPOINT将生成代表每个对象的三维点,该点大致位于对象凸包的中间位置。
  • BOUNDING_CIRCLE将生成代表每个对象的二维面,该面是围绕其点所包围的最小边界圆。
  • BOUNDING_BOX_2D将生成代表每个对象的二维面,该面是包含其点的最小定向边界框。
  • CONVEX_HULL_2D将生成代表每个对象的二维面,该面是包含其点的凸包。
  • CONCAVE_HULL_2D将生成代表每个对象的二维面,该面是包围其点的凹多边形。
  • BOUNDING_SPHERE将生成代表每个对象的多面体要素,该多面体是包围其点的最小边界球。
  • BOUNDING_BOX_3D将生成代表每个对象的多面体要素,该多面体是包含其点的最小定向边界框。
  • CONVEX_HULL_3D将生成代表每个对象的多面体要素,该多面体是包围其点的凸包。 这是默认设置。
  • CONCAVE_HULL_3D将生成代表每个对象的多面体要素,该多面体是包围其点的凸包。 此选项近似可以从点生成的最接近的拟合几何。
String
min_points
(可选)

对象生成输出所需的最小点数。 默认值为 10。

Long
vertical_scale_factor

将应用于 z 值的比例因子将影响如何沿 z 轴应用聚类距离以及如何将点聚类为对象。 默认值为 1,有效值范围为 0.0 到 10.0。 比例因子为 0 将导致二维聚类;小于 1 但大于 0 的比例因子将导致每个对象的 z 范围更大。 同样,大于 1 的垂直比例因子将导致沿 z 轴的点在较短的距离内聚集。 垂直比例因子仅适用于点的聚类方式。 点的几何不会被修改,z 单位也不会改变。

Double
alpha_calculation
(可选)

指定是否为每个对象计算 Alpha 半径,或者是否将相同的 Alpha 半径应用于所有对象。

仅当将 geometry_type 参数设置为 CONCAVE_HULL_2DCONCAVE_HULL_3D 时,才会启用此参数。

  • PER_OBJECT将计算每个对象的唯一 alpha 半径
  • ALL_OBJECTS相同的 Alpha 半径将应用于所有对象。 当指定该选项时,可以使用 alpha_radius 参数来定义该值。 如果未指定值,将为整个数据集计算 alpha 半径。 这是默认设置。
Boolean
alpha_radius
(可选)

构造对象要素时将用于定义 alpha 形状的 alpha 半径。

alpha_calculation 参数设置为 ALL_OBJECTSgeometry_type 参数设置为 CONCAVE_HULL_2DCONCAVE_HULL_3D 时,适用该参数。

较大的 alpha 半径将创建一个更统一的对象要素,其具有更简单的边界,直到到达凸包的点,而较小的值将包含更详细的对象点,同时也会增加生成断开部分的可能性。 当未定义 alpha 半径时,该值来自 clustering_distancevertical_clustering_scale_factor 参数。

有关如何派生出默认 alpha 半径的详细信息,请参阅工具帮助中的“使用方法”部分。

Linear Unit

代码示例

ExtractObjectsFromPointCloud 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

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)