LAS 数据集转栅格 (Conversion)
摘要
使用存储在 LAS 数据集所引用的激光雷达文件 (*.las) 中的高程、强度或 RGB 值创建栅格。
插图
用法
将 LAS 数据集指定为输入时,将处理它引用的 LAS 文件中的所有数据点。
LAS 数据集图层可用于按类代码或返回值过滤 LAS 点。创建图层的方法是使用创建 LAS 数据集图层工具、通过在 ArcMap 或 ArcScene 中加载 LAS 数据集以及通过图层属性对话框指定所需类代码和返回值。
-
导出较大栅格时,如果使用整型数据可以满足 z 值的精度要求,则考虑将输出数据类型指定为整型以节省磁盘空间。
强烈建议在输入 LAS 数据集定义中包括作为裁剪限制的研究区域边界。一个原因是要防止在调查的真实数据范围外出现插值。其次,如果在尚未正确定义数据区域时使用自然邻域法选项,则可能会严重降低性能。
注:使用 BINNING 时,仅支持裁剪、擦除和替换限制。不支持隔断线和锚点。三角测量选项支持所有类型的限制,但需要更长时间进行执行。
语法
参数 | 说明 | 数据类型 |
in_las_dataset |
输入 LAS 数据集。 | LAS Dataset Layer |
out_raster |
输出栅格的位置和名称。在向地理数据库或文件夹(如 Esri Grid)中存储栅格数据集时,不应向栅格数据集的名称添加文件扩展名。可提供文件扩展名,以在向文件夹存储时定义栅格的格式:
如果栅格存储为 TIFF 文件或存储在地理数据库中,可使用地理处理环境设置指定其栅格压缩类型和质量。 | Raster Dataset |
value_field (可选) |
指定将用于生成栅格输出的激光雷达信息。
| String |
interpolation_type "BINNING {cell_assignment_type} {void_fill_method}" or "TRIANGULATION {interpolation_method} {point_thinning_type} {point_selection_method} {resolution}" (可选) |
该插值方法用于生成栅格。 BINNING - 使用像元范围内的点获得像元值(除不包含其范围内点的像元外)。下列选项可用于此技术:
TRIANGULATION - 通过 LAS 数据集的三角测量表达的插值测量获得像元值。下列选项可用于此技术:
| String |
data_type (可选) |
可通过以下关键字定义输出栅格的数据类型:
| String |
sampling_type (可选) |
指定用于解译采样值以定义输出栅格分辨率的方法。
| String |
sampling_value (可选) |
指定与采样类型结合使用以定义输出栅格分辨率的值。 | Double |
z_factor (可选) |
Z 值将乘上的系数。此值通常用于转换 Z 线性单位来匹配 XY 线性单位。默认值为 1,此时高程值保持不变。 | Double |
代码实例
下面的示例演示了如何在 Python 窗口中使用此工具:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.LasDatasetToRaster_3d('baltimore.lasd', 'baltimore.tif', 'INTENSITY',
'TRIANGULATION LINEAR WINDOW_SIZE 10', 'FLOAT',
'CELLSIZE', 10, 3.28)
下面的示例演示了如何在独立 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)