分类 LAS 建筑物 (3D Analyst)

描述

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

插图

建筑物屋顶点的分类。

使用方法

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

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

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

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

语法

arcpy.3d.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})
参数说明数据类型
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_DATALAS 文件中的点是通过激光雷达测量而非通过产生点云的摄影测量技术获得的。这是默认设置。
  • PHOTOGRAMMETRIC_DATALAS 文件中的点是使用摄影测量技术基于重叠影像产生点云获得的。
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

派生输出

名称说明数据类型
derived_las_dataset

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

LAS 数据集图层

代码示例

ClassifyLasBuilding 示例 1(Python 窗口)

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

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

arcpy.ClassifyLasBuilding_3d('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

相关主题