描述
创建一组不重叠的 LAS 文件,按规则格网划分其水平范围。
使用方法
无论可能应用的任何图层过滤器的设置如何,切片操作都将保留位于经切片的 LAS 数据集的处理范围内的所有点。如果需要过滤,请考虑在对 LAS 数据集进行切片之前或之后使用提取 LAS 工具。
对大小超过 500 MB 的大型 LAS 文件进行细分将提高相应操作的性能,这些操作依赖于读取空间聚类中的数据,例如,需要创建表面的分析操作或者数据可视化操作。默认切片方案可生成方形切片,其宽度和高度由大小限制为 250 MB 的目标文件进行定义。位于单个切片区域范围内的多个 LAS 文件中的点将合并为输出切片。
由具有重叠范围的 LAS 文件组成的 LAS 数据集可能会由于依赖逐个文件分析的操作而产生不准确的结果。例如,点间距估算是通过分析每个文件的点在该文件内的覆盖区域而得出,因此没有用于在重叠区域中调整点的影响的机制。同样,稀疏化 LAS 工具也依赖于逐个文件的处理,并且结果不符合存在文件重叠区域中的预期输出。
重新排列 LAS 点将对激光雷达数据进行空间聚类,并提高可视化和执行分析操作时的性能。该过程需要创建临时文件。考虑在环境设置中将固态硬盘中的文件夹指定为临时工作空间,以提高该操作的速度。
如果 LAS 数据已经分类且已准备好存档或分发,可考虑指定 ZLAS 压缩。ZLAS 文件不可编辑且无法重新分类,但其通常可将文件大小减少到未压缩 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 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
las_version (可选) | 指定每个输出文件的 LAS 文件版本。默认值为 1.4。
| String |
point_format (可选) | 输出 LAS 文件的点记录格式。可用选项取决于 point_format 参数中指定的 LAS 文件版本。 | Long |
compression (可选) | 指定输出 LAS 文件将为压缩格式还是标准 LAS 格式。
| String |
las_options [las_options,...] (可选) | 输出 LAS 文件的可选修改列表。
| String |
tile_feature (可选) | 定义在切片激光雷达数据时使用的切片宽度和高度的面要素。假定面为矩形,并使用首个要素范围来定义切片宽度和高度。 | Feature Layer |
naming_method (可选) | 指定每个输出切片的命名方式。在 tile_feature 参数中指定输入要素时,还将指定其文本或数值字段的名称用作定义输出 LAS 文件名的源。该名称将追加到 base_name 参数中定义的文本的末尾。支持以下自动生成的命名约定:
| String |
file_size (可选) | 该值以兆字节表示,代表在整个范围内等值分布的输出 LAS 切片的未压缩文件大小的上限。默认值为 250,该值用于估算切片宽度和高度。当为 tile_feature 或 tile_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 文件的文件夹。 | 文件夹 |
代码示例
下面的示例演示了如何在 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)
下面的示例演示了如何在独立 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