Skip to contents

Calculates the stem branch length from a TreeQSM.

Usage

stem_branch_length_qsm(
  branch,
  treedata,
  normalisation = "treeheight",
  pc = NA,
  buttress = FALSE,
  thresholdR2 = 0.001,
  slice_thickness = 0.06,
  thresholdbuttress = 0.001,
  maxbuttressheight = 7,
  concavity = 4,
  dtm = NA,
  r = 5
)

Arguments

branch

Branch field of a TreeQSM that is returned by read_tree_qsm.

treedata

Treedata field of a TreeQSM that is returned by read_tree_qsm.

normalisation

Can be either "dbh" or "treeheight". In case of "dbh" the mean of the lengths of the stem branches are divided by the DBH (Akerblom et al., 2017). In case of "treeheight" the mean is divided by the tree height (Terryn et al., 2020). When something different than "dbh" or "treeheight" is given, no normalisation is done. Default is no normalisation.

pc

The tree point cloud as a data.frame with columns X,Y,Z. Output of read_tree_pc. Default is NA and indicates no tree point cloud is available. Only relevant if normalisation equals "dbh" or "treeheight".

buttress

Logical (default=FALSE), indicates if the trees have buttresses. Only relevant if pc is available and normalisation equals "dbh".

thresholdR2

Numeric value (default=0.001). Parameter of the dbh_pc function used to calculate the diameter at breast height. Only relevant if the tree point cloud is available and buttress == FALSE.

slice_thickness

Numeric value (default = 0.06). Parameter of the dbh_pc function used to calculate the diameter at breast height. Only relevant if the tree point cloud is available and buttress == FALSE.

thresholdbuttress

Numeric value (default=0.001). Parameter of the dab_pc and dab_pc functions used to calculate the diameter at breast height and above buttresses. Only relevant if the tree point cloud is available.

maxbuttressheight

Numeric value (default=7). Parameter of the dab_pc function used to calculate the diameter at breast height. Only relevant if the tree point cloud is available and buttress == TRUE.

concavity

Numeric value (default=4) concavity for the computation of the functional diameter using a concave hull based on concaveman. only relevant when a point cloud is provided.

dtm

The digital terrain model as a data.frame with columns X,Y,Z (default = NA). If the digital terrain model is in the same format as a point cloud it can also be read with read_tree_pc. only relevant when a point cloud is provided.

r

Numeric value (default=5) r which determines the range taken for the dtm. Should be at least the resolution of the dtm. Only relevant when a dtm is provided.

Value

The stem branch length. Unitless with normalisation, in meters without normalisation. NaN when there are no stem branches.

Details

The stem branch length is defined as "the average length of 1st order branches. Can be normalised by DBH or tree height" (Akerblom et al., 2017 & Terryn et al., 2020). DBH and tree height are calculated with dbh and tree_height.

References

Akerblom, M., Raumonen, P., Makipaa, R., & Kaasalainen, M. (2017). Automatic tree species recognition with quantitative structure models. Remote Sensing of Environment, 191, 1-12.

Terryn, L., Calders, K., Disney, M., Origo, N., Malhi, Y., Newnham, G., ... & Verbeeck, H. (2020). Tree species classification using structural features derived from terrestrial laser scanning. ISPRS Journal of Photogrammetry and Remote Sensing, 168, 170-181.

Examples

if (FALSE) {
# Read tree qsm and calculate the stem branch radius
# from Akerblom et al. (2017)
qsm <- read_tree_qsm(QSM_path = "path/to/qsm.mat")
sbl <- stem_branch_length_qsm(
  branch = qsm$branch,
  treedata = qsm$treedata,
  normalisation = "dbh"
)
# with point cloud data for a buttressed tree
pc_tree <- read_tree_pc(PC_path = "path/to/point_cloud.txt")
sbl <- stem_branch_length_qsm(
  branch = qsm$branch, treedata = qsm$treedata,
  normalisation = "dbh", pc = pc_tree,
  buttress = TRUE
)
# from Terryn et al. (2020)
sbl <- stem_branch_length_qsm(
  branch = qsm$branch, treedata = qsm$treedata,
  normalisation = "treeheight"
)
# with point cloud data
pc_tree <- read_tree_pc(PC_path = "path/to/point_cloud.txt")
sbl <- stem_branch_length_qsm(
  branch = qsm$branch, treedata = qsm$treedata,
  normalisation = "treeheight", pc = pc_tree
)
}