Skip to contents

Tree selection (trees to harvest, and future and reserve trees)

Usage

treeselection(
  inventory,
  topography,
  speciescriteria,
  scenario,
  objective = NULL,
  fuel = NULL,
  diversification = NULL,
  winching = NULL,
  specieslax = FALSE,
  objectivelax = FALSE,
  harvestablearea,
  harvestablepolygons,
  plotslope,
  maintrails,
  advancedloggingparameters = loggingparameters()
)

Arguments

inventory

input inventory (see the inputs formats and metadata in the vignette) (data.frame)

topography

Digital terrain model (DTM) of the inventoried plot (LiDAR or SRTM) (DTMParacou) (RasterLayer with a crs in UTM) We advise you to generate your raster with Qgis rather than with the 'raster' package on R.

speciescriteria

Table of species exploitability criteria : species names, economic interest level, minimum and maximum felling diameter, in the same format as SpeciesCriteria (data.frame)

scenario

Logging scenario: "RIL1", "RIL2broken", "RIL2", "RIL3", "RIL3fuel", "RIL3fuelhollow" or "manual"(character) (see the vignette)

objective

Objective volume (m^3/ha) (numeric)

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"

diversification

Possibility to log other species in addition to the main commercial species (species with a value of 2 for commercial in the SpeciesCriteria table) (logical)

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.

specieslax

Allow diversification if the stand is too poor to reach the objective volume without diversification, = FALSE by default (logical)

objectivelax

Allow exploitation in case of non-achievement of the objective volume (if stand too poor), = FALSE by default (logical)

harvestablearea

Harvestable area in ha (harvestableareadefinition) (numeric)

harvestablepolygons

Accessible area of the inventoried plot (harvestableareadefinition) (sfc_MULTIPOLYGON)

plotslope

Slopes (in radians) of the inventoried plot (with a neighbourhood of 8 cells) (harvestableareadefinition) (RasterLayer with a crs in UTM)

maintrails

Main trails defined at the entire harvestable area (sf linestring with a crs in UTM)

advancedloggingparameters

Other parameters of the logging simulator loggingparameters (list)

Value

A list with:

  • input inventory with new columns:

    • The exploitability criteria ("DistCriteria" (aggregative species case), "Slope" (in radians), "SlopeCriteria"), and if they are validated for each of the trees ("LoggingStatus"= "harvestable"/"non-harvestable").

    • The probability of a tree having visible defects ("VisibleDefectProba") and the visible defect trees ("VisibleDefect" = "1").

    • The trees selected for harvesting ("Selected" = "1"), if the Minimum Felling Diameter (MinFD) of their species has been raised ("Up").

    • The probability of a tree being probed hollow ("ProbedHollowProba") and the probed hollow trees ("ProbedHollow" = "1").

    • Future and reserve trees (LoggingStatus = "future"/"reserve") (see the outputs metadata in the vignette)

  • the objective volume (VO) for the entire plot

  • the harvestable volume with the initial criteria (HVinit) for the entire plot

  • 6 layers of spatial points: harvestable, selected, future and reserve, hollow and fuel wood trees

Details

Trees will be designated as "harvestable" if they:

  • belong to species of 1st economic level (if no diversification) or 1st and 2nd level if (diversification)

  • have a DBH between MinFD and MaxFD.

  • not isolated ( >100m ('IsolateTreeMinDistance' in loggingparameters)) from other individuals of the same species in the aggregative species case (SpeciesCriteria, 'Aggregative' column).

  • on slopes < 22% ('TreeMaxSlope'in loggingparameters)

  • off the main trails.

Trees with visible defects are identified ('VisiblyDefectModel' in 'advancedloggingparameters' argument) among the trees with harvestable criteria and are therefore considered 'non-harvestable'.

If fuel = 2, the hollow trees (identified with the "RottenModel" (loggingparameters)) will be harvested and are therefore included in the objective volume. If fuel = 0 or 1, the hollow trees will not be exploited, so the function looks for other trees to reach the objective volume (if possible).

If the harvestable volume is higher than the objective volume, and that diversification was not chosen, MinFD of the 1st economic rank species only is increased. If the diversification is allowed, MinFD of 1st and 2nd economic level species is increased. Then, the trees to be harvested are chosen in decreasing order of volume, until the objective volume is reached.

