更改 LAS 类代码 (3D Analyst)

摘要

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

使用情况

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

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

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

    Classification Value Classification Type

    0

    Never Classified

    1

    Unassigned

    2

    Ground

    3

    Low Vegetation

    4

    Medium Vegetation

    5

    High Vegetation

    6

    Building

    7

    Low Noise

    8

    Model Key / Reserved

    9

    Water

    10

    Rail

    11

    Road Surface

    12

    Overlap / Reserved

    13

    Wire – Guard

    14

    Wire – Conductor

    15

    Transmission Tower

    16

    Wire – Connector

    17

    Bridge Deck

    18

    High Noise

    19 – 63

    Reserved for ASPRS Definition (LAS 1.1 to 1.3 support up to class code 31)

    32 – 255

    User Definable (Only supported in LAS 1.0 and certain versions of 1.4)

参数

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

待处理的 LAS 数据集。

LAS Dataset Layer
类代码

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

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

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

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

待评估数据的范围。

  • 默认 - 该范围将基于所有参与输入的最大范围设定。这是默认设置。
  • 输入的并集 - 该范围将基于所有输入的最大范围。
  • 输入的交集 - 该范围将基于所有输入共用的最小区域。
  • 当前显示范围 - 该范围与可见显示范围相等。如果没有活动地图,则该选项将不可用。
  • 如下面的指定 - 该范围将基于指定的最小和最大范围值。
  • 浏览 - 该范围将基于现有数据集。
Extent
处理边界

定义将进行处理的感兴趣区域的面要素。

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

指定将如何使用感兴趣区以确定 .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 文件的任何部分与感兴趣区相交,则该 .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

相关主题