创建 LAS 数据集图层 (Data Management)
摘要
创建 LAS 数据集图层,该图层可对 LAS 文件应用过滤器,并可启用或禁用 LAS 数据集所引用的表面约束。
用法
此工具用于创建存储在内存中的临时图层,该图层可通过保存至图层文件工具保存为图层文件。
根据激光雷达返回时遇到的材料(如地面、建筑或水),可将 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 文件中使用的任何类代码通常由数据供应商定义、并通过辅助信息提供。
该图层可用作过渡基础,用于生成可接受 LAS 数据集的其他地理处理工具的输入。例如,如果从第一个回波裸露地表激光雷达数据开始需要栅格或 TIN 数据集,可使用过滤选项来选择第二个类代码和第一个回波值。随后,可在 LAS 数据集转栅格工具或 LAS 数据集转 TIN 工具中使用生成的 LAS 数据集图层来生成想要的输出。
语法
参数 | 说明 | 数据类型 |
in_las_dataset |
输入 LAS 数据集。 | LAS Dataset Layer |
out_layer |
生成的 LAS 数据集图层的名称。后跟反斜线或正斜线的文本用来表示图层组。 | Las Dataset Layer |
class_code [class_code,...] (可选) |
用作 LAS 数据点的查询过滤器的分类代码。有效值范围是 1 到 32。默认情况下,不应用任何过滤器。 | Long |
return_values [return_values,...] (可选) | 指定用于过滤数据点的返回值。未指定任何内容时,使用所有返回值。有效返回值选项包括介于 1 到 5 之间的任何数和以下关键字:
| String |
no_flag (可选) | 指示是否应启用未分配任何分类标记的数据点以用于显示和分析。
| Boolean |
synthetic (可选) | 指示应启用标记为合成点的数据点,还是启用源自非激光雷达数据源的点,以用于显示和分析。
| Boolean |
keypoint (可选) | 指示应启用标记为模型关键点的数据点,还是启用不应被细化掉的重要测量点,以用于显示和分析。
| Boolean |
withheld (可选) | 指示是否应启用标记为保留点的数据点(这些点通常表示不需要的噪音测量点)以用于显示和分析。
| Boolean |
surface_constraints [surface_constraints,...] (可选) |
图层中将启用的表面约束要素的名称。默认情况下,所有约束均启用。 | String |
代码实例
下面的示例演示了如何在 Python 窗口中使用此工具:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.MakeLasDatasetLayer_management('Baltimore.lasd', 'Baltimore Layer',
2, 'LAST', 'INCLUDE_UNFLAGGED',
'EXCLUDE_SYNTHETIC', 'INCLUDE_KEYPOINT',
'EXCLUDE_WITHHELD')
下面的示例演示了如何在独立 Python 脚本中使用此工具:
'''*********************************************************************
Name: Export Elevation Raster from Ground LAS Measurements
Description: This script demonstrates how to export
ground measurements from LAS files to a raster using a
LAS dataset. This sample is designed to be used as a script
tool.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
try:
# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
surfCons = arcpy.GetParameterAsText(2)
classCode = arcpy.GetParameterAsText(3)
returnValue = arcpy.GetParameterAsText(4)
spatialRef = arcpy.GetParameterAsText(5)
lasD = arcpy.GetParameterAsText(6)
outRaster = arcpy.GetParameterAsText(7)
cellSize = arcpy.GetParameter(8)
zFactor = arcpy.GetParameter(9)
if arcpy.ProductInfo == 'ArcView':
arcpy.CheckOutExtension('3D')
# Execute CreateLasDataset
arcpy.management.CreateLasDataset(inLas, lasD, recursion, surfCons, sr)
# Execute MakeLasDatasetLayer
lasLyr = arcpy.CreateUniqueName('Baltimore')
arcpy.management.MakeLasDatasetLayer(lasD, lasLyr, classCode, returnValue)
# Execute LasDatasetToRaster
arcpy.conversion.LasDatasetToRaster(lasLyr, outRaster, 'ELEVATION',
'TRIANGULATION LINEAR WINDOW_SIZE 10', 'FLOAT',
'CELLSIZE', cellSize, zFactor)
arcpy.GetMessages()
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)
finally:
arcpy.management.Delete(lasLyr)