描述
在 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 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
extent (可选) | 指定将由此工具进行评估的数据范围。
| Extent |
boundary | 定义将由此工具进行处理的感兴趣区域的面要素。 | Feature Layer |
process_entire_files (可选) | 指定处理范围的应用方式。
| Boolean |
point_spacing | LAS 点的平均间距。该参数不再使用。 | Linear Unit |
reuse_building (可选) | 指定是否将重用或重新评估现有建筑物分类点。 指定是否将重用或重新评估现有建筑物分类点。
| Boolean |
photogrammetric_data (可选) | 指定是否使用摄影测量技术获取 LAS 文件中的点。 指定是否使用摄影测量技术获取 LAS 文件中的点。
| Boolean |
method (可选) | 将使用的分类方法。
| String |
classify_above_roof (可选) | 指定是否会对检测到的屋顶平面上方的点进行分类。
| Boolean |
above_roof_height (可选) | 将分类为某值(在屋顶上方类代码参数中指定)的建筑屋顶上方的点的最大高度。 | Linear Unit |
above_roof_code (可选) | 将分配给屋顶上方的点的类代码。 | Long |
classify_below_roof (可选) | 指定是否会对屋顶和地面之间的点进行分类。
| Boolean |
below_roof_code (可选) | 将分配给地面和屋顶之间的点的类代码。 | Long |
派生输出
名称 | 说明 | 数据类型 |
derived_las_dataset | 针对建筑物屋顶进行分类的 LAS 数据集。 | LAS 数据集图层 |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasBuilding_3d('Highland.lasd', minHeight='9 feet',
minArea='30 Square Feet', compute_stats=True)
下面的示例演示了如何在独立 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