更改 LAS 类代码 (3D Analyst)

摘要

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

使用情况

  • 此工具将对 LAS 数据集所引用的所有 .las 文件进行评估,但只有包含所提供的类代码的文件才会被修改。

  • 考虑使用此工具更新在引入 LAS 1.1 规范中的标准化类代码之前生成的 .las 文件中数据点的分类。

  • ArcGIS 使用美国摄影测量及遥感协会 (ASPRS) 定义的 LAS 分类方案。 了解有关激光雷达点分类的详细信息

    分类值含义

    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
类代码

指定要修改的现有类代码的列表,以及将对其各自的分类代码值和分类标记进行的更改。

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

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

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

待评估数据的范围。

  • 当前显示范围 Current Display Extent - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 绘制范围 Draw Extent - 范围将基于在地图或场景上绘制的矩形。 此选项将在工程地理数据库中创建要素类并将图层添加至地图。 该要素类的坐标系将与地图相同。
    注:

    环境对话框中不提供此选项。 只能在具有范围数据类型的工具参数中或工具对话框的环境选项卡中找到此选项。

    注:

    当选中从“编辑”选项卡启用和禁用编辑编辑选项时,必须在编辑功能区选项卡上启用编辑才能绘制范围。

  • 图层范围 Layer - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 Select All - 图层中所有要素的范围。
    • 选定要素Area from Selected Features - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 Area from Selected Features可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 Browse - 范围基于现有数据集。
  • 输入的交集 Intersect - 范围将基于所有输入的最小或交叉范围。 如果输入未重叠,则结果为包含所有零值的空范围。
  • 输入的并集 Union - 范围将基于所有输入的最大或合并范围。
  • 剪贴板 Paste - 可在剪贴板中复制和粘贴范围。
    • 复制范围 Copy - 将范围坐标和坐标系复制到剪贴板。
    • 粘贴范围 Paste - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 Reset - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

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],...]

指定要修改的现有类代码的列表,以及将对其各自的分类代码值和分类标记进行的更改。

现有的类代码、新的类代码和新的类标记可以表示为以空格分隔的字符串或包含要重新分类的值的列表序列。 例如,通过指定 "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)

相关主题