摘要
使用一个或多个激光雷达文件创建多点要素。
插图
用法
此工具支持 ZLAS 和 LAS 文件版本 1.0 到 1.4。
-
LAS 格式支持根据美国摄影测量与遥感协会 (ASPRS) 制定的规范对每个点进行分类。ArcGIS 平台应用为 LAS 文件版本 1.4 指定的分类方案:
类别值 分类类型 0
从不分类
1
未分配
2
地面
3
低植被
4
中等植被
5
高植被
6
建筑物
7
低噪音
8
模型关键点/保留
9
水域
10
铁路
11
路面
12
重叠/保留
13
钢丝护网
14
导线
15
输电塔
16
线 - 连接器
17
桥板
18
高噪音
19 – 63
为 ASPRS 定义保留(LAS 1.1 至 1.3 最高支持类代码 31)
32 – 255
可由用户定义(仅 LAS 1.0 和 1.4 的特定版本支持)
LAS 格式支持存储为每个激光雷达点预定义的大量属性。如果您不知道哪些属性可用于给定的 LAS 文件集合,请考虑使用 LAS 数据集来查看 LAS 文件属性。
将多个 LAS 属性加载到 Oracle 数据库时,必须确保参数 attribute_binary 的所有 DBTUNE 关键字均设置为使用二进制大对象 (BLOB),而不是 LONGRAW。这是因为 LAS 属性已作为 BLOB 加载,而 Oracle 不支持 LONGRAW 表中存在多个 BLOB。如需帮助,请联系 Oracle 数据库管理员。
语法
LASToMultipoint_3d (input, out_feature_class, average_point_spacing, {class_code}, {return}, {attribute}, {input_coordinate_system}, {file_suffix}, {z_factor}, {folder_recursion})
参数 | 说明 | 数据类型 |
input [input,...] | 将要导入到多点要素类中的 LAS 文件。如果指定了文件夹,则将导入位于该文件夹中的所有 LAS 文件。 | Folder or File |
out_feature_class | 将由此工具生成的要素类。 | Feature Class |
average_point_spacing | 一个或多个输入文件中点之间的平均 2D 距离。此距离可以是一个近似值。如果以不同的密度对区域进行采样,应指定较小的间距。所提供的值需要使用输出坐标系的投影单位。 | Double |
class_code [class_code,...] (可选) | 用作 LAS 数据点的查询过滤器的分类代码。有效值范围是 1 到 32。默认情况下,不应用任何过滤器。 | Long |
return [return,...] (可选) | 将用于过滤已导入到多点要素中的 LAS 点的返回值。
| String |
attribute [[keyword, name],...] (可选) | LAS 点属性,其值将存储在输出的属性表的二进制大对象 (BLOB) 字段中。如果所生成的要素将参与 terrain 数据集,则已存储的属性可用于对 terrain 进行符号化。名称列表示将用于存储指定属性的字段的名称。支持的 LAS 属性如下:
| Value Table |
input_coordinate_system (可选) | 输入 LAS 文件的坐标系。 | Coordinate System |
file_suffix (可选) | 从输入文件夹导入的文件的后缀。将文件夹指定为输入时,此参数为必填项。 | String |
z_factor (可选) | Z 值将乘上的系数。此值通常用于转换 Z 线性单位来匹配 XY 线性单位。默认值为 1,此时高程值保持不变。 | Double |
folder_recursion (可选) | 当所选输入文件夹中的子文件夹含有数据时,扫描子文件夹。为目录结构中包含的每个文件生成一行输出要素类。
| Boolean |
代码实例
LASToMultipoint 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LASToMultipoint_3d("001.las", "Test.gdb/feature_dataset/sample_1", 1.5,
"2", "ANY_RETURNS", "INTENSITY", "Coordinate Systems"\
"/Projected Coordinate Systems/UTM/NAD 1983/NAD 1983 "\
"UTM Zone 17N.prj", "las", 1)
LASToMultipoint 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Define Data Boundary of LAS File
Description: This script demonstrates how to delineate data boundaries of
LAS files with irregularly clustered points. It is intended for
use as a script tool with one input LAS file.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
# Set local variables
inLas = arcpy.GetParameterAsText(0) #input LAS file
ptSpacing = arcpy.GetParameterAsText(1) # LAS point spacing
classCode = arcpy.GetParameterAsText(2) # List of integers
returnValue = arcpy.GetParameterAsText(3) # List of strings
outTin = arcpy.GetParameterAsText(4) # TIN created to delineate data area
outBoundary = arcpy.GetParameterAsText(5) # Polygon boundary file
try:
arcpy.CheckOutExtension("3D")
# Execute LASToMultipoint
arcpy.AddMessage("Creating multipoint features from LAS...")
lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code,
"ANY_RETURNS", "", sr, inFormat, zfactor)
# Execute CreateTin
arcpy.AddMessage("Creating TIN dataset...")
arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
.format(lasMP), "Delaunay")
# Execute CopyTin
arcpy.AddMessage("Copying TIN to delineate data boundary...")
arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
# Execute DelineateTinDataArea
arcpy.AddMessage("Delineating TIN boundary...")
maxEdge = ptSpacing * 4
arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
# Execute TinDomain
arcpy.AddMessage("Exporting data area to polygon boundary...")
arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
arcpy.AddMessage("Finished")
arcpy.CheckInExtension("3D")
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)