Compares two SpatRaster
objects, each containing species presence-absence data
for multiple species under different climate scenarios (e.g., baseline vs. future).
It calculates and encodes the change in habitat suitability (gain, loss, unchanged, unsuitable)
for each species in each raster cell.
Arguments
- r1
A
SpatRaster
with multiple layers. Each layer represents a species' presence-absence data (0 for absence, 1 for presence) for the baseline climate scenario. Layer names should correspond to species names.- r2
A
SpatRaster
with multiple layers. Each layer represents a species' presence-absence data (0 for absence, 1 for presence) for the future climate scenario. Layer names should correspond to species names and must match those inr1
.- filename
Character string. Optional path and filename to save the resulting
SpatRaster
stack. Supported formats are those recognized byterra::writeRaster
(e.g., ".tif", ".grd"). If provided, theSpatRaster
will be saved to this file.
Value
A SpatRaster
object with multiple layers, where each layer corresponds to a species
from the input SpatRasters. Cell values are encoded as follows:
1 = Gain: Species absent in r1 (baseline) becomes present in r2 (future).
2 = Loss: Species present in r1 (baseline) becomes absent in r2 (future).
3 = Unchanged (Presence): Species present in both r1 and r2.
4 = Unsuitable (Both): Species absent in both r1 and r2.
The dimensions, resolution, and layer names of the output raster will match those of the input
r1 and r2.
Details
This function processes each species layer independently. It's crucial that
both input SpatRaster
s (r1
and r2
) have the same extent, resolution, and
the same number of layers, with corresponding layers representing the same species.
The function expects binary (0 or 1) presence-absence data.
Examples
library(terra)
# Load example rasters for baseline and future climate scenarios
r1 <- terra::rast(system.file("extdata", "ref.tif", package = "divraster"))
r2 <- terra::rast(system.file("extdata", "fut.tif", package = "divraster"))
# Calculate suitability change
change_map <- suit.change(r1, r2)
change_map
#> class : SpatRaster
#> dimensions : 8, 8, 10 (nrow, ncol, nlyr)
#> resolution : 0.125, 0.125 (x, y)
#> extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326)
#> source(s) : memory
#> varnames : fut
#> fut
#> fut
#> ...
#> names : A, B, C, D, E, F, ...
#> min values : 1, 1, 1, 1, 1, 1, ...
#> max values : 4, 4, 4, 4, 4, 4, ...