分类 LAS 地面点 (3D Analyst)

摘要

LAS 数据中的地面点。

了解有关地面分类的详细信息

插图

分类 LAS 地面点工具图示

使用情况

  • 此工具要求输入 LAS 数据集具有投影坐标系。 通过将提取 LAS 工具与输出坐标系环境设置中指定的投影坐标系结合使用,可以对地理坐标系中存储的数据进行重新投影。 如果投影坐标系基于不同的基准面,则应指定基准面变换。

  • 只有类别代码值为 0、1 或 2 的 LAS 点可以被分配为地面点。 如果您的 LAS 文件使用不同的类代码值来表示未分类或地面测量值,请使用更改 LAS 类代码工具对其进行相应的重新分配。 分类过程还将忽略分配有重叠或保留分类标记的点。

  • 标准分类方法通常能满足大多数数据集的地面点检测需求。 如果检测到的地面点中包含较多非地面点,建议使用保守分类方法来减少这种误差。 相反,如果数据集中包含具有陡坡要素的崎岖地形,且可能被植被部分遮挡,建议采用激进分类方法,以捕捉更多的地面点。 若使用该选项后仍有部分山脊未被识别,可通过空间范围或面边界划定改进区域,并启用恢复山脊选项重新运行工具。

  • 由于带有桥梁和高速公路入口匝道的位置可能会被错误分类为地面,因此应对这些位置进行检查。 要纠正这些区域,建议应用处理范围或边界,隔离错误分类区域及其周围的部分地形,然后再次运行工具。 隔离的区域应尽量避开桥梁或匝道与地面连接的部分。

  • 如果您需要比正常数据集处理时间更快地获取地面分类结果,可以使用 DEM 分辨率参数。 该参数可确保分类地面点的数量足以生成指定分辨率的地面栅格表面,但分类地面点数量将少于常规处理。

    了解关于如何使用激光雷达创建地面高程栅格的详细信息。

参数

标注说明数据类型
输入 LAS 数据集

将要处理的 LAS 数据集。 仅评估类代码值为 0、1 或 2 的 LAS 点的最近返回结果。

LAS Dataset Layer
地面检测方法

指定将用于检测地面点的方法。

  • 标准分类该方法对坡度变化具有容差,因此可以捕获到使用保守的传统方法无法捕获到的地面地形上的平缓波动,但是该方法无法捕获到通过激进方法捕获到的坡度起伏较大的地貌波动。 这是默认设置。
  • 传统分类与其他方法相比,该方法对地面坡度的变化使用了更为严格的限制,因此该方法可将地面与草地和灌木丛等低地植被区分开来。 该方法最适合最小曲率的地形。
  • 大胆分类对于标准方法容易忽略的山脊和山顶等地貌起伏较大的地面区域,此选项可检测到这些内容。 该方法最好在重新使用现有地面参数选中的情况下用于该工具的第二次迭代。 该方法不宜用于城市区域或地势平坦的乡村区域,因为可能会将地势较高的对象(例如,发电塔、植被和建筑物局部)错误分类为地面。
  • 恢复山脊该方法还可以检测激进方法未捕捉到的山脊。 使用此方法时,必须提供处理范围或面边界。
String
重复使用现有地面
(可选)

指定现有地面点是否会重新分类或重新使用。

  • 未选中 - 现有地面点将会重新分类。 将会为不属于地面的点重新分配类代码值 1,表示未分类的点。 这是默认设置。
  • 选中 - 现有地面点不经详查即可接受并重用,且可帮助确定未分类的点。
Boolean
DEM 分辨率
(可选)

将导致仅评估分类为地面的点子集,从而加快分类过程的距离。 需要更迅速地生成 DEM 表面时可考虑使用该参数。 最小距离为 0.3 米,但提供的距离必须至少为激光雷达数据平均点间距的 1.5 倍,否则该过程将无法生效。

Linear Unit
计算统计数据
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • 选中 - 将计算统计数据。 这是默认设置。
  • 未选中 - 不计算统计数据。
Boolean
处理范围
(可选)

待评估数据的范围。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。
  • 图层范围 图层 - 范围基于活动地图图层。 选择可用图层或者使用所有图层中的数据范围选项。 每个地图图层具有以下选项:

    • 所有要素 全选 - 所有要素的范围。
    • 选定要素 基于选定要素的区域 - 选定要素的范围。
    • 可见要素 Extent Indicator - 可见要素的范围。

  • 浏览 浏览 - 范围将基于数据集。
  • 输入的交集 相交 - 范围将为所有输入的相交范围。
  • 输入的并集 联合 - 范围将为所有输入的合并范围。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围和坐标系复制到剪贴板。
    • 粘贴范围 粘贴 - 从剪贴板粘贴范围和坐标系。 如果剪贴板不包含坐标系,则范围将使用地图的坐标系。
  • 重置范围 重置 - 将范围重置为默认值。

当手动提供坐标时,坐标必须为数值,并且位于活动地图的坐标系中。 地图可能使用与提供的坐标不同的显示单位。 在南纬和西经坐标中使用负号。

