View source: R/treeselection.R
treeselection | R Documentation |
Tree selection (trees to harvest, and future and reserve trees)
treeselection(
inventory,
topography,
speciescriteria,
scenario,
objective = NULL,
fuel = NULL,
diversification = NULL,
winching = NULL,
specieslax = FALSE,
objectivelax = FALSE,
harvestablearea,
harvestablepolygons,
plotslope,
maintrails,
advancedloggingparameters = loggingparameters()
)
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) ( |
speciescriteria |
Table of species exploitability criteria : species
names, economic interest level, minimum and maximum felling diameter, in the
same format as |
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
|
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
( |
harvestablepolygons |
Accessible area of the inventoried plot
( |
plotslope |
Slopes (in radians) of the inventoried plot (with a
neighbourhood of 8 cells) ( |
maintrails |
Main trails defined at the entire harvestable area (sf linestring with a crs in UTM) |
advancedloggingparameters |
Other parameters of the logging simulator
|
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.
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
Paracou6_2016
, SpeciesCriteria
,
DTMParacou
, HarvestableAreaOutputsCable
,
loggingparameters
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())
# 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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.