描述
将正射影像的颜色和近红外值应用于 LAS 点。
插图
使用方法
使用 RGB 信息显示 LAS 点可以提供身临其境的逼真显示,由此提供独特的显示体验。叠加到 LAS 点上的真实影像的视觉反馈还可以提供有关点云离散特征的信息,在以交互方式分类数据、数字化新要素以及建立 3D 距离测量的参考点时,这些信息非常有用。
要实现与所捕获要素的最佳匹配,应与激光雷达同时获取用于将颜色应用于 LAS 点的最佳影像。如果缺少最佳影像,则需要尝试使用尽可能接近扫描日期的影像,以最大限度地减少由于建筑物或落叶的季节性变化等事件而造成的差异。
如果源影像包含大量切片图像,请考虑将这些切片加载到镶嵌数据集中,以将其作为单个数据集引用,并将其用作着色 LAS 数据的图像输入。了解有关创建镶嵌数据集的详细信息。
只有具有点记录格式 8 的 LAS 文件版本 1.4 支持存储 LAS 点的近红外值。
在定义处理范围时,将对与处理范围相交的整个 LAS 文件进行着色。如果仅需要输入 LAS 文件的子集,请考虑使用提取 LAS 工具来裁剪掉子集,然后使用生成的文件作为此工具的输入。
LAS 点记录以不符合点空间聚类的二进制序列存储在 LAS 文件中并不罕见。查询此类数据分布时,访问代表 LAS 点的二进制记录的效率会有所降低。在生成的 LAS 文件中重新排列点可优化数据以供可视化及其他空间操作。启用重新排列选项后,将自动计算统计数据。如果您选择不重新排列 LAS 点,则可以选择启用或禁用计算统计数据。计算统计数据可优化空间查询并对 LAS 文件中存在的类代码和返回值提供汇总信息。但是,这也会增加工具的处理时间。如果不在 ArcGIS 中使用生成的 LAS 文件,则可以选择禁用计算统计数据,以便加快工具的执行速度。
语法
arcpy.3d.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 版本。
| String |
point_format (可选) | 输出 LAS 文件的点记录格式。
| Long |
compression (可选) | 指定输出 LAS 文件为压缩格式还是标准 LAS 格式。
| String |
rearrange_points (可选) | 确定是否重新排列 LAS 文件中的点。
| Boolean |
compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。计算统计数据时会为每个 LAS 文件提供一个空间索引,从而提高了分析和显示性能。统计数据还可通过将 LAS 属性(如分类代码和返回信息)显示限制为 LAS 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
out_las_dataset (可选) | 参考新创建的 LAS 文件的输出 LAS 数据集。 | LAS Dataset |
派生输出
名称 | 说明 | 数据类型 |
output_folder | 将在其中写入输出 LAS 文件的文件夹。 | 文件夹 |
代码示例
下面的示例演示了如何在 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')
下面的示例演示了如何在独立 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