Skip to contents

Introduction

Le package nemeton implémente la méthode Nemeton pour l’analyse systémique de territoires forestiers. Il fournit des outils pour :

  • Calculer des indicateurs biophysiques multi-famille (carbone, eau, sols, paysage, etc.)
  • Normaliser les valeurs d’indicateurs selon plusieurs méthodes
  • Créer des indices composites pour une évaluation holistique
  • Visualiser les résultats avec des cartes et graphiques

Cette vignette démontre le workflow complet avec le jeu de données massif_demo.

Installation

# Depuis GitHub
remotes::install_github("pobsteta/nemeton")

Charger les données de démonstration

Le package inclut un jeu de données synthétique (massif_demo) représentant une zone de 5km × 5km avec 20 parcelles forestières.

# Charger les parcelles forestières
data(massif_demo_units)

# Inspecter les parcelles
print(massif_demo_units)
#> Simple feature collection with 20 features and 88 fields
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 698041.8 ymin: 6499215 xmax: 702793.8 ymax: 6504159
#> Projected CRS: RGF93 v1 / Lambert-93
#> First 10 features:
#>    parcel_id      forest_type age_class   management species age
#> 1        P01     Futaie mixte    Mature        Mixte    FASY  68
#> 2        P02 Futaie résineuse     Moyen   Production    PIAB  33
#> 3        P03  Futaie feuillue  Surannée Conservation    QUPE 104
#> 4        P04  Futaie feuillue  Surannée   Production    ABAL 166
#> 5        P05 Futaie résineuse     Moyen   Production    PISY  47
#> 6        P06 Futaie résineuse    Mature   Production    QURO  79
#> 7        P07  Futaie feuillue    Mature        Mixte    PINI  75
#> 8        P08  Futaie feuillue    Mature   Production    LADE  71
#> 9        P09     Futaie mixte     Moyen   Production    PSME  48
#> 10       P10          Taillis  Surannée   Production    CABE 165
#>    establishment_year density height  dbh volume strata fertility     climate
#> 1                1958     266   30.3 45.8  557.7      4         1 continental
#> 2                1993     465   30.4 57.5 1541.7      1         3  atlantique
#> 3                1922     128   31.7 41.7  232.7      2         2  atlantique
#> 4                1860     104   29.9 42.6  186.1      2         1  atlantique
#> 5                1979     324   27.5 51.5  779.5      2         2  atlantique
#> 6                1947     281   38.6 76.1 2072.1      2         1  atlantique
#> 7                1951     184   33.9 47.1  456.5      2         3 continental
#> 8                1955     169   27.2 38.8  228.3      3         2  montagnard
#> 9                1978     369   24.8 34.0  349.0      4         3  atlantique
#> 10               1861     632   25.7 34.0  619.4      2         2  montagnard
#>    surface_ha   area_ha        A1   A1_norm       A2    A2_norm B1   B1_norm
#> 1    4.989211  4.989211 0.5293842  32.76917 41.31477  15.769170  0   0.00000
#> 2    5.867935  5.867935 0.6934514  56.20735 54.25911  83.462924  0   0.00000
#> 3    6.557777  6.557777 1.0000000 100.00000 40.10522   9.443733  2  66.66667
#> 4    9.989553  9.989553 0.8866660  83.80943 47.07552  45.895638  0   0.00000
#> 5    5.906395  5.906395 0.5849180  40.70258 48.98128  55.861977  1  33.33333
#> 6    1.048296  1.048296 0.3000000   0.00000 56.56038  95.497643  2  66.66667
#> 7   17.079363 17.079363 0.7493859  64.19798 57.42131 100.000000  3 100.00000
#> 8   11.414577 11.414577 0.6541358  50.59082 46.65910  43.717908  2  66.66667
#> 9   16.105209 16.105209 0.5931199  41.87426 52.15218  72.444518  0   0.00000
#> 10  10.733433 10.733433 0.7438372  63.40531 41.21596  15.252433  1  33.33333
#>          B2  B2_norm        B3   B3_norm       C1   C1_norm           C2
#> 1  2.556369 41.55096 0.8262637  90.87085 258.9182  91.81550  0.032799533
#> 2  2.387431 35.94171 0.3583569  17.21558 228.1229  78.28157  0.016314059
#> 3  2.482645 39.10309 0.6591732  64.56840 193.5217  63.07502  0.030853722
#> 4  2.177975 28.98713 0.6150537  57.62336 187.2273  60.30875  0.005740350
#> 5  2.455282 38.19456 0.6392320  61.42937 269.4859  96.45981  0.017942008
#> 6  1.853111 18.20065 0.5374482  45.40713 277.5413 100.00000 -0.020873050
#> 7  3.716395 80.06740 0.8842580 100.00000 232.0788  80.02013  0.007636006
#> 8  2.808751 49.93083 0.7366941  76.77131 192.3779  62.57234  0.023693958
#> 9  3.800323 82.85408 0.3922287  22.54749 126.5075  33.62356 -0.031114446
#> 10 2.973928 55.41522 0.6031365  55.74742 132.7189  36.35337  0.007811520
#>     C2_norm        E1     E1_norm        E2   E2_norm F1 F1_norm        F2
#> 1  98.02844 0.6332431  48.4520928 1.2862944  37.35401  3      50 15.017516
#> 2  72.74375 0.5003880   0.1410856 1.1352980  30.18071  3      50 18.802915
#> 3  95.04404 0.5000000   0.0000000 1.0372173  25.52125  3      50  8.778060
#> 4  56.52626 0.5000000   0.0000000 1.6796913  56.04287  4      75 16.643021
#> 5  75.24062 0.5239562   8.7113699 0.5000000   0.00000  4      75 23.180358
#> 6  15.70780 0.5000000   0.0000000 0.5000000   0.00000  2      25  6.919386
#> 7  59.43373 0.7749997 100.0000000 0.9112013  19.53469  5     100  8.984532
#> 8  84.06271 0.5537554  19.5474302 1.8505265  64.15863  4      75 16.153539
#> 9   0.00000 0.7549689  92.7160383 2.6049801 100.00000  1       0 22.044466
#> 10 59.70293 0.6396033  50.7648918 0.5000000   0.00000  3      50 18.450890
#>     F2_norm family_A family_B family_C  family_E family_F family_L family_N
#> 1  63.53406 24.26917 44.14061 94.92197 42.903050 56.76703 31.33202 50.88637
#> 2  79.54881 69.83514 17.71910 75.51266 15.160900 64.77440 88.45910 23.50773
#> 3  37.13702 54.72187 56.77938 79.05953 12.760627 43.56851 64.18903 29.82359
#> 4  70.41103 64.85253 28.87016 58.41750 28.021436 72.70551 56.54965 82.49126
#> 5  98.06830 48.28228 44.31909 85.85022  4.355685 86.53415 29.12421 24.91877
#> 6  29.27359 47.74882 43.42482 57.85390  0.000000 27.13680 73.96207 18.79035
#> 7  38.01053 82.09899 93.35580 69.72693 59.767345 69.00527 31.81030 52.46156
#> 8  68.34019 47.15437 64.45627 73.31753 41.853032 71.67010 54.94544 48.98929
#> 9  93.26272 57.15939 35.13385 16.81178 96.358019 46.63136 20.22083 66.82370
#> 10 78.05951 39.32887 48.16532 48.02815 25.382446 64.02976 56.68762 32.42439
#>    family_P family_R family_S  family_T  family_W        L1   L1_norm        L2
#> 1  47.68739 32.09087 24.30425  54.11307  9.825682 0.2521898  10.97026 0.3017459
#> 2  86.78162 24.35791 24.18268  46.60595 50.880574 0.5743217 100.00000 0.3891689
#> 3  46.78139 42.35100 37.86009  77.38554 23.501831 0.3701597  43.57440 0.4164985
#> 4  48.20880 26.49766 17.50914  38.82146 49.612081 0.3389725  34.95499 0.3934184
#> 5  75.19072 66.66667 81.17865  24.74926 61.265609 0.3539412  39.09197 0.1889777
#> 6  14.75698 13.46698 61.86987  55.77872  4.498593 0.3858981  47.92413 0.4691661
#> 7  86.90201 49.06818 20.55367  31.18672 37.643152 0.3373054  34.49422 0.2235316
#> 8  51.09994 52.78169 59.97402  63.97211 43.968175 0.4188532  57.03213 0.3057835
#> 9  90.63200 59.19507 21.36929  74.07487 44.359948 0.3116164  27.39438 0.1678045
#> 10 73.61026 45.38187 81.27627 100.00000 58.656744 0.4423928  63.53794 0.2953117
#>      L2_norm        N1   N1_norm        N2    N2_norm        N3   N3_norm
#> 1   51.69377 1823.0542  66.05463 200.27051  24.049640  73.73125  62.55485
#> 2   76.91820  670.1452  23.10333 125.83536  14.560032  52.89941  32.85982
#> 3   84.80367 1365.9276  49.02451 101.35012  11.438453  50.19713  29.00781
#> 4   78.14431 2734.2239 100.00000 384.00619  47.473781 100.00000 100.00000
#> 5   19.15645  628.5385  21.55329 238.93704  28.979168  46.84107  24.22387
#> 6  100.00000 1259.2921  45.05183  20.07441   1.076754  37.03275  10.24246
#> 7   29.12638 1368.0672  49.10422 474.54786  59.016780  64.40716  49.26369
#> 8   52.85875 1237.7060  44.24765 432.85168  53.701007  64.23566  49.01923
#> 9   13.04729 1214.2662  43.37441 796.01449 100.000000  69.90222  57.09670
#> 10  49.83731 1339.1892  48.02838 237.28325  28.768329  44.21217  20.47647
#>          P1   P1_norm        P2   P2_norm       P3   P3_norm R1 R1_norm R2
#> 1  383.7837  79.52972  2.000000   0.00000 65.29495  63.53244  1       0  4
#> 2  303.2654  60.34486 10.150362 100.00000 84.57162 100.00000  1       0  2
#> 3  268.2949  52.01252  4.796243  34.30821 60.26851  54.02344  2      25  3
#> 4  250.9696  47.88446  6.134844  50.73203 56.03258  46.00991  1       0  3
#> 5  317.5492  63.74822  8.705667  82.27447 73.76151  79.54946  3      50  3
#> 6   50.0000   0.00000  4.414458  29.62394 39.45421  14.64700  1       0  1
#> 7  469.6968 100.00000  9.919209  97.16390 65.30007  63.54214  4      75  3
#> 8  335.6093  68.05134  4.231110  27.37436 62.30397  57.87411  2      25  4
#> 9  457.5569  97.10745  8.610862  81.11127 81.22943  93.67726  4      75  5
#> 10 387.6384  80.44816  7.831253  71.54595 68.09875  68.83666  4      75  2
#>    R2_norm        R3    R3_norm          S1     S1_norm       S2  S2_norm
#> 1       75 0.3397302  21.272605 0.473262981  30.4048558 49.06710 36.33387
#> 2       25 0.5299777  48.073743 0.004570495   0.2936322 77.80352 72.25440
#> 3       50 0.5582243  52.052986 0.963719475  61.9143116 51.13707 38.92133
#> 4       50 0.3980824  29.492982 0.817609054  52.5274243 20.00000  0.00000
#> 5       50 0.8985756 100.000000 1.162277601  74.6707102 75.09220 68.86525
#> 6        0 0.4755124  40.400942 1.556537495 100.0000000 70.17784 62.72230
#> 7       50 0.3463454  22.204529 0.224703022  14.4360816 57.77993 47.22491
#> 8       75 0.6028886  58.345075 1.039444491  66.7792774 69.31990 61.64987
#> 9      100 0.2070778   2.585199 0.227250712  14.5997583 59.60649 49.50811
#> 10      25 0.4453061  36.145624 1.448289535  93.0455926 76.73387 70.91733
#>           S3    S3_norm        T1   T1_norm        T2   T2_norm        W1
#> 1   1904.090   6.174013  88.06364  57.29425 11.324896  50.93189 0.1862923
#> 2   1000.000   0.000000  82.82317  53.44804  9.198844  39.76386 0.5393849
#> 3   2866.255  12.744614 126.47324  85.48470 14.819030  69.28638 0.4476438
#> 4   1000.000   0.000000  62.19125  38.30539  9.117684  39.33753 1.1437187
#> 5  15643.478 100.000000  10.00000   0.00000 11.052026  49.49852 1.0737964
#> 6   4351.499  22.887318 130.42042  88.38171  6.040972  23.17574 0.0000000
#> 7   1000.000   0.000000  77.26310  49.36727  4.104996  13.00617 0.2170906
#> 8   8540.351  51.492899 136.43831  92.79850  8.319690  35.14572 0.2103747
#> 9   1000.000   0.000000 126.99400  85.86691 13.485767  62.28283 0.7851203
#> 10 12695.145  79.865898 146.25039 100.00000 20.665966 100.00000 1.3757609
#>      W1_norm        W2   W2_norm        W3   W3_norm
#> 1   9.782561  1.119890  10.45221  5.089475  9.242271
#> 2  28.324119  8.374436  78.16072  8.400556 46.156887
#> 3  23.506618  2.896998  27.03841  6.050851 19.960465
#> 4  60.058825  4.913373  45.85774  8.110192 42.919675
#> 5  56.387074  3.125075  29.16711 13.072421 98.242638
#> 6   0.000000  0.000000   0.00000  5.470996 13.495779
#> 7  11.399838 10.714380 100.00000  4.397684  1.529617
#> 8  11.047174  6.589757  61.50386  9.584233 59.353487
#> 9  41.228147  4.205627  39.25218  8.978432 52.599520
#> 10 72.243796  7.721442  72.06616  7.100273 31.660276
#>                          geometry
#> 1  POLYGON ((698299.9 6499928,...
#> 2  POLYGON ((701702.2 6500418,...
#> 3  POLYGON ((702240.4 6500270,...
#> 4  POLYGON ((700641.3 6504129,...
#> 5  POLYGON ((699268.2 6500307,...
#> 6  POLYGON ((699943.5 6499421,...
#> 7  POLYGON ((698500.5 6499360,...
#> 8  POLYGON ((699061.9 6499649,...
#> 9  POLYGON ((702258.5 6500666,...
#> 10 POLYGON ((699897.1 6500739,...

