切片 LAS (3D Analyst)

描述

创建一组不重叠的 LAS 文件,按规则格网划分其水平范围。

使用方法

  • 无论可能应用的任何图层过滤器的设置如何,切片操作都将保留位于经切片的 LAS 数据集的处理范围内的所有点。如果需要过滤,请考虑在对 LAS 数据集进行切片之前或之后使用提取 LAS 工具。

  • 对大小超过 500 MB 的大型 LAS 文件进行细分将提高相应操作的性能,这些操作依赖于读取空间聚类中的数据,例如,需要创建表面的分析操作或者数据可视化操作。默认切片方案可生成方形切片,其宽度和高度由大小限制为 250 MB 的目标文件进行定义。位于单个切片区域范围内的多个 LAS 文件中的点将合并为输出切片。

  • 由具有重叠范围的 LAS 文件组成的 LAS 数据集可能会由于依赖逐个文件分析的操作而产生不准确的结果。例如,点间距估算是通过分析每个文件的点在该文件内的覆盖区域而得出,因此没有用于在重叠区域中调整点的影响的机制。同样,稀疏化 LAS 工具也依赖于逐个文件的处理,并且结果不符合存在文件重叠区域中的预期输出。

  • 重新排列 LAS 点将对激光雷达数据进行空间聚类,并提高可视化和执行分析操作时的性能。该过程需要创建临时文件。考虑在环境设置中将固态硬盘中的文件夹指定为临时工作空间,以提高该操作的速度。

  • 如果 LAS 数据已经分类且已准备好存档或分发,可考虑指定 ZLAS 压缩。ZLAS 文件不可编辑且无法重新分类,但其通常可将文件大小减少到未压缩 LAS 文件的大约三分之一。

  • 可使用以下其中一种方法来定义 LAS 切片:

    • 指定未压缩的 LAS 文件的目标文件大小。此大小为在整个范围内等值分布时的 LAS 切片估算大小。
    • 指定切片宽度和高度。
    • 指定输入要素以定义切片方案。每个面均应为宽度和高度统一的矩形。创建渔网生成细分面工具可用于创建覆盖 LAS 数据范围的切片面。可使用输入要素并在命名方法参数中选择文本字段来分配自定义 LAS 切片名称。
  • 可通过在环境设置中指定输出坐标系或使用空间参考与原始 LAS 文件不同的输入要素来重新投影输出 LAS 切片。只有安装了垂直基准面变换格网后,才能完成 z 基准面变换。

  • 此工具通过指定比输入 LAS 数据集范围更大的切片大小,将分布在多个文件中的 LAS 点合并到一个 LAS 文件中。

语法

arcpy.3d.TileLas(in_las_dataset, target_folder, {base_name}, {out_las_dataset}, {compute_stats}, {las_version}, {point_format}, {compression}, {las_options}, {tile_feature}, {naming_method}, {file_size}, {tile_width}, {tile_height}, {tile_origin})
参数说明数据类型
in_las_dataset

待处理的 LAS 数据集。

LAS Dataset Layer
target_folder

将在其中写入切片 LAS 文件的文件夹。

Folder
base_name
(可选)

每个输出文件均以该名称开头。

String
out_las_dataset
(可选)

引用由此工具创建的切片 LAS 文件的新 LAS 数据集。此操作是可选的。

LAS Dataset
compute_stats
(可选)

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

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

指定每个输出文件的 LAS 文件版本。默认值为 1.4。

  • 1.0此版本支持 256 种唯一类代码,但是没有预定义的分类方案。
  • 1.1该版本引入了预定义的分类方案和点记录格式 0 和 1,以及从激光雷达传感器以外的源获取的点的合成分类标记。
  • 1.2此版本的特点是支持 GPS 时间以及点记录 2 和 3 中的 RGB 记录。
  • 1.3该版本新增了对波形数据的点记录 4 和 5 的支持。但是,不会在 ArcGIS 中读取波形信息。
  • 1.4此版本引入了点记录格式 6 到 10,以及新的类定义、256 种唯一类代码和重叠分类标记。
