描述
分类航测激光雷达数据中的地面点。
插图
使用方法
此工具要求输入 LAS 数据集具有投影坐标系。通过将提取 LAS 工具与输出坐标系环境设置中指定的投影坐标系结合使用,可以对地理坐标系中存储的数据进行重新投影。
只有类别代码值为 0、1 或 2 的 LAS 点才有资格被分配为地面点。如果您的 LAS 文件使用不同的类代码值来表示未分类或地面测量值,则使用更改 LAS 类代码工具对其进行相应的重新分配。分类过程还将忽略分配有重叠或保留分类标记的点。
如果地面分类点将用于以指定的分辨率生成地面栅格表面,请考虑使用 DEM 分辨率生成更快的结果。通过减少分配给地面分类代码的点数,同时保持指定分辨率所必需的覆盖范围,可以提高性能。
当分类 LAS 返回具有不同坡度特征的地形时,例如相对平坦的区域中含有坡度剖面陡峭的位置,可考虑使用标准方法运行一次地面分类器,然后使用激进检测方法并启用重复使用地面选项,再次运行地面分类器。应用处理范围或指定面边界以将此操作限制为仅需要其的区域。
由于带有桥梁和高速公路入口匝道的位置可能会被错误分类为地面,所以应对这些位置进行检查。
语法
arcpy.3d.ClassifyLasGround(in_las_dataset, method, {reuse_ground}, {dem_resolution}, {compute_stats}, {extent}, boundary, {process_entire_files})
参数 | 说明 | 数据类型 |
in_las_dataset | 待处理的 LAS 数据集。仅评估类代码值为 0、1 或 2 的 LAS 点的最近返回结果。 | LAS Dataset Layer |
method | 指定用于检测地面点的方法
| String |
reuse_ground (可选) | 指定现有地面点是否会重新分类或重新使用。
| Boolean |
dem_resolution (可选) | 将导致仅评估分类为地面的点子集,从而加快分类过程的距离。需要更迅速地生成 DEM 表面时可考虑使用该参数。最小距离为 0.3 米,但指定距离必须至少为激光雷达数据平均点间距的 1.5 倍,否则该过程将无法生效。 | Linear Unit |
compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。计算统计数据时会为每个 LAS 文件提供一个空间索引,从而提高了分析和显示性能。统计数据还可通过将 LAS 属性(如分类代码和返回信息)显示限制为 LAS 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
extent (可选) | 指定将由此工具进行评估的数据范围。
| Extent |
boundary | 定义将由此工具进行处理的感兴趣区域的面要素。 | Feature Layer |
process_entire_files (可选) | 指定处理范围的应用方式。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
out_las_dataset | 已修改的 LAS 数据集。 | LAS 数据集图层 |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasGround_3d('metro.lasd', 'CONSERVATIVE',
boundary='study_area.shp',
process_entire_files='PROCESS_ENTIRE_FILES')
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Classify Ground & Vegetation in Forest Environment
Description: Classify points representing vegetation with LAS class code values
of 3, 4, and 5. The code is designed for use as a script tool.
****************************************************************************'''
# Import system modules
import arcpy
# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
lasd = arcpy.GetParameterAsText(2)
try:
arcpy.CheckOutExtension('3D')
# Execute CreateLasDataset
arcpy.management.CreateLasDataset(inLas, lasd, folder_recursion=recursion)
# Make an initial pass of ground classifier
arcpy.ddd.ClassifyLasGround(lasd, method="Conservative")
# Make a secondary pass to capture ridges
arcpy.ddd.ClassifyLasGround(lasd, method="Aggressive",
reuse_ground="REUSE_GROUND")
# Classify vegetation
arcpy.ddd.ClassifyLasByHeight(lasd, ground_source='GROUND',
height_classification=[[3, 5],
[4, 17],
[5, 120]],
noise='HIGH_NOISE', compute_stats="COMPUTE_STATS")
arcpy.CheckInExtension('3D')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst