Seminário LoggingLab

Um pacote R para simular o corte seletivo de impacto reduzido em florestas tropicais

Sylvain Schmitt & Géraldine Derroire

CIRAD

Nov 25, 2024

Introdução

O pacote LoggingLab do R, desenvolvido no contexto da extração seletiva de madeira na Guiana Francesa, permite que cada estágio da extração seletiva de madeira seja simulado de forma espacialmente explícita. Isso permite que os efeitos de diferentes práticas de exploração madeireira no ecossistema sejam avaliados e comparados com precisão. O objetivo desse workshop prático será apresentar e usar em conjunto as funções gerais desse pacote.

O que o pacote faz?

Simulação de corte seletivo usando dados de inventário florestal.

O que o pacote faz?

Os etapas são:

  • preparação de dados
  • trilhas principais
  • zonas exploráveis
  • seleção de árvores
  • trilhas de arraste
  • corte de árvores
  • quantificação de volumes

Instalação do pacote

Usaremos o pacote LoggingLab para R (Badouard et al. 2024) para simular a extração de madeira de impacto reduzido em uma floresta tropical. O pacote deve ser instalado a partir de seu repositório no Github, pois ainda não está no CRAN.

install.packages(c("devtools", "tidyverse", "sf", "terra", "tidyterra"))
devtools::install_github("VincyaneBadouard/LoggingLab")

Outros pacotes R

Usaremos o tidyverse para manipular tabelas e criar gráficos, o sf para manipular objetos espaciais e o terra e o tidyterra para manipular dados raster.

library(LoggingLab)
library(tidyverse)
library(sf)
library(terra)
library(tidyterra)
theme_set(theme_bw())

Entradas

Os dados e parâmetros necessários para usar LoggingLab são as seguintes:

  • Inventário: inventários de árvores da parcela
  • Máscara do lote: os limites da área a ser explorada
  • Dados da espécie: dados específicos para cada espécie
  • Alometria volumétrica: os parâmetros de alometria a serem calculados

Inventário

O inventário deve conter o diâmetro, a identificação botânica e as coordenadas de todos as árvores com major de um determinado diâmetro (normalmente DAP >= 10cm).

No momento, o simulador está trabalhando em pequenos lotes (alguns hectares) e não representa toda a operação de uma concessão, pois seu foco é a quantificação detalhada dos danos pós-operacionais de acordo com as práticas.

Inventário

As colunas exigidas pelo LoggingLab são:

  • Forest: o nome da floresta
  • idTree: um identificador exclusivo para cada árvore
  • Xutm e Yutm: as coordenadas de cada árvore
  • CodeAlive: árvore viva ou morta.
  • Family, Genus, Species: dados botânicos
  • CircCorr: circunferência de cada árvore

Inventário

O inventário do lote 6 de Paracou está disponível dentro LoggingLab.

head(Paracou6_2016)
   Forest Plot PlotArea SubPlot idTree Protocole Xfield Yfield     Xutm
1 Paracou    6     6.25       1 100726   Guyafor   13.5  201.0 286420.1
2 Paracou    6     6.25       1 100729   Guyafor   19.0  196.5 286426.4
3 Paracou    6     6.25       1 100739   Guyafor   13.5  182.0 286424.8
4 Paracou    6     6.25       1 100741   Guyafor    9.5  179.5 286421.6
5 Paracou    6     6.25       1 100747   Guyafor   14.5  167.5 286429.3
6 Paracou    6     6.25       1 100750   Guyafor   18.0  169.0 286432.3
      Yutm UTMZone      Lat       Lon           Family    Genus     Species
1 583135.4      22 5.272669 -52.92713       Annonaceae  Oxandra    asbeckii
2 583132.2      22 5.272642 -52.92707         Fabaceae   Eperua grandiflora
3 583116.8      22 5.272502 -52.92709         Fabaceae    Bocoa prouacensis
4 583113.4      22 5.272471 -52.92712     Celastraceae Maytenus    sp.1-CAY
5 583102.9      22 5.272376 -52.92705 Chrysobalanaceae  Licania membranacea
6 583105.2      22 5.272397 -52.92702 Chrysobalanaceae  Licania   canescens
  BotaSource BotaCertainty           VernName CensusYear CensusDateCertainty
1       Bota             4             muamba       2016                TRUE
2       Bota             4 Eperua grandiflora       2016                TRUE
3       Bota             4               boco       2016                TRUE
4       Bota             3         lebi tongo       2016                TRUE
5       Bota             4         santi koko       2016                TRUE
6       Bota             4         santi koko       2016                TRUE
  CodeAlive MeasCode  Circ CircCorr CorrCode
1      TRUE        0  39.5     39.5        0
2      TRUE        0 114.0    114.0        0
3      TRUE        0  48.0     48.0        0
4      TRUE        0 123.0    123.0        0
5      TRUE        0  54.0     54.0        0
6      TRUE        0  88.0     88.0        0

Inventário

Podemos fazer um mapa do lote 6 de Paraou em 2016.

Paracou6_2016 %>%   st_as_sf(coords = c("Xutm", "Yutm")) %>% 
  ggplot(aes(color = paste(Genus, Species), size = CircCorr)) + geom_sf() + 
  scale_size_continuous(range = c(.25, 3)) + theme(legend.position = "none")

Máscara do lote

A máscara do lote define os limites da área a ser considerada ou seja, os limites do lote. A máscara do lote é usada pelo LoggingLab para validar o inventário e definir a zonas exploráveis.

Máscara do lote

A máscara do lote 6 de Paracou está disponível dentro LoggingLab.

ggplot(st_as_sf(PlotMask)) + geom_sf()

Dados de espécies

SpeciesCriteria contém dados específicos de cada espécie. As colunas são:

  • CommercialLevel: Nível de interesse econômico
  • MinFD: Diâmetro mínimo de corte, em centímetros
  • UpMinFD: Diâmetro mínimo de corte aprimorado (caso de povoamento excessivamente rico), em centímetros
  • MaxFD: Diâmetro máximo de corte, em centímetros

Dados de espécies

Dados de espécies de Guiana Francesa são disponível dentro LoggingLab.

head(SpeciesCriteria)
# A tibble: 6 × 8
  CommercialName  Genus  Species CommercialLevel MinFD UpMinFD MaxFD Aggregative
  <chr>           <chr>  <chr>             <dbl> <dbl>   <dbl> <dbl> <lgl>      
1 st martin rouge Andira spp                   2    55      60   120 FALSE      
2 bamba apici     Aniba  spp                   2    55      60   120 FALSE      
3 bagasse         Bagas… guiane…               2    55      60   120 FALSE      
4 assao           Baliz… pedice…               2    55      60   120 FALSE      
5 dokali          Brosi… parina…               2    55      60   120 FALSE      
6 satiné rubané   Brosi… rubesc…               2    55      60   120 FALSE      

Alometrias volumétricas

O LoggingLab usa alometrias volumétricas com parâmetros que variam de acordo com a região explorada. Por exemplo, por volume de árvores que o LoggingLab usa:

\[Volume = aCoef + bCoef \times DBH^2\]

Com \(Volume\) o volume das árvores e \(DBH\) o diametro das árvores.

Alometrias volumétrica

Alometrias volumétricas para diferentes regiões da Guiana Francesa são disponível dentro LoggingLab.

head(ForestZoneVolumeParametersTable)
           Forest    Zone     aCoef    bCoef
1       Acarouany    West -0.061776  8.83580
2           BAFOG    West -0.061776  8.83580
3             Kaw    East -0.084516 10.46132
4         Laussat    West -0.061776  8.83580
5  Montagne_Plomb Central -0.035829  8.76340
6 Montagne_Tortue    East -0.084516 10.46132

Outras alometrias podem ser modificadas, como as alometrias de copa.

Simulação de exploração

Agora, vamos executar uma simulação de exploração passo a passo usando LoggingLab.

Validar o inventário

As árvores que não estão na área registrada ou que são muito pequenas para serem consideradas são excluídas.

inventory <- inventorycheckformat(Paracou6_2016)
inventory <- cleaninventory(inventory, PlotMask)

inventorycheckformat verifica se os dados de inventário recebidos são compatíveis com o LoggingLab, enquanto cleaninventory limpa os dados de inventário.

Validar o inventário

Como os dados já estavam limpos, não houve muitas alterações.

inventory %>% 
  st_as_sf(coords = c("Xutm", "Yutm")) %>% 
  ggplot(aes(color = paste(Genus, Species), size = CircCorr)) + geom_sf() + 
  scale_size_continuous(range = c(.25, 3)) + theme(legend.position = "none")

Calcular as dimensões da árvore

Em seguida, o addtreedim calcula as dimensões da árvore (altura da árvore, tronco e copa, diâmetro da copa, volume explorável, densidade da madeira e biomassa).

inventory <- addtreedim(inventory, ForestZoneVolumeParametersTable)
head(select(inventory, TreeHarvestableVolume, TrunkHeight, TreeHeight, CrownHeight,
            CrownDiameter, WoodDensity, AGB))
  TreeHarvestableVolume TrunkHeight TreeHeight CrownHeight CrownDiameter
1             0.1027084    8.272213   14.65595    6.383735      2.207900
2             1.1181093   10.811462   27.40065   16.589191      8.260220
3             0.1687473    9.203739   16.78716    7.583417      3.234360
4             1.3075022   10.860306   28.35561   17.495301      8.566460
5             0.2230879    9.613873   18.14034    8.526472      3.389036
6             0.6517747   10.576502   24.12416   13.547658      7.042431
  WoodDensity       AGB
1   0.7700000 0.1003184
2   0.7040000 1.3401159
3   1.0536667 0.2275608
4   0.7131944 1.6277207
5   0.8800000 0.2590981
6   0.8800000 0.8877632

Calcular as dimensões da árvore

Por exemplo, podemos elaborar um mapa do volume explorável.

inventory %>% st_as_sf(coords = c("Xutm", "Yutm")) %>% 
  ggplot() + geom_sf(aes(col = AGB, size = CircCorr)) + 
  scale_color_viridis_c("Biomassa", trans = "log", labels = ~round(., 1)) +
  scale_size_continuous("Circunferência", range = c(.25, 3))

Estradas secundarias

Como estamos simulando apenas a exploração em alguns hectares, não estamos simulando as estradas secundarias. Mas precisamos de sua localização para simular as trilhas de arraste.

O maintrailextract gera as estradas secundarais da área que está sendo explorado usando os bordas de máscara do lote.

Estradas secundarias

MainTrails <- maintrailextract(DTMParacou)
ggplot(MainTrails) +
  geom_sf(linewidth = 4)

Zonas exploráveis

Em seguida, precisamos definir as áreas de colheita e as áreas acessíveis às máquinas dentro do talhão. Por padrão, uma unidade de trabalho é:

  • com uma inclinação inferior a 27%
  • evitando nascentes e cursos d´água (buffer de 30 m).

Zonas exploráveis

Usamos harvestableareadefinition com uma opção “winching” definida como 2, ou seja, a garra é usada, se possível (extensão de 6 m), e o cabo é usado até 40 m.

HarvestableArea <- harvestableareadefinition(
  topography = DTMParacou,
  creekverticaldistance = CreekDistances$distvert,
  creekhorizontaldistance = CreekDistances$disthorz,
  maintrails = MainTrails,
  plotmask = PlotMask,
  scenario = "manual",
  winching = "2",
  advancedloggingparameters = loggingparameters()
)

Zonas exploráveis

As áreas verdes escuras podem ser colhidas por máquina e as áreas verdes claras por cabo. As outras áreas não podem ser colhidas.

(base <- ggplot() + geom_spatraster(data = rast(DTMParacou), alpha = .5) +
    scale_fill_gradient(low = "darkblue", high = "white", "Altura (m)", na.value = NA) + 
    geom_sf(data = HarvestableArea$HarvestablePolygons, fill = "darkgreen", alpha = 0.3) +
    geom_sf(data = HarvestableArea$MachinePolygons, fill = "darkgreen", alpha = 0.7))

Seleção de árvores

Em seguida, selecionamos as árvores a serem colhidas e as árvores futuras e de reserva. As árvores podem ser colhidas se:

  • Pertencem a espécies de primeira categoria econômica ou mais, se houver diversificação.

  • O DAP estiver entre o MinFD e o MaxFD.

  • Estão localizadas em declives < 22%.

  • Estão fora das trilhas principais.

As árvores a serem colhidas são escolhidas em ordem decrescente de volume, até que o volume objetivo seja atingido.

As árvores futuras são aqueles a serem explorados na próxima campanha. As árvores de reserva são conservadas como árvores-semente para regeneração natural.

Seleção de árvores

O função treeselection seleciona árvores com os critérios anteriores.

inventory <- inventory %>% 
  commercialcriteriajoin(SpeciesCriteria)
TreeSelection <- inventory %>% 
  treeselection(
    topography = DTMParacou,
    speciescriteria = SpeciesCriteria,
    scenario ="manual", 
    objective = 20,
    fuel = "0",
    diversification = TRUE, 
    winching = "2",
    harvestablearea = HarvestableArea$HarvestableArea,
    plotslope = HarvestableArea$PlotSlope,
    maintrails = MainTrails,
    harvestablepolygons = HarvestableArea$HarvestablePolygons,
    advancedloggingparameters = loggingparameters()
  )
