着色 LAS (3D Analyst)

摘要

将正射影像的颜色和近红外值应用于 LAS 点。

插图

着色 LAS

使用情况

  • 使用 RGB 信息显示 LAS 点可以提供身临其境的逼真显示,由此提供独特的显示体验。叠加到 LAS 点上的真实影像的视觉反馈还可以提供有关点云离散特征的信息,在以交互方式分类数据、数字化新要素以及建立 3D 距离测量的参考点时,这些信息非常有用。

  • 要实现与所捕获要素的最佳匹配,应与激光雷达同时获取用于将颜色应用于 LAS 点的最佳影像。如果缺少最佳影像,则需要尝试使用尽可能接近扫描日期的影像,以最大限度地减少由于建筑物或落叶的季节性变化等事件而造成的差异。

  • 如果源影像包含大量切片图像,请考虑将这些切片加载到镶嵌数据集中,以将其作为单个数据集引用,并将其用作着色 LAS 数据的图像输入。了解有关创建镶嵌数据集的详细信息。

  • 只有具有点记录格式 8 的 LAS 文件版本 1.4 支持存储 LAS 点的近红外值。

  • 在定义处理范围时,将对与处理范围相交的整个 LAS 文件进行着色。如果仅需要输入 LAS 文件的子集,请考虑使用提取 LAS 工具来裁剪掉子集,然后使用生成的文件作为此工具的输入。

  • LAS 点记录以不符合点空间聚类的二进制序列存储在 .las 文件中的情况并不罕见。 查询此类数据分布时,访问代表 LAS 点的二进制记录的效率会有所降低。 在生成的 .las 文件中重新排列点可优化数据以供可视化及其他空间操作。 启用重新排列选项后,将自动计算统计数据。 如果未重新排列 LAS 点,则可以启用或禁用计算统计数据。 计算统计数据可优化空间查询并对 .las 文件中存在的类代码和返回值提供汇总信息。 但是,这也会增加工具的处理时间。 如果不在 ArcGIS 中使用生成的 .las 文件,则可以禁用计算统计数据,以便加快工具的处理速度。

参数

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

将要处理的 LAS 数据集。

LAS Dataset Layer
输入影像

用于将颜色分配到 LAS 点的影像。

Mosaic Layer; Raster Layer
波段分配

来自输入影像,将被分配到和输出 LAS 点相关联的颜色通道的波段。

Value Table
目标文件夹

将写入输出 .las 文件的现有文件夹。

Folder
输出文件名后缀
(可选)

将追加到每个输出 .las 文件名的文本。 每个文件都将从其源文件继承其基本名称,后跟此参数中指定的后缀。

String
LAS 文件版本
(可选)

正在创建的输出文件的 LAS 版本。

  • LAS 1.2 文件将创建 LAS 文件版本 1.2。
  • LAS 1.3 文件将创建 LAS 文件版本 1.3。
  • LAS 1.4 文件将创建 LAS 文件版本 1.4。这是默认设置。
String
点格式
(可选)

输出 LAS 文件的点记录格式。

  • 2点记录格式 2。
  • 3点记录格式 3 支持存储 GPS 时间。
  • 7点记录格式 7。这是默认值,且仅适用于 LAS 版本 1.4
  • 8点记录格式 8 支持存储近红外值。这仅适用于 LAS 版本 1.4。
Long
压缩
(可选)

指定输出 .las 文件为压缩格式还是标准 LAS 格式。

  • 不压缩输出将为标准 LAS 格式(*.las 文件)。 这是默认设置。
  • zLAS 压缩输出 .las 文件将以 zLAS 格式压缩。
String
重新排列点
(可选)

指定 .las.zlas 文件中的点是否将重新排列以优化读取和更新点云分类的性能。

  • 未选中 - 点的顺序将不会重新排列。
  • 选中 - 点的顺序将重新排列为空间聚类,以优化数据读取。 重新排列的点可以提高在点云上执行的后续操作的性能。 这是默认设置。
Boolean
计算统计数据
(可选)

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

  • 选中 - 将计算统计数据。 这是默认设置。
  • 未选中 - 不计算统计数据。
Boolean
输出 LAS 数据集
(可选)

参考新创建的 .las 文件的输出 LAS 数据集。

LAS Dataset

派生输出

标注说明数据类型
输出文件夹

将在其中写入输出 LAS 文件的文件夹。

文件夹