String
point_format
(可选)

输出 LAS 文件的点记录格式。可用选项取决于 point_format 参数中指定的 LAS 文件版本。

Long
compression
(可选)

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

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

输出 LAS 文件的可选修改列表。

  • REARRANGE_POINTSLAS 点将根据其空间聚类进行排列。
  • REMOVE_VLR添加在标题后的可变长度记录以及每个文件的点记录将被移除。
  • REMOVE_EXTRA_BYTES输入 LAS 文件中每个点记录存在的额外字节将被移除。
String
tile_feature
(可选)

定义在切片激光雷达数据时使用的切片宽度和高度的面要素。假定面为矩形,并使用首个要素范围来定义切片宽度和高度。

Feature Layer
naming_method
(可选)

指定每个输出切片的命名方式。在 tile_feature 参数中指定输入要素时,还将指定其文本或数值字段的名称用作定义输出 LAS 文件名的源。该名称将追加到 base_name 参数中定义的文本的末尾。支持以下自动生成的命名约定:

  • XY_COORDS在每个切片的中间点处追加 X 和 Y 坐标。这是默认设置。
  • ROW_COLUMN根据所属的整体切片方案中的行与列来分配切片名称。行将从上至下逐渐增加,而列将从左至右逐渐增加。
  • ORDINAL根据创建顺序分配切片名称,其中 1 为第一切片,2 为第二切片,以此类推。
String
file_size
(可选)

该值以兆字节表示,代表在整个范围内等值分布的输出 LAS 切片的未压缩文件大小的上限。默认值为 250,该值用于估算切片宽度和高度。当为 tile_featuretile_width 以及 tile_height 参数提供了值时,将忽略该参数。

Double
tile_width
(可选)

每个切片的宽度。如果已为切片宽度和高度指定了值,则将忽略 file_size 参数。当已在 tile_feature 参数中指定了输入要素时,切片宽度将通过第一要素的高度获取,而此参数将被禁用。

Linear Unit
tile_height
(可选)

每个切片的高度。如果已为切片宽度和高度指定了值,则将忽略 file_size 参数。当已在 tile_feature 参数中指定了输入要素时,切片高度将通过第一要素的高度获取,而此参数将被禁用。

Linear Unit
tile_origin
(可选)

切片网格原点的坐标。可在输入 LAS 数据集的左下角获取默认值。当已在 tile_feature 参数中指定了输入要素时,将从第一要素的左下角继承原点,而此参数将被禁用。

Point

派生输出

名称说明数据类型
out_folder

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

文件夹

代码示例

TileLas 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'

arcpy.ddd.TileLas('Denver_2', basename='2014_', out_las_dataset='Denver_2014.lasd', 
                  las_version='1.4', point_format=6, compression='ZLAS Compression', 
                  las_options=['Rearrange points'], naming_method='ROW_COLUMN', file_size=300)
TileLas 示例 2(独立脚本)

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

'''****************************************************************************
       Name: Tile LAS File
Description: Creates tiled LAS files form an untiled collection.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las = arcpy.GetParameterAsText(1) # The LAS files that need to be tiled
out_folder = arcpy.GetParameterAsText(2) # folder for LAS files
basename = arcpy.GetParameterAsText(3) # basename for output files
out_lasd = arcpy.GetParameterAsText(4) # output LAS dataset


try:
    # Create temp LAS dataset to reference LAS files that will be tiled
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las, temp_lasd)
    arcpy.ddd.TileLas(temp_lasd, out_folder, basename, out_lasd, las_version=1.4, 
                      point_format=7, file_size=300)
    arcpy.management.Delete(temp_lasd)
    arcpy.ddd.ClassifyLasGround(out_lasd, method='AGGRESSIVE')
    arcpy.ddd.ClassifyLasBuilding(out_lasd, min_height='3 Meters', min_area='4 Meters')
    arcpy.ddd.ClassifyLasByHeight(out_lasd, height_classification=[(3, 6), (4,20), (5,70)],
                                  noise='All Noise', compute_stats='COMPUTE_STATS')

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

许可信息

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

相关主题