Skip to contents

Simulates the tree (multipolygon) falling towards the trail or not, at a given angle. If it has been decided to exploit fuel wood, the tree crowns will be directed towards the trail if they can be accessed with a grapple (see the GrappleLength argument of the loggingparameters function). In other cases, the fall will be made from the base of the tree towards the trail. The orientation of the fall succeeds or fails according to a Bernoulli law where the probability of success is by default 60%, and can be changed with the advancedloggingparameters argument.

Usage

felling1tree(
  dat,
  fuel,
  winching,
  directionalfelling,
  maintrailsaccess,
  scndtrail,
  FutureReserveCrowns,
  advancedloggingparameters = loggingparameters()
)

Arguments

dat

1 row data.frame with columns: Xutm, Yutm, CrownDiameter, CrownHeight, DBH, TrunkHeight, TreeHeight, TreeFellingOrientationSuccess

fuel

Fuel wood exploitation: no exploitation = "0", exploitation of damage and unused part of logged trees for fuel = "1", exploitation of hollow trees, damage and and unused part of the log for fuel = "2" If fuel wood exploitation (fuel = "1" or "2") the tree will be recovered from the crown with a grapple if possible (respected grapple conditions). If not, recovery at the foot with a cable at an angle to the trail. Avoid future/reserve trees if chosen.

winching

"0": no cable or grapple (trail to tree foot) "1": only cable (default = 40m) "2": grapple (default = 6m) + cable (grapple priority) If grapple + cable (winching = "2") without fuel wood (fuel = "0") recovery of the tree foot with grapple if possible (respected grapple conditions) otherwise with cable with angle to the trail. Avoidance of future/reserves if chosen.

directionalfelling

Directional felling = "0": only to direct the foot of the tree towards the trail "1": to direct the foot of the tree towards the trail + to avoid damage to future and reserve trees if possible "2": to avoid damage to future and reserve trees if possible + orientation angle to the trail. Among the 2 possible angle positions, the position that favours the return to the main trail should be chosen. The angle to the trail is favoured to avoid future/reserve trees.

maintrailsaccess

Main trails access points (sf)

scndtrail

Secondary trails (sf)

FutureReserveCrowns

Future/reserve trees crown (sf)

advancedloggingparameters

Other parameters of the logging simulator loggingparameters (list)

Value

A list with: FallenTree: a sfc_MULTIPOLYGON of the tree oriented according to the chosen scenario. Foot: a POINT for the base of the tree (the rotation fixed point). NearestPoints: a sfc_LINESTRING for the shortest path from the base of the tree to the nearest trail, Trail: the union of the main and the secondary trails. TrailPt: the POINT on the Trail closest to the location of the tree.

Examples

data(SecondaryTrails)

# create an object with future/reserve crowns only
FutureReserveCrowns <- SecondaryTrails$inventory %>%
 dplyr::filter(LoggingStatus == "future" | LoggingStatus == "reserve") %>%
 createcanopy() %>% # create all inventory crowns in the 'Crowns' column
 getgeometry(Crowns)

dat <- SecondaryTrails$inventory %>%
  dplyr::filter(Selected == "1") %>%
  dplyr::select(idTree,DBH,TrunkHeight,TreeHeight,CrownHeight,
                CrownDiameter,Selected, Xutm, Yutm) %>%
  dplyr::sample_n(1) %>% # just 1 row (1 tree)
  # force the orientation success for the exemple
  tibble::add_column(TreeFellingOrientationSuccess = "1")

rslt <- felling1tree(dat,
 fuel = "0", winching = "0", directionalfelling = "0",
 maintrailsaccess = SecondaryTrails$MainTrailsAccess,
 scndtrail = SecondaryTrails$SmoothedTrails,
 FutureReserveCrowns = FutureReserveCrowns,
 advancedloggingparameters = loggingparameters())
#> Warning: attribute variables are assumed to be spatially constant throughout all geometries

library(ggplot2)
ggplot() +
  geom_sf(data = sf::st_set_crs(sf::st_sfc(rslt$Foot),
                                sf::st_crs(SecondaryTrails$MainTrailsAccess))) +
  geom_sf(data = sf::st_set_crs(sf::st_as_sf(rslt$Trail),
                                sf::st_crs(SecondaryTrails$MainTrailsAccess))) +
  geom_sf(data = rslt$NearestPoints) +
  geom_sf(data = sf::st_set_crs(sf::st_sfc(rslt$TrailPt),
                                sf::st_crs(SecondaryTrails$MainTrailsAccess))) +
  geom_sf(data = sf::st_set_crs(rslt$FallenTree,
                                sf::st_crs(SecondaryTrails$MainTrailsAccess))) +
  geom_sf(data = sf::st_set_crs(FutureReserveCrowns,
                                sf::st_crs(SecondaryTrails$MainTrailsAccess))) # set a crs