将文件添加到 LAS 数据集 (Data Management)
摘要
将一个或多个 LAS 文件和表面约束要素的引用添加到 LAS 数据集。
用法
LAS 数据集旨在配合 *.las 格式的航空激光雷达数据使用。支持的 LAS 文件版本有 1.0、1.1、1.2 和 1.3。
考虑通过 ArcCatalog 窗口创建和管理 LAS 数据集,以获得更好的交互式体验。有关详细信息,请参阅创建 LAS 数据集。
表面约束要素可用于强化 LAS 数据集中要素衍生的表示表面特征的高程值。
每个 LAS 文件通常在其标题(由 LAS 数据集读取)中包含空间参考信息。如果此信息丢失或写入错误,则将通过创建辅助 *.prj 文件来对 LAS 文件进行正确的地理配准,该辅助 *.prj 文件与 LAS 文件名称相同、位于同一文件夹且包含 LAS 文件坐标系的字符串表示(与 shapefile 的 *.prj 文件类似)。
根据激光雷达返回时遇到的材料(如地面、建筑或水),可将 LAS 点分为多个类别。美国摄影测量与遥感协会 (ASPRS) 为 LAS 文件版本 1.1、1.2 和 1.3 定义了以下类代码:
类别值
分类类型
0
从不分类
1
未分配
2
地面
3
低植被
4
中等植被
5
高植被
6
建筑物
7
噪点
8
模型关键
9
水域
10
为 ASPRS 定义预留
11
为 ASPRS 定义预留
12
重叠
13–31
为 ASPRS 定义预留
注:LAS 1.0 规范提供从 0 到 255 的类代码,但不具有标准分类方案。1.0 文件中使用的任何类代码通常由数据供应商定义、并通过辅助信息提供。
语法
参数 | 说明 | 数据类型 |
in_las_dataset |
输入 LAS 数据集。 | LAS Dataset Layer |
in_files [in_files,...] (可选) |
输入文件可引用包含 LAS 数据的各个 LAS 文件和文件夹的任意组合。 | Folder; File |
folder_recursion (可选) |
指定位于输入文件夹子目录中的激光雷达数据是否将添加到 LAS 数据集。
| Boolean |
in_surface_constraints [[in_feature_class, height_field, SF_type],...] (可选) | LAS 数据集将引用的要素类。每个要素都需要定义以下属性: in_feature_class - LAS 数据集引用的要素类。 height_field - 用于为要素指定高程值的源的字段。可以使用要素属性表中的任何数值字段。如果要素支持 Z 值,可通过选择 Shape.Z 选项读取要素几何。如果没有所需高度,则指定关键字 <无> 来创建 Z-less 要素,其高程将从表面进行内插。 SF_type - 定义如何将要素几何加入到表面的三角测量中的表面要素类型。具有硬或软标识的选项表示要素边是否表示坡度的明显中断或平缓变化。
| Value Table |
代码实例
下面的示例演示了如何在 Python 窗口中使用此工具:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.AddFilesToLasDataset_management("test.lasd",
["LA_N", "LA_S/LA_5S4E.las"],
"RECURSION",
["boundary.shp <None> Soft_Clip",
"breakline.shp Shape.Z Hard_Line"])
下面的示例演示了如何在独立 Python 脚本中使用此工具:
'''*********************************************************************
Name: Modify Files in LAS Dataset& Calculate Stats for LASD
Description: Adds files & surface constraints to a LAS dataset, then
calculates statistics and generates report.
*********************************************************************'''
# Import system modules
import arcpy
from arcpy import env
import exceptions, sys, traceback
try:
# Script variables
env.workspace = 'C:/data'
lasd = 'sample.lasd'
oldLas = ['2006', '2007/file2.las']
newLas = ['2007_updates_1', '2007_updates_2']
oldSurfaceConstraints = ['boundary.shp', 'streams.shp']
newSurfaceConstraints = [['sample.gdb/boundary', '<None>',
'Soft_Clip']
['sample.gdb/streams', 'Shape.Z',
'Hard_Line']]
arcpy.management.RemoveFilesFromLasDataset(lasd, oldLas,
oldSurfaceConstraints)
arcpy.management.AddFilesToLasDataset(lasd, newLas, 'RECURSION',
newSurfaceConstraints)
arcpy.management.LasDatasetStatistics(lasd, "UPDATED_FILES",
"lasd_stats.txt",
"LAS_FILE", "DECIMAL_POINT",
"SPACE", "LAS_summary.txt")
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)