As the harvestable volume (= 149.7m^3)
                was higher (by 74.8m^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.
crs <- st_crs(HarvestableArea$HarvestablePolygons)

Seleção de árvores

Podemos mapear árvores exploráveis, selecionadas, futuras e de reserva.

base + geom_sf(data = TreeSelection$HarvestableTreesPoints, aes(colour = "Harvestable")) +
  geom_sf(data = TreeSelection$SelectedTreesPoints, aes(colour = "Selected")) +
  geom_sf(data = TreeSelection$FutureTreesPoints, aes(colour = "Future")) +
  geom_sf(data = TreeSelection$ReserveTreesPoints, aes(colour = "Reserve"))

Trilhas de arraste

As trilhas de arraste permitem que as árvores selecionadas sejam colhidas pelas máquinas escolhidas. A rota é otimizada para reduzir a distância percorrida, respeitando as restrições topográficas e evitando as árvores a serem protegidas. Elas têm 4 metros de largura, com uma inclinação máxima de 22% e uma inclinação lateral máxima de 4%. Elas evitam árvores a serem cortadas, árvores grandes (>50 cm) e árvores de reserva.

Trilhas de arraste

secondstrailsopening permite definir trihlas de arraste.

ScndTrailOutputs <- secondtrailsopening(
  topography = DTMParacou,
  plotmask = PlotMask,
  maintrails = MainTrails,
  plotslope = HarvestableArea$PlotSlope,
  harvestablepolygons = HarvestableArea$HarvestablePolygons,
  machinepolygons = HarvestableArea$MachinePolygons,
  treeselectionoutputs = TreeSelection,
  scenario = "manual",
  winching = "2",
  fuel = "0",
  advancedloggingparameters = loggingparameters()
)
inventory <- ScndTrailOutputs$inventory

⚠️ Essa etapa pode levar algum tempo.

Trilhas de arraste

Podemos mapear as trilhas de arraste com o árvores selecionadas.

base + geom_sf(data = st_as_sf(SecondaryTrails$SmoothedTrails)) +
  geom_sf(data = TreeSelection$SelectedTreesPoints, aes(colour = "Selected"))

Corte de árvores

Em seguida, simulamos o corte da árvore. O corte da árvore cria uma árvore no solo, cujas dimensões são calculadas usando alometrias específicas.

O corte direcional visa direcionar a queda da árvore, com o pé em um ângulo em relação ao caminho, e evitando as árvores a serem protegidas. Mas o corte direcional pode falhar (em 40% dos casos)!

Corte de árvores

treefelling permite que você simula a corte de árvores.

inventory <- inventory %>% 
  treefelling(
    scenario = "manual", 
    fuel = "0",
    winching = "2", 
    directionalfelling = "2",
    maintrailsaccess = ScndTrailOutputs$MainTrailsAccess,
    scndtrail = ScndTrailOutputs$SmoothedTrails,
    advancedloggingparameters = loggingparameters()
  )

Corte de árvores

Podemos mapear os árvores no solo.

FelledTrees <- getgeometry(inventory, TreePolygon) %>% st_set_crs(crs)
base + geom_sf(data = st_as_sf(SecondaryTrails$SmoothedTrails)) + geom_sf(data = FelledTrees, fill = "lightpink")

Quantificar de volumes

Por fim, podemos quantificar o volume de madeira colhida de árvores saudáveis usadas para a produção de madeira com timberharvestedvolume.

TimberV <- timberharvestedvolume(
  inventory, 
  scenario = "manual", 
  fuel = "0",
  advancedloggingparameters = loggingparameters()
)
TimberV$TimberLoggedVolume
[1] 74.76017

Quantificar de volumes

Os detalhes da produção por espécie estão no inventário.

TimberV$inventory %>% 
  filter(DeathCause == "cut") %>% 
  group_by(CommercialName) %>% 
  summarise(
    trees_n = n(), 
    volume = sum(TimberLoggedVolume), 
    CommercialLevel = unique(CommercialLevel)
  )
# A tibble: 5 × 4
  CommercialName trees_n volume CommercialLevel
  <chr>            <int>  <dbl>           <dbl>
1 chawari              1   4.11               2
2 grignon franc        2  11.4                1
3 maho noir            3  12.3                2
4 wapa                 8  34.5                2
5 wapa courbaril       3  12.4                2

Quantificar de volumes

Mas, acima de tudo, podemos quantificar o biomassa de danos por causa de morte.

TimberV$inventory %>% 
  group_by(DeathCause) %>% 
  mutate(lost_agb = ifelse(DeathCause == "cut", 
                           AGB - TimberLoggedVolume * WoodDensity, 
                           AGB)) %>% 
  summarise(AGB = sum(AGB) / HarvestableArea$HarvestableArea) %>% 
  na.omit() 
# A tibble: 3 × 2
  DeathCause    AGB
  <chr>       <dbl>
1 2ndtrail    19.6 
2 cut         29.0 
3 treefall2nd  7.83

Para saber mais

Algumas informações adicionais para aqueles que desejam ir além com o LoggingLab.

Uma única simulação

Todas as etapas de simulação podem ser incluídas em uma única função para economizar tempo.

Rslt <- loggingsimulation1(
  Paracou6_2016,
  plotmask = PlotMask, 
  topography = DTMParacou,
  creekverticaldistance = CreekDistances$distvert,
  creekhorizontaldistance = CreekDistances$disthorz,
  speciescriteria = SpeciesCriteria,
  volumeparameters = ForestZoneVolumeParametersTable,
  scenario = "manual",
  objective = 20,
  fuel = "0", 
  winching = "2", 
  directionalfelling = "2", 
  diversification = TRUE, 
  crowndiameterparameters = ParamCrownDiameterAllometry,
  advancedloggingparameters = loggingparameters()
)

Várias simulações podem ser executadas pela função loggingsimulation() para levar em conta a estocasticidade com o argumento iter (número de simulações) e cores (número de núcleos de computador usados para realizar cálculos em paralelo).

Resultados

loggingsummary1 retorna um resumo das saídas da função de simulação.

loggingsummary1(Rslt)
inventory : Paracou6_2016 
scenario : manual 
objective : 20 m3/harvestable ha
fuel : 0 
diversification : TRUE 
winching : 2 
directionalfelling : 2 
specieslax : FALSE 
objectivelax : FALSE 
Harvestable area : 3.75 ha
Objective volume : 74.9 m3
Initial harvestable volume : 169.5 m3,  45.2 m3/harvestable ha
Timber logged volume : 74.9 m3,  20 m3/harvestable ha
No hollow timber logged volume : 74.9 m3,  20 m3/harvestable ha
Timber extracted volume (timber volume after purge : 64.4 m3,  17.2 m3/harvestable ha
Logging residual biomass : 152.6 ton,  40.7 ton/harvestable ha
Total forest biomass lost : 202.7 ton
Trails density : 95.9 m/ha

Please note that all volumes in m3/ha are per exploitable hectare, not per plot hectare.

Cenários

Os cenários reúnem os principais parâmetros de exploração. Eles são usados para definir a zona explorável, as árvores a serem cortadas e a modelagem de trilhas secundárias.

Cenários

As colunas do cenário são:

  • Type: o nome do cenário
  • SpatialDataType: o tipo de dados espaciais (Lidar ou SRTM)
  • Objective: o volume objetivo por hectare
  • Diversification: por permitir o corte de outras espécies além das principais espécies comerciais
  • Winching: o método de guincho, sem cabo ou garra = “0”, somente cabo = “1”, garra + cabo = “2”
  • DirectionalFelling: “0” = não utilizado, ‘1’ = apenas para evitar danos a árvores futuras e de reserva, ‘2’ = evitar danos a árvores futuras e de reserva + orientação da trilha

Todas as funções permitem scenario = “manual”: nesse caso, todos os argumentos devem ser adicionados manualmente. Seu nome é o mesmo das colunas.

Cenários

LogingLab inclui cenários predefinidos que correspondem a diferentes versões de registro de impacto reduzido na Guiana Francesa.

ScenariosTable
# A tibble: 6 × 6
  Type     SpatialDataType Objective Diversification Winching DirectionalFelling
  <chr>    <chr>           <chr>     <lgl>           <fct>    <fct>             
1 RIL1     SRTM            20-25     FALSE           0        0                 
2 RIL2bro… LIDAR           20-25     FALSE           0        0                 
3 RIL2     LIDAR           20-25     FALSE           1        0                 
4 RIL3     LIDAR           25-30     TRUE            2        2                 
5 RIL3fuel LIDAR           25-30     TRUE            2        2                 
6 RIL3fue… LIDAR           25-30     TRUE            2        2                 

Parâmetros de exploração

loggingparameters() define todos os parâmetros de exploração. Consulte sua ajuda (?loggingparameters). Os valores padrão são os usados na Guiana Francesa.

loggingparameters()
$MinDBHValue
[1] 10

$MaxTrailCenterlineSlope
[1] 22

$MaxTrailCrossSlope
[1] 4

$GrappleMaxslope
[1] 20

$CableTreesMaxSlope
[1] 35

$PlateauMaxSlope
[1] 5

$SlopeDistance
[1] 3

$WaterSourcesBufferZone
[1] 30

$WaterSourcesRelativeHeight
[1] 2

$MinMainTrailWidth
[1] 5

$MaxMainTrailWidth
[1] 6

$ScndTrailWidth
[1] 4

$BigTrees
[1] 50

$ResamplDistDTM
[1] 5

$SmoothingFact
[1] 10

$CableLength
[1] 40

$GrappleLength
[1] 6

$IsolateTreeMinDistance
[1] 100

$FutureTreesMinDiameter
[1] 35

$TreefallSuccessProportion
[1] 0.6

$MinTreefallOrientation
[1] 30

$MaxTreefallOrientation
[1] 45

$TreeHollowPartForFuel
[1] 0.3333333

$CrownPartForFuel
[1] 0.6666667

$Purge
[1] 0.14

$MaxTrailDensity
[1] 200

$MaxLandingArea
[1] 1500

$CostMatrix
$CostMatrix[[1]]
$CostMatrix[[1]][[1]]
$CostMatrix[[1]][[1]]$Slope
[1] 3

$CostMatrix[[1]][[1]]$Cost
[1] 3


$CostMatrix[[1]][[2]]
$CostMatrix[[1]][[2]]$Slope
[1] 5

$CostMatrix[[1]][[2]]$Cost
[1] 5


$CostMatrix[[1]][[3]]
$CostMatrix[[1]][[3]]$Slope
[1] 12

$CostMatrix[[1]][[3]]$Cost
[1] 20


$CostMatrix[[1]][[4]]
$CostMatrix[[1]][[4]]$Slope
[1] 20

$CostMatrix[[1]][[4]]$Cost
[1] 60


$CostMatrix[[1]][[5]]
$CostMatrix[[1]][[5]]$Slope
[1] 35

$CostMatrix[[1]][[5]]$Cost
[1] 1000


$CostMatrix[[1]][[6]]
$CostMatrix[[1]][[6]]$Slope
[1] Inf

$CostMatrix[[1]][[6]]$Cost
[1] Inf



$CostMatrix[[2]]
$CostMatrix[[2]][[1]]
$CostMatrix[[2]][[1]]$CostType
[1] "Initial"

$CostMatrix[[2]][[1]]$CostValue
[1] 1000


$CostMatrix[[2]][[2]]
$CostMatrix[[2]][[2]]$CostType
[1] "Access"

$CostMatrix[[2]][[2]]$CostValue
[1] Inf


$CostMatrix[[2]][[3]]
$CostMatrix[[2]][[3]]$CostType
[1] "BigTrees"

$CostMatrix[[2]][[3]]$CostValue
[1] 500


$CostMatrix[[2]][[4]]
$CostMatrix[[2]][[4]]$CostType
[1] "Reserves"

$CostMatrix[[2]][[4]]$CostValue
[1] 500


$CostMatrix[[2]][[5]]
$CostMatrix[[2]][[5]]$CostType
[1] "Futures"

$CostMatrix[[2]][[5]]$CostValue
[1] 50


$CostMatrix[[2]][[6]]
$CostMatrix[[2]][[6]]$CostType
[1] "MainTrails"

$CostMatrix[[2]][[6]]$CostValue
[1] 1e-04


$CostMatrix[[2]][[7]]
$CostMatrix[[2]][[7]]$CostType
[1] "SecondTrails"

$CostMatrix[[2]][[7]]$CostValue
[1] 0.1




$TreeHarvestableVolumeAllometry
function (DBH, aCoef, bCoef) 
aCoef + bCoef * (DBH/100)^2
<environment: 0x5fe1a870b888>

$TrunkHeightAllometry
function (DBH, TreeHarvestableVolume) 
TreeHarvestableVolume/(pi * (((DBH/100)/2)^2))
<environment: 0x5fe1a870b888>

$TreeHeightAllometry
function (DBH) 
exp(0.07359191 + 1.34241216 * log(DBH) + -0.12282344 * log(DBH)^2)
<environment: 0x5fe1a870b888>

$CrownDiameterAllometry
function (DBH, TreeHeight, alpha, beta) 
exp(((log(DBH) - alpha - rnorm(length(DBH), 0, 0.0295966977))/beta))/TreeHeight
<environment: 0x5fe1a870b888>

$RottenModel
function (DBH) 
1/(1 + exp(-(-5.151 + 0.042 * DBH)))
<environment: 0x5fe1a870b888>

$VisiblyDefectModel
function (LogDBH) 
1/(1 + exp(-(-3.392 + 0.357 * LogDBH)))
<environment: 0x5fe1a870b888>

$Treefall2ndDeathModel
function (DBH) 
1/(1 + exp(-(-0.47323 + -0.02564 * DBH)))
<environment: 0x5fe1a870b888>

Conclusão

Parabéns 👏 , agora vocês são profissionais do LoggingLab!

Falando mais seriamente, ficaremos felizes em responder a quaisquer perguntas que você possa ter, portanto, não hesite em dar uma olhada no GitHub para quaisquer dúvidas futuras.

Referências

Badouard, Vincyane, Sylvain Schmitt, Guillaume Salzet, Thomas Gaquiere, Margaux Rojat, Caroline Bedeau, Olivier Brunaux, and Géraldine Derroire. 2024. LoggingLab: An R Package to Simulate Reduced-Impact Selective Logging in Tropical Forests Using Forest Inventory Data.” Ecological Modelling 487 (January): 110539. https://doi.org/10.1016/j.ecolmodel.2023.110539.