# Statistiques sommaires
cat("\nSurface totale:", sum(massif_demo_units$surface_ha), "ha\n")
#> 
#> Surface totale: 136.0225 ha
table(massif_demo_units$forest_type)
#> 
#>  Futaie feuillue     Futaie mixte Futaie résineuse          Taillis 
#>               11                2                4                3
ggplot(massif_demo_units) +
  geom_sf(aes(fill = forest_type)) +
  theme_minimal() +
  labs(
    title = "Massif Demo - Types forestiers",
    fill = "Type de forêt"
  )
Parcelles forestières par type

Parcelles forestières par type

Charger les couches spatiales

Utilisez massif_demo_layers() pour charger tous les rasters et vecteurs associés :

layers <- massif_demo_layers()
print(layers)
#> 
#> ── nemeton_layers object ───────
#> 
#> ── Rasters (4) ──
#> 
#> • biomass : massif_demo_biomass.tif [not loaded] 
#> • dem : massif_demo_dem.tif [not loaded] 
#> • landcover : massif_demo_landcover.tif [not loaded] 
#> • species_richness : massif_demo_species_richness.tif [not loaded] 
#> 
#> ── Vectors (2) ──
#> 
#> • roads : massif_demo_roads.gpkg [not loaded] 
#> • water : massif_demo_water.gpkg [not loaded]

Le jeu de données inclut : - Rasters : biomasse, MNT, occupation du sol, richesse spécifique - Vecteurs : réseau routier, cours d’eau

Calculer les indicateurs

Indicateurs individuels

# Carbone (via NDVI)
carbon <- nemeton_compute(
  massif_demo_units,
  layers,
  indicators = "carbon_ndvi"
)

# Eau (TWI - Topographic Wetness Index)
water <- nemeton_compute(
  massif_demo_units,
  layers,
  indicators = "water_twi"
)

# Afficher les résultats
head(carbon[, c("parcel_id", "forest_type", "carbon_ndvi")])
#> Simple feature collection with 6 features and 3 fields
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 698041.8 ymin: 6499388 xmax: 702507.7 ymax: 6504159
#> Projected CRS: RGF93 v1 / Lambert-93
#>   parcel_id      forest_type carbon_ndvi                       geometry
#> 1       P01     Futaie mixte          NA POLYGON ((698299.9 6499928,...
#> 2       P02 Futaie résineuse          NA POLYGON ((701702.2 6500418,...
#> 3       P03  Futaie feuillue          NA POLYGON ((702240.4 6500270,...
#> 4       P04  Futaie feuillue          NA POLYGON ((700641.3 6504129,...
#> 5       P05 Futaie résineuse          NA POLYGON ((699268.2 6500307,...
#> 6       P06 Futaie résineuse          NA POLYGON ((699943.5 6499421,...

Indicateurs multiples simultanés

# Calculer 3 indicateurs en une fois
results <- nemeton_compute(
  massif_demo_units,
  layers,
  indicators = c("carbon_ndvi", "water_twi", "landscape_fragmentation")
)

# Vue d'ensemble
summary(results[, c("carbon_ndvi", "water_twi", "landscape_fragmentation")])
#>   carbon_ndvi    water_twi     landscape_fragmentation          geometry 
#>  Min.   : NA   Min.   :4.551   Min.   :34.20           POLYGON      :20  
#>  1st Qu.: NA   1st Qu.:4.698   1st Qu.:35.40           epsg:2154    : 0  
#>  Median : NA   Median :4.766   Median :35.80           +proj=lcc ...: 0  
#>  Mean   :NaN   Mean   :4.745   Mean   :35.97                             
#>  3rd Qu.: NA   3rd Qu.:4.798   3rd Qu.:36.42                             
#>  Max.   : NA   Max.   :4.887   Max.   :38.30                             
#>  NA's   :20

Normalisation

Normalisez les indicateurs pour les rendre comparables (échelle 0-100) :

# Normalisation min-max
normalized <- normalize_indicators(
  results,
  indicators = c("carbon_ndvi", "water_twi", "landscape_fragmentation"),
  method = "minmax"
)

