Learn R Programming

lidR (version 1.6.1)

tree_metrics: Compute metrics for each tree

Description

Once the trees are segmented with lastrees, computes a series of descriptive statistics defined by the user for each individual tree. The output is a table in which each line is a tree, and each column is a metric. tree_metrics is similar to lasmetrics or grid_metrics or grid_metrics3d or grid_hexametrics, except it computes metrics for each segmented tree.

Usage

tree_metrics(.las, func, debug = FALSE, field = "treeID")

Arguments

.las

An object of class LAS.

func

The function to be applied to each tree.

debug

logical. When facing a non trivial error, try debug = TRUE.

field

character. The column name of the field containing tree IDs. Defaul is "treeID"

Value

Returns a data.table containing the metrics for each segmented tree.

Details

The following existing functions contain a small set of pre-defined metrics:

Users must write their own functions to create their own metrics. tree_metrics will dispatch the LiDAR data for each segmented tree in the user-defined function. Functions are defined without the need to considering each segmented tree i.e. only the point cloud (see examples).

Examples

Run this code
# NOT RUN {
LASfile <- system.file("extdata", "MixedConifer.laz", package="lidR")
las = readLAS(LASfile, filter = "-drop_z_below 0")

# segment trees (see lastrees)
lastrees(las, algorithm = "li2012-2")

# Max height for each tree
tree_metrics(las, mean(Z))

# Define your own new metrics
myMetrics = function(z, i)
{
  metrics = list(
     imean = mean(i),
     imax  = max(i),
     npoint = length(z)
   )

   return(metrics)
}

metrics = tree_metrics(las, myMetrics(Z, Intensity))

# predefined metrics (see ?stdmetrics)
metrics = tree_metrics(las, .stdtreemetrics)
# }

Run the code above in your browser using DataLab