arcpy.ddd.ColorizeLas(in_las_dataset, in_image, bands, target_folder, {name_suffix}, {las_version}, {point_format}, {compression}, {rearrange_points}, {compute_stats}, {out_las_dataset})
名称说明数据类型
in_las_dataset

将要处理的 LAS 数据集。

LAS Dataset Layer
in_image

用于将颜色分配到 LAS 点的影像。

Mosaic Layer; Raster Layer
bands
[bands,...]

来自输入影像,将被分配到和输出 LAS 点相关联的颜色通道的波段。

Value Table
target_folder

将写入输出 .las 文件的现有文件夹。

Folder
name_suffix
(可选)

将追加到每个输出 .las 文件名的文本。 每个文件都将从其源文件继承其基本名称,后跟此参数中指定的后缀。

String
las_version
(可选)

正在创建的输出文件的 LAS 版本。

  • 1.2将创建 LAS 文件版本 1.2。
  • 1.3将创建 LAS 文件版本 1.3。
  • 1.4将创建 LAS 文件版本 1.4。这是默认设置。
String
point_format
(可选)

输出 LAS 文件的点记录格式。

  • 2点记录格式 2。
  • 3点记录格式 3 支持存储 GPS 时间。
  • 7点记录格式 7。这是默认值,且仅适用于 LAS 版本 1.4
  • 8点记录格式 8 支持存储近红外值。这仅适用于 LAS 版本 1.4。
Long
compression
(可选)

指定输出 .las 文件为压缩格式还是标准 LAS 格式。

  • NO_COMPRESSION输出将为标准 LAS 格式(*.las 文件)。 这是默认设置。
  • ZLAS输出 .las 文件将以 zLAS 格式压缩。
String
rearrange_points
(可选)

指定 .las.zlas 文件中的点是否将重新排列以优化读取和更新点云分类的性能。

  • NO_REARRANGE_POINTS点的顺序将不会重新排列。
  • REARRANGE_POINTS点的顺序将重新排列为空间聚类,以优化数据读取。 重新排列的点可以提高在点云上执行的后续操作的性能。 这是默认设置。
Boolean
compute_stats
(可选)

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

  • COMPUTE_STATS将计算统计数据。 这是默认设置。
  • NO_COMPUTE_STATS不计算统计数据。
Boolean
out_las_dataset
(可选)

参考新创建的 .las 文件的输出 LAS 数据集。

LAS Dataset

派生输出

名称说明数据类型
output_folder

将在其中写入输出 LAS 文件的文件夹。

文件夹

代码示例

ColorizeLas 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'
arcpy.ddd.ColorizeLas('2014_lidar_survey.lasd', '2014_CIR.tif', 
                      'RED Band_1; GREEN Band_2; BLUE Band_3', 
                      'las/rgb', '_rgb', 1.3, 3, 'ZLAS', 
                      'REARRANGE_POINTS')
ColorizeLas 示例 2(独立脚本)

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

'''****************************************************************************
       Name: Classify Lidar & Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings, 
             regularize its geometry, and calculate the building height.

****************************************************************************'''
import arcpy

lasd = arcpy.GetParameterAsText(0)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)

try:
    desc = arcpy.Describe(lasd)
    if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
        unit = 'Feet'
    else:
        unit = 'Meters'
    ptSpacing = desc.pointSpacing * 2.25
    sampling = '{0} {1}'.format(ptSpacing, unit)
    # Classify overlap points
    arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
    # Classify ground points
    arcpy.ddd.ClassifyLasGround(lasd)
    # Filter for ground points
    arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
    # Generate DEM
    arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION', 
                                        'BINNING NEAREST NATURAL_NEIGHBOR', 
                                        sampling_type='CELLSIZE', 
                                        sampling_value=desc.pointSpacing)
    # Classify noise points
    arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY', 
                               withheld='WITHHELD', ground=dem, 
                               low_z='-2 feet', high_z='300 feet', 
                               max_neighbors=ptSpacing, step_width=ptSpacing, 
                               step_height='10 feet')
    # Classify buildings
    arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
    #Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55], 
                                  compute_stats='COMPUTE_STATS')
    # Filter LAS dataset for building points
    lasd_layer = 'building points'
    arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
    # Export raster from lidar using only building points
    temp_raster = 'in_memory/bldg_raster'
    arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    # Convert building raster to polygon
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    # Regularize building footprints
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
                                          method='RIGHT_ANGLES')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

许可信息

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

相关主题