# Comparer avant/après
cat("\nAvant normalisation (carbone NDVI):\n")
#> 
#> Avant normalisation (carbone NDVI):
summary(results$carbon_ndvi)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
#>      NA      NA      NA     NaN      NA      NA      20

cat("\nAprès normalisation (carbone NDVI):\n")
#> 
#> Après normalisation (carbone NDVI):
summary(normalized$carbon_ndvi_norm)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
#>      NA      NA      NA     NaN      NA      NA      20

Méthodes de normalisation

# z-score (distribution normale centrée-réduite)
norm_zscore <- normalize_indicators(
  results,
  indicators = "carbon_ndvi",
  method = "zscore"
)

# Quantiles (distribution uniforme)
norm_quantile <- normalize_indicators(
  results,
  indicators = "carbon_ndvi",
  method = "quantile"
)

Agrégation en indices composites

Combinez plusieurs indicateurs en un indice unique :

# Indice composite avec poids égaux
composite <- create_composite_index(
  normalized,
  indicators = c("carbon_ndvi_norm", "water_twi_norm", "landscape_fragmentation_norm"),
  name = "ecosystem_health"
)

# Afficher les résultats
head(composite[, c("parcel_id", "forest_type", "ecosystem_health")])
#> Simple feature collection with 6 features and 3 fields
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 698041.8 ymin: 6499388 xmax: 702507.7 ymax: 6504159
#> Projected CRS: RGF93 v1 / Lambert-93
#>   parcel_id      forest_type ecosystem_health                       geometry
#> 1       P01     Futaie mixte         50.17527 POLYGON ((698299.9 6499928,...
#> 2       P02 Futaie résineuse         36.11224 POLYGON ((701702.2 6500418,...
#> 3       P03  Futaie feuillue         62.13934 POLYGON ((702240.4 6500270,...
#> 4       P04  Futaie feuillue         39.52632 POLYGON ((700641.3 6504129,...
#> 5       P05 Futaie résineuse         44.58606 POLYGON ((699268.2 6500307,...
#> 6       P06 Futaie résineuse         18.11143 POLYGON ((699943.5 6499421,...

