更改 LAS 类代码 (3D Analyst)

摘要

重新分配 .las.zlas 文件的分类代码和标记。

使用情况

  • 美国摄影测量与遥感协会 (ASPRS) 定义了 LAS 文件的类代码使用规则。 ASPRS 分类使 LAS 文件能够在不同应用程序中轻松处理和解释。 ASPRS 指南将类代码划分为保留类和用户自定义类。 保留类是 ASPRS 已定义或将来会定义的代码。 用户自定义类则用于尚未被保留类描述的对象分类。 目前,很多保留类已定义,如第 2 类代表地面,第 6 类代表建筑物,而未定义的保留类将在 LAS 规范演进中逐步明确。 因此,建议仅将保留类用于其特定对象,将自定义对象的类代码分配到用户自定义类。 建议使用该工具将任何使用保留类的自定义对象的类代码重新映射到用户自定义类。

  • 该工具不支持图层过滤器。 所有在当前类列中指定的类代码对应的点都会被修改。 您可以选择仅更改分类代码、特定类标记,或同时修改类代码和标记。例如,可以将类代码为 8 的地面模型关键点重新分配为第 2 类,并赋予模型关键点标记。 如果希望统一修改所有点的类代码,可以在当前类列中指定值 -1。 这对于重置现有分类以便评估不同分类设置,或对分类标记进行统一编辑非常有用。 例如,“合成”标记用于表示来自非激光雷达源的数据点。 如果点云来自摄影测量处理,并且您希望为每个点分配合成标记,则可以在当前类列中设置值 -1,并在合成列中指定设置

  • 分类代码和标记的使用可能因 LAS 文件版本和点记录格式而异。 在进行任何修改时,请考虑输入 .las.zlas 文件的限制。 为了获得更多点云分类选项,可以使用转换 LAS 工具将旧文件转换为 LAS 1.4 格式。 如果文件还需要切片或稀疏处理以提高性能,可以使用切片 LAS稀疏化 LAS 工具。

    LAS 文件版本类代码范围分类标记

    1.0

    0 - 255

    1.1

    0 - 31

    合成、关键点、保留

    1.2

    0 - 31

    合成、关键点、保留

    1.3

    0 - 31

    合成、关键点、保留

    1.4

    0 - 255

    合成、关键点、保留、重叠

    关键点和重叠标记替代了用于定义相同概念的部分分类代码。 这允许点既拥有描述其对象的分类代码,又保留模型关键点或重叠点的功能值。 如果您的 LAS 文件版本支持这些标记,建议根据需要进行修改。 历史上,模型关键点通过第 8 类分类代码定义,代表地面分类点的一个子集。 现在,可以将这些点重新分类为第 2 类,并赋予模型关键分类标记。

  • ArcGIS 按照 LAS 文件版本 1.4 规定的分类方案执行修改。

    分类值含义

    0

    已创建,从不分类

    1

    未分配

    2

    地面

    3

    低植被

    4

    中等植被

    5

    高植被

    6

    建筑物

    7

    低点

    8

    模型关键点

    9

    水体

    10

    铁路

    11

    路面

    12

    保留

    13

    钢丝护网(护罩)

    14

    导线(相位)

    15

    输电塔

    16

    线结构连接器(绝缘体)

    17

    桥板

    18

    高噪音

    19

    保留

    20

    已忽略地面

    21

    22

    时间排除

    23–63

    保留

    64–255

    用户自定义

    注:
    • 最新的 LAS 1.4 分类系统保留了这些代码(代码 8:模型关键点/保留和代码 12:重叠/保留),包含这些特征的点也应使用相应的类标记。
    • LAS 1.1-1.3 仅支持类 0-31。

参数

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

将要处理的 LAS 数据集。

LAS Dataset Layer
类代码

将要修改的类代码及其分类代码和分类标记的更改。 可以在当前类列中输入 -1,修改所有类代码。

Value Table
计算统计数据
(可选)

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

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

待评估数据的范围。

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

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

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

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

Extent
处理边界

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

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

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

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

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

  • 选中 - LAS 数据集金字塔将更新。 这是默认设置。
  • 未选中 - LAS 数据集金字塔不会更新。
Boolean

派生输出

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

更新后的 LAS 数据集。

LAS Dataset Layer

arcpy.ddd.ChangeLasClassCodes(in_las_dataset, class_codes, {compute_stats}, {extent}, boundary, {process_entire_files}, {update_pyramid})
名称说明数据类型
in_las_dataset

将要处理的 LAS 数据集。

LAS Dataset Layer
class_codes
[[current_class, new_class, synthetic, model_key, withheld, overlap],...]

将要修改的类代码及其分类代码和分类标记的更改。 可以在第一列(列表中的第一个项目)中提供值 -1,从而修改所有类代码。

现有的类代码、新的类代码和新的类标记可以表示为以空格分隔的字符串或包含要重新分类的值的列表序列。 例如,通过指定 "5 2"[[5, 2]] 可将当前类代码 5 更改为 25。 可以通过添加修改的关键字("5 2 SET"[[5, 2, "SET"]])来更改合成类标记。 多个更改内容可以分号分隔的字符串形式指定(例如 "5 2; 8 3; 1 4"),或以列表序列形式指定(例如 [[5, 2], [8, 3], [1, 4]])。

Value Table
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

派生输出

名称说明数据类型
derived_las_dataset

更新后的 LAS 数据集。

LAS Dataset Layer

代码示例

ChangeLasClassCodes 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'
arcpy.ddd.ChangeLasClassCodes('test.lasd', [[5, 2], [3, 1], [4, 6]],
                           'COMPUTE_STATS')
ChangeLasClassCodes 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
Name: Update LAS 1.0 Classification to ASPRS 1.1 Specs
Description: Updates classification of version 1.0 LAS files to conform to
             the standardized class codes introduced in the 1.1 specifications.
             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)
reclassList = arcpy.GetParameterAsText(3) #List of values '<oldCode> <newCode>'
calcStats = arcpy.GetParameter(4)

# Execute CreateLasDataset
arcpy.management.CreateLasDataset(inLas, lasd, recursion)
# Execute ChangeLasClassCodes
arcpy.ddd.ChangeLasClassCodes(lasd, reclassList, calcStats)

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题