Extent
处理边界

面要素或定义要处理区域的要素。

Feature Layer
处理与范围相交的整个 LAS 文件
(可选)

指定将如何使用感兴趣区以确定 .las 文件的处理方式。 感兴趣区由处理范围参数值和处理边界参数值定义,或由二者共同定义。

  • 未选中 - 仅处理与感兴趣区相交的 LAS 点。 这是默认设置。
  • 选中 - 如果 .las 文件的任何部分与感兴趣区相交,则该 文件中的所有点(包括感兴趣区以外的点)都会得到处理。
Boolean
更新金字塔
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • 选中 - LAS 数据集金字塔将更新。 这是默认设置。
  • 未选中 - LAS 数据集金字塔不会更新。
Boolean
检测算法
(可选)

指定将用于对地面点进行分类的地面检测算法的版本。

  • 最近日期将使用最新版本的地面检测算法。 此选项改进了噪点和异常点的处理,特别是对于摄影测量方式获得的点云。 在大多数情况下,它还可以优化结果并提高性能。 这是默认设置。
  • 第一代将使用地面检测算法的初始版本。 仅当最新版本的结果不适用时才会使用此选项。
String
分类低噪声点
(可选)

指定是否将低于地面以下给定距离的点分类为低噪声点。 识别噪声点的距离基于地下深度下限参数值。 将为低噪声点分配类代码值 7。

  • 选中 - 将分类低噪声点。
  • 未选中 - 将不会分类低噪声点。 这是默认设置。
Boolean
地下深度下限
(可选)

将用于对低噪声点进行分类的地面以下距离。 将由根据地面分类点创建的三角化表面来定义地面。 对于类代码为 0 或 1 且低于地面达到此参数中提供的高度的所有点,将为其分配类代码值 7。

Linear Unit
保留现有低噪声点
(可选)

指定是将保留类代码为 7 的现有低噪声点,还是对其进行重新分类。 如果对低噪声点进行重新分类,则对于任何未低于地面至少为地下深度下限参数值提供的距离的点,将为其分配类代码值 1。

  • 选中 - 将保留现有低噪声点。 这是默认设置。
  • 未选中 - 将对现有低噪声点进行重新分类。
Boolean
分类高噪声点
(可选)

指定是否将高于地面给定距离的点分类为高噪声点。 识别噪声点的距离基于地上高度下限参数值。 将为高噪声点分配类代码值 18。

  • 选中 - 将分类高噪声点。
  • 未选中 - 将不会分类高噪声点。 这是默认设置。
Boolean
地上高度下限
(可选)

将用于分类高噪声点的地上距离。 将由根据地面分类点创建的三角化表面来定义地面。 对于类代码为 0 或 1 且高于地面达到此参数中提供的高度的所有点,将为其分配类代码值 18。

Linear Unit
保留现有高噪声点
(可选)

指定是将保留类代码为 18 的现有高噪声点,还是对其进行重新分类。 如果高噪点被重新分类,任何未高于地上高度下限参数规定距离的点将被赋予类别代码值 1。

  • 选中 - 将保留现有高噪声点。 这是默认设置。
  • 未选中 - 现有高噪声点将会重新分类。
Boolean

派生输出

标注说明数据类型
输出 LAS 数据集

已修改的 LAS 数据集。

LAS Dataset Layer

arcpy.ddd.ClassifyLasGround(in_las_dataset, method, {reuse_ground}, {dem_resolution}, {compute_stats}, {extent}, boundary, {process_entire_files}, {update_pyramid}, {algorithm}, {classify_low_noise}, {minimum_depth_below_ground}, {preserve_low_noise}, {classify_high_noise}, {minimum_height_above_ground}, {preserve_high_noise})
名称说明数据类型
in_las_dataset

将要处理的 LAS 数据集。 仅评估类代码值为 0、1 或 2 的 LAS 点的最近返回结果。

LAS Dataset Layer
method

指定将用于检测地面点的方法。

  • STANDARD该方法对坡度变化具有容差,因此可以捕获到使用保守的传统方法无法捕获到的地面地形上的平缓波动,但是该方法无法捕获到通过激进方法捕获到的坡度起伏较大的地貌波动。 这是默认设置。
  • CONSERVATIVE与其他方法相比,该方法对地面坡度的变化使用了更为严格的限制,因此该方法可将地面与草地和灌木丛等低地植被区分开来。 该方法最适合最小曲率的地形。
  • AGGRESSIVE对于标准方法容易忽略的山脊和山顶等地貌起伏较大的地面区域,此选项可检测到这些内容。 该方法最好在重新使用现有地面参数选中的情况下用于该工具的第二次迭代。 该方法不宜用于城市区域或地势平坦的乡村区域,因为可能会将地势较高的对象(例如,发电塔、植被和建筑物局部)错误分类为地面。
  • RECOVER_RIDGES该方法还可以检测激进方法未捕捉到的山脊。 使用此方法时,必须提供处理范围或面边界。