Agrégation pondérée

# Poids personnalisés (carbone 50%, paysage 30%, eau 20%)
composite_weighted <- create_composite_index(
  normalized,
  indicators = c("carbon_ndvi_norm", "landscape_fragmentation_norm", "water_twi_norm"),
  weights = c(0.5, 0.3, 0.2),
  name = "conservation_index"
)

Méthodes d’agrégation

# Moyenne géométrique (effets multiplicatifs)
composite_geom <- create_composite_index(
  normalized,
  indicators = c("carbon_ndvi_norm", "water_twi_norm"),
  aggregation = "geometric_mean",
  name = "water_carbon_index"
)

# Minimum (approche conservatrice, facteur limitant)
composite_min <- create_composite_index(
  normalized,
  indicators = c("carbon_ndvi_norm", "water_twi_norm"),
  aggregation = "min",
  name = "minimum_performance"
)

Visualisation

Cartes thématiques

plot_indicators_map(
  composite,
  indicators = "ecosystem_health",
  title = "Indice de santé écosystémique",
  legend_title = "Score (0-100)"
)
Carte de l'indice de santé écosystémique

Carte de l’indice de santé écosystémique

Cartes multiples (facettes)

plot_indicators_map(
  normalized,
  indicators = c("carbon_ndvi_norm", "water_twi_norm"),
  palette = "viridis",
  facet = TRUE,
  ncol = 2,
  title = "Comparaison carbone vs eau"
)
Comparaison carbone vs eau

Comparaison carbone vs eau

Graphique radar

nemeton_radar(
  normalized,
  unit_id = "P01",
  indicators = c("carbon_ndvi_norm", "water_twi_norm", "landscape_fragmentation_norm"),
  title = "Profil multi-indicateurs - Parcelle P01"
)
Profil écosystémique - Parcelle P01

Profil écosystémique - Parcelle P01

Workflow complet

Voici un exemple de workflow complet de bout en bout :

# 1. Charger les données
data(massif_demo_units)
layers <- massif_demo_layers()

# 2. Calculer les indicateurs
results <- nemeton_compute(
  massif_demo_units,
  layers,
  indicators = c(
    "carbon_ndvi", "water_twi", "landscape_fragmentation"
  )
)

# 3. Normaliser (0-100)
normalized <- normalize_indicators(
  results,
  indicators = c(
    "carbon_ndvi", "water_twi", "landscape_fragmentation"
  ),
  method = "minmax"
)

# 4. Créer un indice composite
composite <- create_composite_index(
  normalized,
  indicators = c("carbon_ndvi_norm", "water_twi_norm", "landscape_fragmentation_norm"),
  weights = c(0.4, 0.4, 0.2),
  name = "forest_quality"
)

# 5. Visualiser
plot_indicators_map(
  composite,
  indicators = "forest_quality",
  title = "Indice de qualité forestière",
  legend_title = "Score (0-100)"
)

Analyses avancées

Inverser un indicateur

Pour les indicateurs où une valeur faible est souhaitable :

# Exemple: inverser un indicateur
# (Utilisé pour les indicateurs où une valeur faible est souhaitable)
normalized_inv <- invert_indicator(
  normalized,
  indicators = "water_twi_norm",
  suffix = "_inv"
)

