描述
计算有关 LAS 数据中捕获的植被点高程测量分布的统计数据。
使用
该工具可生成高于地面的点的统计衍生物,以便用户更好地理解森林冠层。系统将分析分配了类代码值 0 或 1(用于表示未分类的点)的 LAS 点,以及分配了类代码值 3、4 和 5(用于表示植被点)的 LAS 点。
在执行此工具之前,必须对所处理的 LAS 数据进行地面点分类。可以使用分类 LAS 地面点工具,以满足此项要求。
此工具将为每个指定的统计选项和高度百分比输出一个栅格。每个栅格的名称都将以指定的基本名称以及高度度量或空间统计数据开头。对于平均值栅格,文件名上将追加单词“mean”。对于标准差,文件名上将添加“stdev”。对于中位数绝对差,文件名上将添加“mad”。
请使用最小高度参数来排除极低点,当地面点尚未完全分类的情况下尤其需要如此,原因是这些点可能会使此工具的结果失真。
使用最小点数参数来排除地面上所含点数过少的区域,以生成有意义的结果。
语法
LasHeightMetrics(in_las_dataset, out_location, {base_name}, {statistics}, {height_percentiles}, min_height, min_points, cell_size)
参数 | 说明 | 数据类型 |
in_las_dataset | 待处理的 LAS 数据集。 | LAS Dataset Layer |
out_location | 存放输出栅格数据集的文件夹以及地理数据库。一旦输出位置为文件夹,则生成的栅格数据集将采用 TIFF 格式。 | Workspace |
base_name (可选) | 输出栅格数据集的基本名称。 | String |
statistics [statistics,...] (可选) | 指定针对输出栅格中每个像元区域内的未分类点和地面上的植被点所计算的统计数据。
| String |
height_percentiles [height_percentiles,...] (可选) | 像元中指定百分比的点所低于的高度。例如,此值为 95 意味着生成的像元值表明出现了 95% 的点高于地面的高度。 | Long |
min_height | 将评估的点的地面上最小高度。 | Linear Unit |
min_points | 必须存在于给定像元中,以计算高度度量的点的最小数量。点数小于指定最小数量的像元在输出中将没有数据。 | Long |
cell_size | 输出栅格数据集的像元大小。 | Linear Unit |
派生输出
名称 | 说明 | 数据类型 |
derived_out_location | 输出栅格数据集的位置。 | 工作空间 |
output_rasters | 输出栅格数据集。 | 栅格数据集 |
代码示例
LasHeightMetrics 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasBuilding_3d('Highland.lasd', minHeight='9 feet',
minArea='30 Square Feet', compute_stats=True)
LasHeightMetrics 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Tile & Classify LAS Files
Description: Creates & classifies tiled LAS files.
****************************************************************************'''
# 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