If the harvestable volume is lower than the objective volume, diversification can be applied if it was not already applied ('specieslax') (trees of all commercial ranks are selected in decreasing order of volume until the objective volume is reached), or harvesting can continue despite an unreached objective volume, or be abandoned ('objectivelax')

Future trees are all trees satisfying the following conditions:

  • species of 1st economic rank

  • DBH between 35cm (default) ('FutureTreesMinDiameter') and the species MinFD or UpMinFD if it has been raised for its species.

  • in the prospection units (harvestable areas)

Reserve trees are randomly chosen among future trees so that the number of reserve trees is equal to the number of harvested trees.

Examples

set.seed(1)
data(Paracou6_2016)
data(DTMParacou)
data(SpeciesCriteria)
data(MainTrails)
data(HarvestableAreaOutputsCable)

inventory <- addtreedim(cleaninventory(Paracou6_2016, PlotMask),
volumeparameters = ForestZoneVolumeParametersTable)

treeselectionoutputs <- treeselection(inventory,
topography = DTMParacou,
speciescriteria = SpeciesCriteria,
scenario = "manual", objective = 10, fuel = "2", diversification = TRUE,
winching = "0", specieslax = FALSE, objectivelax = TRUE,
harvestablearea = HarvestableAreaOutputsCable$HarvestableArea,
plotslope = HarvestableAreaOutputsCable$PlotSlope,maintrails = MainTrails,
harvestablepolygons = HarvestableAreaOutputsCable$HarvestablePolygons,
advancedloggingparameters = loggingparameters())
#> As the harvestable volume (= 84.8m^3)
#>                 was higher (by 47.3m^3)
#>                 than the objective volume, the Minimum Falling Diameter (MinFD) of the 1st and 2nd economic ranks species
#>                   were increased to UpMinFD. The objective volume has now been reached.

# The illustration
NewInventory <- treeselectionoutputs$inventory

NonHarvestable <- sf::st_as_sf(
dplyr::filter(NewInventory, LoggingStatus == "non-harvestable"),
coords = c("Xutm", "Yutm"))

Harvestable <- sf::st_as_sf(
dplyr::filter(NewInventory, LoggingStatus == "harvestable"),
coords = c("Xutm", "Yutm"))

HarvestableUp <- sf::st_as_sf(
dplyr::filter(NewInventory, LoggingStatus == "harvestableUp"),
coords = c("Xutm", "Yutm"))

Selected <- sf::st_as_sf(
dplyr::filter(NewInventory, Selected == "1"), coords = c("Xutm", "Yutm"))

Reserve <- sf::st_as_sf(
dplyr::filter(NewInventory, LoggingStatus == "reserve"),
coords = c("Xutm", "Yutm"))

Future <- sf::st_as_sf(
dplyr::filter(NewInventory, LoggingStatus == "future"),
coords = c("Xutm", "Yutm"))

ProbedHollow <- sf::st_as_sf(
dplyr::filter(NewInventory, ProbedHollow == "1"), coords = c("Xutm", "Yutm"))

VisibleDefect <- sf::st_as_sf(
dplyr::filter(NewInventory, VisibleDefect == "1"), coords = c("Xutm", "Yutm"))

library(ggplot2)
ggplot() +
  geom_sf(data = NonHarvestable,
  aes(colour = "Non-harvestable"), show.legend = "point") +
  geom_sf(data = VisibleDefect,
  aes(colour = "Visible defect"), show.legend = "point") +
  geom_sf(data = Future,
  aes(colour = "Future"), show.legend = "point", size = 4) +
  geom_sf(data = Reserve,
  aes(colour = "Reserve"), show.legend = "point", size = 4) +
  geom_sf(data = Harvestable,
  aes(colour = "Harvestable"), show.legend = "point", size = 4) +
  geom_sf(data = HarvestableUp,
  aes(colour = "HarvestableUp"), show.legend = "point", size = 4) +
  geom_sf(data = Selected,
  aes(colour = "Selected"), show.legend = "point") +
  geom_sf(data = ProbedHollow,
  aes(colour = "Probed hollow"), show.legend = "point") +

  scale_colour_manual(values = c("Non-harvestable" = "grey",
  "Visible defect" = "pink", "Harvestable" = "skyblue",
  "HarvestableUp" = "blue", "Selected" = "red", "Future" = "orange",
  "Reserve" = "purple", "Probed hollow" = "forestgreen")) +
  labs(color = "Logging status")