分类 LAS 建筑物 (3D Analyst)

摘要

用于对 LAS 格式点云数据中的建筑物进行分类。

插图

分类 LAS 建筑物工具图示

使用情况

  • 将对类代码值为 0、1 和 6 的点进行评估,以确定其是否适合建筑物屋顶的特征。 将为不满足检测条件的现有建筑物分类点重新分配 1,除非已设置重用现有建筑物分类点的选项。

  • 此工具的设计重点为航空激光雷达,通常用于捕捉建筑物屋顶。 表示墙壁、垂直立面和较小屋顶要素(例如,天窗和烟囱)的点可能不包括在建筑物分类中。 如果此类点十分必要,请考虑使用带有用于对屋顶上方和下方的点进行分类的选项的工具来运行该工具。

  • 在运行此工具之前,应对地面点进行分类。 如果尚未对地面点进行分类,请使用分类 LAS 地面点工具。 如果已对地面点进行分类,但其类代码值不是 2,请使用更改 LAS 类代码工具以相应地重新分配类代码。

  • 当选中是摄影测量数据参数时,将不会使用方法参数。

参数

标注说明数据类型
输入 LAS 数据集

将进行分类的 LAS 数据集。

LAS Dataset Layer
最小屋顶高度
(可选)

定义可识别的屋顶点最低点距离地面的高度。

Linear Unit
最小面积

建筑物屋顶的最小面积。

Areal Unit
计算统计数据
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • 选中 - 将计算统计数据。 这是默认设置。
  • 未选中 - 不计算统计数据。
Boolean
处理范围
(可选)

待评估数据的范围。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。
  • 图层范围 图层 - 范围基于活动地图图层。 选择可用图层或者使用所有图层中的数据范围选项。 每个地图图层具有以下选项:

    • 所有要素 全选 - 所有要素的范围。
    • 选定要素 基于选定要素的区域 - 选定要素的范围。
    • 可见要素 Extent Indicator - 可见要素的范围。

  • 浏览 浏览 - 范围将基于数据集。
  • 输入的交集 相交 - 范围将为所有输入的相交范围。
  • 输入的并集 联合 - 范围将为所有输入的合并范围。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围和坐标系复制到剪贴板。
    • 粘贴范围 粘贴 - 从剪贴板粘贴范围和坐标系。 如果剪贴板不包含坐标系,则范围将使用地图的坐标系。
  • 重置范围 重置 - 将范围重置为默认值。

当手动提供坐标时,坐标必须为数值,并且位于活动地图的坐标系中。 地图可能使用与提供的坐标不同的显示单位。 在南纬和西经坐标中使用负号。

Extent
处理边界

面要素或定义要处理区域的要素。

Feature Layer
处理与范围相交的整个 LAS 文件
(可选)

指定将如何使用感兴趣区以确定 .las 文件的处理方式。 感兴趣区由处理范围参数值和处理边界参数值定义,或由二者共同定义。

  • 未选中 - 仅处理与感兴趣区相交的 LAS 点。 这是默认设置。
  • 选中 - 如果 .las 文件的任何部分与感兴趣区相交,则该 文件中的所有点(包括感兴趣区以外的点)都会得到处理。
Boolean
平均点间距

LAS 点的平均间距。 该参数不再使用。

Linear Unit
重用现有建筑物分类点
(可选)

指定是否将重用或重新评估现有建筑物分类点。

  • 未选中 - 系统将重新评估现有建筑物分类点以符合平面检测条件,且不符合指定面积和高度的点将被分配值 1。 这是默认设置。
  • 选中 - 现有建筑物分类点将为平面检测过程提供支持,但如果这些分类点不符合该工具指定的条件,则系统不会对其进行重分类。 如果现有分类十分必要,则请使用此选项。
Boolean
是摄影测量数据
(可选)

指定是否使用摄影测量技术获取 .las 文件中的点。

  • 未选中 - .las 文件中的点是通过激光雷达测量而非通过产生点云的摄影测量技术获得的。 这是默认设置。
  • 选中 - .las 文件中的点是使用摄影测量技术基于重叠影像产生点云获得的。
Boolean
分类方法
(可选)

指定将使用的分类方法。

  • 激进将以异常值的相对较高容差来检测符合平面屋顶特征的点。 如果没有精确标定这些点,则使用此方法。
  • 标准将以不规则点的相对适中容差来检测符合平面屋顶特征的点。 这是默认设置
  • 保守将以不规则点的相对较低容差来检测符合平面屋顶特征的点。 如果建筑物点与非建筑物对象的点共面,请使用此方法。
String
对屋顶上方的点进行分类
(可选)

指定是否会对检测到的屋顶平面上方的点进行分类。

  • 未选中 - 不会对平面上方检测到的的点进行分类。 这是默认设置。
  • 选中 - 将对平面上方检测到的的点进行分类。
Boolean
屋顶上方的最大高度
(可选)

将使用屋顶上方类代码参数值进行分类的建筑屋顶上方的点的最大高度。

Linear Unit
屋顶上方类代码
(可选)

将分配给屋顶上方的点的类代码。

Long
对屋顶下方的点进行分类
(可选)

指定是否会对屋顶和地面之间的点进行分类。

  • 未选中 - 将不会对屋顶和地面之间的点进行分类。 这是默认设置。
  • 选中 - 将对屋顶和地面之间的点进行分类。
Boolean
屋顶下方类代码
(可选)

将分配给地面和屋顶之间的点的类代码。

Long
更新金字塔
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • 选中 - LAS 数据集金字塔将更新。 这是默认设置。
  • 未选中 - LAS 数据集金字塔不会更新。
Boolean

派生输出

标注说明数据类型
派生 LAS 数据集

针对建筑物屋顶进行分类的 LAS 数据集。

