需要 3D Analyst 许可。
摘要
修改 LAS 数据集所引用的 LAS 文件的类代码值。
用法
- 此工具将对 LAS 数据集所引用的所有 LAS 文件进行评估,但只有包含所提供的类代码的文件才会被修改。 
- 在 LAS 1.1 规范中引入标准化类代码之前,先考虑使用此工具更新 LAS 文件中数据点的分类。 
- LAS 格式支持根据美国摄影测量与遥感协会 (ASPRS) 制定的规范对每个点进行分类。ArcGIS 平台应用为 LAS 文件版本 1.4 指定的分类方案: - 类别值 - 分类类型 - 0 - 从不分类 - 1 - 未分配 - 2 - 地面 - 3 - 低植被 - 4 - 中等植被 - 5 - 高植被 - 6 - 建筑物 - 7 - 低噪音 - 8 - 模型关键点/保留 - 9 - 水域 - 10 - 铁路 - 11 - 路面 - 12 - 重叠/保留 - 13 - 钢丝护网 - 14 - 导线 - 15 - 输电塔 - 16 - 线 - 连接器 - 17 - 桥板 - 18 - 高噪音 - 19 – 63 - 为 ASPRS 定义保留(LAS 1.1 至 1.3 最高支持类代码 31) - 32 – 255 - 可由用户定义(仅 LAS 1.0 和 1.4 的特定版本支持) 
语法
ChangeLasClassCodes_3d (in_las_dataset, class_codes, {compute_stats})| 参数 | 说明 | 数据类型 | 
| in_las_dataset | 待处理的 LAS 数据集。 | LAS Dataset Layer | 
| class_codes [[current_class new_class],...] | 以空格分隔的字符串或一列整型值将指定每对当前类代码和新类代码。例如,通过指定 "5 2" 或 [5, 2] 可将当前类代码 5 更改为 2。多个类代码可以分号分隔的字符串形式输入 ("5 2; 8 3; 1 4"),或以字符串列表形式输入(例如 [[5, 2], [8, 3], [1, 4]])。 | Value Table | 
| compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。统计数据的存在允许 LAS 数据集图层使用过滤和符号系统选项,以便仅显示 LAS 文件中存在的 LAS 属性值。 
 | Boolean | 
代码实例
更改 LAS 类代码 (ChangeLasClassCodes) 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ChangeLasClassCodes_3d('test.lasd', [[5, 2], [3, 1], [4, 6]], 
                           'COMPUTE_STATS')
更改 LAS 类代码 (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
import exceptions, sys, traceback
# 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)
try:
    arcpy.CheckOutExtension('3D')
    # Execute CreateLasDataset
    arcpy.management.CreateLasDataset(inLas, lasd, recursion)
    # Execute ChangeLasClassCodes
    arcpy.ddd.ChangeLasClassCodes(lasd, reclassList, calcStats)
    # Report messages
    arcpy.GetMessages()
    
except arcpy.ExecuteError:
    print arcpy.GetMessages()
    
except:
    # Get the traceback object
    tb = sys.exc_info()[2]
    tbinfo = traceback.format_tb(tb)[0]
    # Concatenate error information into message string
    pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
          .format(tbinfo, str(sys.exc_info()[1]))
    msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
    # Return python error messages for script tool or Python Window
    arcpy.AddError(pymsg)
    arcpy.AddError(msgs)