分类 LAS 建筑物 (3D Analyst)

摘要

在 LAS 数据中对建筑屋顶和侧墙进行分类。

插图

分类 LAS 建筑物工具图示

使用情况

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

  • 分类建筑物屋顶点之前 LAS 数据必须具有已分类的地面点。 如果地面点尚未分类,请考虑使用分类 LAS 地面点工具。 地面点的类代码值必须为 2。 如果地面点的类代码值不是 2,请使用更改 LAS 类代码工具相应地重新分配类代码。

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

  • 如果指定了是摄影测量数据选项,则不会使用方法参数。

参数

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

待分类的 LAS 数据集。

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

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

Linear Unit
最小面积

建筑物屋顶的最小面积。

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

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

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

待评估数据的范围。

  • 默认 - 该范围将基于所有参与输入的最大范围设定。这是默认设置。
  • 输入的并集 - 该范围将基于所有输入的最大范围。
  • 输入的交集 - 该范围将基于所有输入共用的最小区域。
  • 当前显示范围 - 该范围与可见显示范围相等。如果没有活动地图,则该选项将不可用。
  • 如下面的指定 - 该范围将基于指定的最小和最大范围值。
  • 浏览 - 该范围将基于现有数据集。
Extent
处理边界

定义将进行处理的感兴趣区域的面要素。

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

指定将如何使用感兴趣区以确定 .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 文件的任何部分与感兴趣区相交,则该 .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
(可选)

将分类为某值(在屋顶上方类代码参数中指定)的建筑屋顶上方的点的最大高度。

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

相关主题