LAS Dataset Layer

arcpy.ddd.ClassifyLasBuilding(in_las_dataset, {min_height}, min_area, {compute_stats}, {extent}, boundary, {process_entire_files}, point_spacing, {reuse_building}, {photogrammetric_data}, {method}, {classify_above_roof}, {above_roof_height}, {above_roof_code}, {classify_below_roof}, {below_roof_code}, {update_pyramid})
名称说明数据类型
in_las_dataset

将进行分类的 LAS 数据集。

LAS Dataset Layer
min_height
(可选)

定义可识别的屋顶点最低点距离地面的高度。

Linear Unit
min_area

建筑物屋顶的最小面积。

Areal Unit
compute_stats
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • COMPUTE_STATS将计算统计数据。 这是默认设置。
  • NO_COMPUTE_STATS不计算统计数据。
Boolean
extent
(可选)

待评估数据的范围。

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标以 x-min,y-min,x-max,y-max 的顺序表示。
Extent
boundary

面要素或定义要处理区域的要素。

Feature Layer
process_entire_files
(可选)

指定处理范围的应用方式。

  • PROCESS_EXTENT仅处理与感兴趣区相交的 LAS 点。 这是默认设置。
  • PROCESS_ENTIRE_FILES如果 .las 文件的任何部分与感兴趣区相交,则该 文件中的所有点(包括感兴趣区以外的点)都会得到处理。
Boolean
point_spacing

LAS 点的平均间距。 该参数不再使用。

Linear Unit
reuse_building
(可选)

指定是否将重用或重新评估现有建筑物分类点。

指定是否将重用或重新评估现有建筑物分类点。

  • RECLASSIFY_BUILDING系统将重新评估现有建筑物分类点以符合平面检测条件,且不符合指定面积和高度的点将被分配值 1。 这是默认设置。
  • REUSE_BUILDING现有建筑物分类点将为平面检测过程提供支持,但如果这些分类点不符合该工具指定的条件,则系统不会对其进行重分类。 如果现有分类十分必要,则请使用此选项。
Boolean
photogrammetric_data
(可选)

指定是否使用摄影测量技术获取 .las 文件中的点。

指定是否使用摄影测量技术获取 .las 文件中的点。

  • NOT_PHOTOGRAMMETRIC_DATA.las 文件中的点是通过激光雷达测量而非通过产生点云的摄影测量技术获得的。 这是默认设置。
  • PHOTOGRAMMETRIC_DATA.las 文件中的点是使用摄影测量技术基于重叠影像产生点云获得的。
Boolean
method
(可选)

指定将使用的分类方法。

  • AGGRESSIVE将以异常值的相对较高容差来检测符合平面屋顶特征的点。 如果没有精确标定这些点,则使用此方法。
  • STANDARD将以不规则点的相对适中容差来检测符合平面屋顶特征的点。 这是默认设置
  • CONSERVATIVE将以不规则点的相对较低容差来检测符合平面屋顶特征的点。 如果建筑物点与非建筑物对象的点共面,请使用此方法。
String
classify_above_roof
(可选)

指定是否会对检测到的屋顶平面上方的点进行分类。

  • NO_CLASSIFY_ABOVE_ROOF不会对平面上方检测到的的点进行分类。 这是默认设置。
  • CLASSIFY_ABOVE_ROOF将对平面上方检测到的的点进行分类。
Boolean
above_roof_height
(可选)

将使用 above_roof_code 参数值进行分类的建筑屋顶上方的点的最大高度。

Linear Unit
above_roof_code
(可选)

将分配给屋顶上方的点的类代码。

Long
classify_below_roof
(可选)

指定是否会对屋顶和地面之间的点进行分类。

  • NO_CLASSIFY_BELOW_ROOF将不会对屋顶和地面之间的点进行分类。 这是默认设置。
  • CLASSIFY_BELOW_ROOF将对屋顶和地面之间的点进行分类。
Boolean
below_roof_code
(可选)

将分配给地面和屋顶之间的点的类代码。

Long
update_pyramid
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • UPDATE_PYRAMIDLAS 数据集金字塔将更新。 这是默认设置。
  • NO_UPDATE_PYRAMIDLAS 数据集金字塔不会更新。
Boolean

派生输出

名称说明数据类型
derived_las_dataset

针对建筑物屋顶进行分类的 LAS 数据集。

LAS Dataset Layer

代码示例

ClassifyLasBuilding 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'

arcpy.ddd.ClassifyLasBuilding('Highland.lasd', minHeight='9 feet', 
                              minArea='30 Square Feet', compute_stats=True)
ClassifyLasBuilding 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
       Name: Tile & Classify LAS Files
Description: Creates & classifies tiled LAS files.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las = arcpy.GetParameterAsText(1) # The LAS files that need to be tiled
out_folder = arcpy.GetParameterAsText(2) # folder for LAS files
basename = arcpy.GetParameterAsText(3) # basename for output files
out_lasd = arcpy.GetParameterAsText(4) # output LAS dataset


try:
    # Create temp LAS dataset to reference LAS files that will be tiled
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las, temp_lasd)
    arcpy.ddd.TileLas(temp_lasd, out_folder, basename, out_lasd, las_version=1.4, 
                      point_format=7, file_size=300)
    arcpy.management.Delete(temp_lasd)
    arcpy.ddd.ClassifyLasGround(out_lasd, method='AGGRESSIVE')
    arcpy.ddd.ClassifyLasBuilding(out_lasd, min_height='3 Meters', min_area='4 Meters')
    arcpy.ddd.ClassifyLasByHeight(out_lasd, height_classification=[(3, 6), (4,20), (5,70)],
                                  noise='All Noise', compute_stats='COMPUTE_STATS')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题