# L'indicateur inversé
head(normalized_inv[, c("parcel_id", "water_twi_norm", "water_twi_norm_inv")])

Filtrage et sous-ensembles

# Sélectionner uniquement les futaies feuillues
broadleaf <- normalized[normalized$forest_type == "Futaie feuillue", ]

# Créer un indice spécifique
broadleaf_index <- create_composite_index(
  broadleaf,
  indicators = c("carbon_ndvi_norm", "water_twi_norm"),
  name = "broadleaf_quality"
)

Internationalisation

Le package supporte le français et l’anglais :

# Définir la langue
nemeton_set_language("fr") # Français
# nemeton_set_language("en")  # English

# Les messages d'erreur/information seront dans la langue choisie

Export des résultats

# Export en GeoPackage
sf::st_write(composite, "results/forest_quality.gpkg")

# Export en CSV (sans géométrie)
results_table <- composite |>
  sf::st_drop_geometry()
write.csv(results_table, "results/forest_quality.csv", row.names = FALSE)

Prochaines étapes

Références

Session Info

sessionInfo()
#> R version 4.5.2 (2025-10-31)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.3 LTS
#> 
#> Matrix products: default
#> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
#> 
#> locale:
#>  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
#>  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
#>  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
#> [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
#> 
#> time zone: UTC
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] ggplot2_4.0.2       nemeton_0.14.1.9000
#> 
#> loaded via a namespace (and not attached):
#>  [1] gtable_0.3.6         xfun_0.56            bslib_0.10.0        
#>  [4] raster_3.6-32        htmlwidgets_1.6.4    lattice_0.22-7      
#>  [7] tzdb_0.5.0           fasterRaster_8.4.1.1 vctrs_0.7.1         
#> [10] tools_4.5.2          generics_0.1.4       parallel_4.5.2      
#> [13] curl_7.0.0           tibble_3.3.1         proxy_0.4-29        
#> [16] pkgconfig_2.0.3      KernSmooth_2.23-26   data.table_1.18.2.1 
#> [19] RColorBrewer_1.1-3   S7_0.2.1             desc_1.4.3          
#> [22] lifecycle_1.0.5      compiler_4.5.2       farver_2.1.2        
#> [25] textshaping_1.0.4    terra_1.8-93         nasapower_4.2.5     
#> [28] codetools_0.2-20     htmltools_0.5.9      class_7.3-23        
#> [31] sass_0.4.10          yaml_2.3.12          tidyr_1.3.2         
#> [34] crayon_1.5.3         later_1.4.6          pillar_1.11.1       
#> [37] pkgdown_2.2.0        exactextractr_0.10.1 jquerylib_0.1.4     
#> [40] classInt_0.4-11      cachem_1.1.0         tidyselect_1.2.1    
#> [43] digest_0.6.39        purrr_1.2.1          sf_1.0-24           
#> [46] dplyr_1.2.0          labeling_0.4.3       fastmap_1.2.0       
#> [49] grid_4.5.2           cli_3.6.5            magrittr_2.0.4      
#> [52] omnibus_1.2.15       triebeard_0.4.1      crul_1.6.0          
#> [55] e1071_1.7-17         readr_2.1.6          withr_3.0.2         
#> [58] scales_1.4.0         promises_1.5.0       rappdirs_0.3.4      
#> [61] bit64_4.6.0-1        sp_2.2-1             rmarkdown_2.30      
#> [64] bit_4.6.0            otel_0.2.0           hms_1.1.4           
#> [67] ragg_1.5.0           evaluate_1.0.5       knitr_1.51          
#> [70] viridisLite_0.4.3    rlang_1.1.7          urltools_1.7.3.1    
#> [73] Rcpp_1.1.1           glue_1.8.0           DBI_1.2.3           
#> [76] httpcode_0.3.0       xml2_1.5.2           vroom_1.7.0         
#> [79] jsonlite_2.0.0       R6_2.6.1             systemfonts_1.3.1   
#> [82] fs_1.6.6             units_1.0-0          rgrass_0.5-3