描述
分类航空激光雷达数据中的建筑物屋顶点。
插图
使用
分类建筑物屋顶点之前必须先分类 LAS 数据的地面点。如果地面点尚未分类,请考虑使用分类 LAS 地面点工具。地面点的类代码值必须为 2。如果地面点的类代码值不是 2,请使用更改 LAS 类代码工具相应地重新分配类代码。
将对类代码值为 0、1 和 6 的 LAS 点进行评估,以确定其是否适合建筑物屋顶的特征。除非指定了重用现有建筑物分类点的选项,否则分类为不满足此条件的建筑物的点将被重新分配至类代码值 1。
语法
ClassifyLasBuilding(in_las_dataset, {min_height}, min_area, {compute_stats}, {extent}, boundary, {process_entire_files}, point_spacing, {reuse_building}, {photogrammetric_data})
参数 | 说明 | 数据类型 |
in_las_dataset | 待分类的 LAS 数据集。 | LAS Dataset Layer |
min_height (可选) | 定义可识别的屋顶点最低点距离地面的高度。 | Linear Unit |
min_area | 将用于建立建筑物屋顶存在情况的共面点的最小面积。 | Areal Unit |
compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。计算统计数据时会为每个 LAS 文件提供一个空间索引,从而提高了分析和显示性能。统计数据还可通过将 LAS 属性(如分类代码和返回信息)显示限制为 LAS 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
extent (可选) | 指定将由此工具进行评估的数据范围。 | Extent |
boundary | 定义将由此工具进行处理的感兴趣区域的面要素。 | Feature Layer |
process_entire_files (可选) | 指定处理范围的应用方式。
| Boolean |
point_spacing | 将用于建立建筑物屋顶存在情况的 LAS 点的平均间距。该值默认为针对 LAS 数据集计算的平均间距。 | Linear Unit |
reuse_building (可选) | 指定是否将重用或重新评估现有建筑物分类点。 指定是否将重用或重新评估现有建筑物分类点。
| Boolean |
photogrammetric_data (可选) | 指定 LAS 文件中的点是否源自通过摄影测量方式获得的点云。 指定 LAS 文件中的点是否源自通过摄影测量方式获得的点云。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
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