分类 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
处理范围
(可选)

待评估数据的范围。

  • 当前显示范围 Current Display Extent - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 绘制范围 Draw Extent - 范围将基于在地图或场景上绘制的矩形。 此选项将在工程地理数据库中创建要素类并将图层添加至地图。 该要素类的坐标系将与地图相同。
    注:

    环境对话框中不提供此选项。 只能在具有范围数据类型的工具参数中或工具对话框的环境选项卡中找到此选项。

    注:

    当选中从“编辑”选项卡启用和禁用编辑编辑选项时,必须在编辑功能区选项卡上启用编辑才能绘制范围。

  • 图层范围 Layer - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 Select All - 图层中所有要素的范围。
    • 选定要素Area from Selected Features - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 Area from Selected Features可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 Browse - 范围基于现有数据集。
  • 输入的交集 Intersect - 范围将基于所有输入的最小或交叉范围。 如果输入未重叠,则结果为包含所有零值的空范围。
  • 输入的并集 Union - 范围将基于所有输入的最大或合并范围。
  • 剪贴板 Paste - 可在剪贴板中复制和粘贴范围。
    • 复制范围 Copy - 将范围坐标和坐标系复制到剪贴板。
    • 粘贴范围 Paste - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 Reset - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

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
(可选)

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

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())

相关主题