指定将用于检测地面点的方法。

  • STANDARD此方法通常适用于大多数地形,能够容忍坡度变化,适用于各种地形的地面检测。 相比保守选项,它能捕捉更多的地面点,但在坡度陡峭的地形上可能仍会遗漏部分地面点。 这是默认设置。
  • CONSERVATIVE与其他方法相比,该方法对地面坡度的变化使用了更为严格的限制,因此该方法可将地面与草地和灌木丛等低地植被区分开来。 该方法最适合最小曲率的地形。
  • AGGRESSIVE该方法最适用于崎岖地形的地面检测。 不建议在坡度较平坦的地形中使用该方法,因为它可能会将低矮植被或人造物体误分类为地面。
  • RECOVER_RIDGES该方法可检测前一分类中未识别的山脊地面点。 它主要用于崎岖地形上的孤立区域。 因此,需要提供处理范围或面边界。
String
reuse_ground
(可选)

指定现有地面点是否会重新分类或重新使用。

  • RECLASSIFY_GROUND现有地面点将会重新分类。 将会为不属于地面的点重新分配类代码值 1,表示未分类的点。 这是默认设置。
  • REUSE_GROUND现有地面点不经详查即可接受并重用,且可帮助确定未分类的点。
Boolean
dem_resolution
(可选)

将导致仅评估分类为地面的点子集,从而加快分类过程的距离。 需要更迅速地生成 DEM 表面时可考虑使用该参数。 最小距离为 0.3 米,但提供的距离必须至少为激光雷达数据平均点间距的 1.5 倍,否则该过程将无法生效。

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

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • UPDATE_PYRAMIDLAS 数据集金字塔将更新。 这是默认设置。
  • NO_UPDATE_PYRAMIDLAS 数据集金字塔不会更新。
Boolean
algorithm
(可选)

指定将用于对地面点进行分类的地面检测算法的版本。

  • LATEST将使用最新版本的地面检测算法。 此选项改进了噪点和异常点的处理,特别是对于摄影测量方式获得的点云。 在大多数情况下,它还可以优化结果并提高性能。 这是默认设置。
  • FIRST将使用地面检测算法的初始版本。 仅当最新版本的结果不适用时才会使用此选项。
String
classify_low_noise
(可选)

指定是否将低于地面以下给定距离的点分类为低噪声点。 识别噪声点的距离基于 minimum_depth_below_ground 参数值。 将为低噪声点分配类代码值 7。

  • CLASSIFY_LOW_NOISE将分类低噪声点。
  • NO_CLASSIFY_LOW_NOISE将不会分类低噪声点。 这是默认设置。
Boolean
minimum_depth_below_ground
(可选)

将用于对低噪声点进行分类的地面以下距离。 将由根据地面分类点创建的三角化表面来定义地面。 对于类代码为 0 或 1 且低于地面达到此参数中提供的高度的所有点,将为其分配类代码值 7。

Linear Unit
preserve_low_noise
(可选)

指定是将保留类代码为 7 的现有低噪声点,还是对其进行重新分类。 如果对低噪声点进行重新分类,则对于任何未低于地面至少为 minimum_depth_below_ground 参数值提供的距离的点,将为其分配类代码值 1。

  • PRESERVE_LOW_NOISE将保留现有低噪声点。 这是默认设置。
  • RECLASSIFY_LOW_NOISE将对现有低噪声点进行重新分类。
Boolean
classify_high_noise
(可选)

指定是否将高于地面给定距离的点分类为高噪声点。 识别噪声点的距离基于 minimum_height_above_ground 参数值。 将为高噪声点分配类代码值 18。

  • CLASSIFY_HIGH_NOISE将分类高噪声点。
  • NO_CLASSIFY_HIGH_NOISE将不会分类高噪声点。 这是默认设置。
Boolean
minimum_height_above_ground
(可选)

将用于分类高噪声点的地上距离。 将由根据地面分类点创建的三角化表面来定义地面。 对于类代码为 0 或 1 且高于地面达到此参数中提供的高度的所有点,将为其分配类代码值 18。

Linear Unit
preserve_high_noise
(可选)

指定是将保留类代码为 18 的现有高噪声点,还是对其进行重新分类。 如果对高噪声点进行重新分类,则对于任何未高于地面至少为 minimum_height_above_ground 参数提供的距离的点,将为其分配类代码值 1。

  • PRESERVE_HIGH_NOISE将保留现有高噪声点。 这是默认设置。
  • RECLASSIFY_HIGH_NOISE现有高噪声点将会重新分类。
Boolean

派生输出

名称说明数据类型
out_las_dataset

已修改的 LAS 数据集。

LAS Dataset Layer

代码示例

ClassifyLasGround 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasGround_3d('metro.lasd', 'CONSERVATIVE', 
                           boundary='study_area.shp', 
                           process_entire_files='PROCESS_ENTIRE_FILES')
ClassifyLasGround 示例 2(独立脚本)

下面的示例演示了如何在独立 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

相关主题