|
6 | 6 | #' @details |
7 | 7 | #' The following plot-level height metrics are returned in a named list with |
8 | 8 | #' elements: |
| 9 | +#' * `numTrees`: number of live trees `>= 5.0` in. (`12.7` cm) diameter |
9 | 10 | #' * `meanTreeHt`: mean height of trees `>= 5.0` in. (`12.7` cm) diameter |
10 | 11 | #' * `meanTreeHtBAW`: basal-area weighted mean height of trees `>= 5.0` in. |
11 | 12 | #' (`12.7` cm) diameter |
|
17 | 18 | #' * `predomTreeHt`: predominant tree height, as the mean height of the tallest |
18 | 19 | #' trees `>= 5.0` in. (`12.7` cm) diameter comprising up to `16` trees per |
19 | 20 | #' acre (`39.5` trees per hectare) |
20 | | -#' * `meanSapHt`: mean height of saplings (trees `>= 1.0` in. but `< 5.0` in. |
| 21 | +#' * `numSaplings`: number of live saplings (trees `>= 1.0` in. but `< 5.0` in. |
21 | 22 | #' diameter, i.e., `>= 2.54` cm but `< 12.7` cm) |
| 23 | +#' * `meanSapHt`: mean height of saplings |
22 | 24 | #' * `maxSapHt`: height of the tallest sapling |
23 | 25 | #' |
24 | 26 | #' For the purpose of height calculations, canopy dominant/co-dominant include |
|
42 | 44 | #' @export |
43 | 45 | calc_ht_metrics <- function(tree_list, digits = 1) { |
44 | 46 |
|
| 47 | + # TODO: support input in SI units |
| 48 | + |
45 | 49 | if (missing(tree_list) || is.null(tree_list)) |
46 | 50 | stop("'tree_list' is required", call. = FALSE) |
47 | 51 |
|
@@ -73,12 +77,14 @@ calc_ht_metrics <- function(tree_list, digits = 1) { |
73 | 77 | if (any(is.na(sapling_ht))) |
74 | 78 | warning("one or more sapling heights are missing", call. = FALSE) |
75 | 79 |
|
76 | | - ht_metrics <- vector(mode = "list", length = 8) |
| 80 | + ht_metrics <- vector(mode = "list", length = 10) |
77 | 81 | ht_metrics[1:length(ht_metrics)] <- 0 # by definition |
78 | | - names(ht_metrics) <- c("meanTreeHt", "meanTreeHtBAW", "meanTreeHtDom", |
79 | | - "meanTreeHtDomBAW", "maxTreeHt", "predomTreeHt", |
80 | | - "meanSapHt", "maxSapHt") |
| 82 | + names(ht_metrics) <- c("numTrees", "meanTreeHt", "meanTreeHtBAW", |
| 83 | + "meanTreeHtDom", "meanTreeHtDomBAW", "maxTreeHt", |
| 84 | + "predomTreeHt", "numSaplings", "meanSapHt", |
| 85 | + "maxSapHt") |
81 | 86 |
|
| 87 | + ht_metrics$numTrees <- nrow(trees_in) |
82 | 88 | if (nrow(trees_in) > 0) { |
83 | 89 | basal_area <- pi * (trees_in$DIA / 2)^2 |
84 | 90 | ht_metrics$meanTreeHt <- |
@@ -114,6 +120,7 @@ calc_ht_metrics <- function(tree_list, digits = 1) { |
114 | 120 | ht_metrics$predomTreeHt <- round(sum_ht / n, digits) |
115 | 121 | } |
116 | 122 |
|
| 123 | + ht_metrics$numSaplings <- nrow(saplings_in) |
117 | 124 | if (nrow(saplings_in) > 0) { |
118 | 125 | ht_metrics$meanSapHt <- |
119 | 126 | round(mean(sapling_ht, na.rm = TRUE), digits) |
|
0 commit comments