Summary
Calculates statistics about the distribution of elevation measurements of vegetation points captured in LAS data.
Usage
This tool generates statistical derivatives of points above the ground to provide greater understanding of the forest canopy. LAS points assigned with a class code value of 0 or 1, which represent unclassified points, and 3, 4, and 5, which represent vegetation points, are analyzed.
The LAS data being processed must have ground points classified prior to executing this tool. The Classify LAS Ground tool can be used to meet this requirement.
This tool will output one raster for each statistic option and height percentile specified. The name of each raster will begin with the specified base name and the height metric or spatial statistic. For the mean raster, the word "mean" is appended to the file name. For standard deviation, "stdev" will be added to the file name. For median absolute deviation, "mad" will be added to the file name.
Use the Minimum Height parameter to exclude very low points, particularly if ground points have not been thoroughly classified, as they may distort the results of this tool.
Use the Minimum Number of Points parameter to exclude areas that contain too few points above the ground to produce meaningful results.
Syntax
arcpy.ddd.LasHeightMetrics(in_las_dataset, out_location, {base_name}, {statistics}, {height_percentiles}, min_height, min_points, cell_size)
Parameter | Explanation | Data Type |
in_las_dataset | The LAS dataset to process. | LAS Dataset Layer |
out_location | The folder or geodatabase where the output raster datasets will reside. When the output location is a folder, the resulting raster datasets will be in the TIFF format. | Workspace |
base_name (Optional) | The base name for the output raster datasets. | String |
statistics [statistics,...] (Optional) | Specifies the statistics calculated for the unclassified and vegetation points above the ground that are within the area of each cell in the output raster.
| String |
height_percentiles [height_percentiles,...] (Optional) | The height at which the specified percentage of points in the cell fall below. For example, a value of 95 means the resulting cell values indicate the height at which 95 percent of points above the ground occur. | Long |
min_height | The minimum height above ground for points that will be evaluated. | Linear Unit |
min_points | The minimum number of points that must be present in a given cell to calculate height metrics. Cells with fewer points than the specified minimum will have no data in the output. | Long |
cell_size | The cell size of the output raster datasets. | Linear Unit |
Derived Output
Name | Explanation | Data Type |
derived_out_location | The location of output raster datasets. | Workspace |
output_rasters | The output raster datasets. | Raster Dataset |
Code sample
LasHeightMetrics example 1 (Python window)
The following sample demonstrates the use of this tool in the Python window.
arcpy.env.workspace = 'C:/data'
arcpy.ClassifyLasBuilding_3d('Highland.lasd', minHeight='9 feet',
minArea='30 Square Feet', compute_stats=True)
LasHeightMetrics example 2 (stand-alone script)
The following sample demonstrates the use of this tool in a stand-alone Python script.
'''****************************************************************************
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())
Environments
Licensing information
- Basic: Requires 3D Analyst
- Standard: Requires 3D Analyst
- Advanced: Requires 3D Analyst