Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 6
)
## ----results='hide', message=FALSE, warning=FALSE-----------------------------
# Load packages
library(kuenm2)
library(terra)
# Current directory
getwd()
# Define new directory
#setwd("YOUR/DIRECTORY") # uncomment and modify if setting a new directory
# Saving original plotting parameters
original_par <- par(no.readonly = TRUE)
## ----import maxnet calib, warning=FALSE---------------------------------------
# Import fitted_model_maxnet
data("fitted_model_maxnet", package = "kuenm2")
# Print fitted models
fitted_model_maxnet
## -----------------------------------------------------------------------------
# See raster files with future variables provided as example
# The data is located in the "inst/extdata" folder.
in_dir <- system.file("extdata", package = "kuenm2")
list.files(in_dir)
## ----geodata, eval=FALSE------------------------------------------------------
# # Install geodata if necessary
# if (!require("geodata")) {
# install.packages("geodata")
# }
#
# # Load geodata
# library(geodata)
#
# # Create folder to save the raster files
# # Here, in a temporary directory
# geodata_dir <- file.path(tempdir(), "Future_worldclim")
# dir.create(geodata_dir)
#
# # Define GCMs, SSPs and time periods
# gcms <- c("ACCESS-CM2", "MIROC6")
# ssps <- c("126", "585")
# periods <- c("2041-2060", "2061-2080")
#
# # Create a grid of combination of periods, ssps and gcms
# g <- expand.grid("period" = periods, "ssps" = ssps, "gcms" = gcms)
# g # Each line is a specific scenario for future
#
# # Loop to download variables for each scenario (It can take a while)
# lapply(1:nrow(g), function(i) {
# cmip6_world(model = g$gcms[i],
# ssp = g$ssps[i],
# time = g$period[i],
# var = "bioc",
# res = 10, path = geodata_dir)
# })
## ----check geodata folder, eval=FALSE-----------------------------------------
# list.files(geodata_dir, recursive = TRUE)
# #> [1] "climate/wc2.1_10m/wc2.1_10m_bioc_ACCESS-CM2_ssp126_2041-2060.tif"
# #> [2] "climate/wc2.1_10m/wc2.1_10m_bioc_ACCESS-CM2_ssp126_2061-2080.tif"
# #> [3] "climate/wc2.1_10m/wc2.1_10m_bioc_ACCESS-CM2_ssp585_2041-2060.tif"
# #> [4] "climate/wc2.1_10m/wc2.1_10m_bioc_ACCESS-CM2_ssp585_2061-2080.tif"
# #> [5] "climate/wc2.1_10m/wc2.1_10m_bioc_MIROC6_ssp126_2041-2060.tif"
# #> [6] "climate/wc2.1_10m/wc2.1_10m_bioc_MIROC6_ssp126_2061-2080.tif"
# #> [7] "climate/wc2.1_10m/wc2.1_10m_bioc_MIROC6_ssp585_2041-2060.tif"
# #> [8] "climate/wc2.1_10m/wc2.1_10m_bioc_MIROC6_ssp585_2061-2080.tif"
# #>
# #> #Set climate as input directory
# #> in_dir <- file.path(geodata_dir, "climate")
## ----names in fitted----------------------------------------------------------
fitted_model_maxnet$continuous_variables
## ----static soil--------------------------------------------------------------
# Import raster layers (same used to calibrate and fit final models)
var <- rast(system.file("extdata", "Current_variables.tif", package = "kuenm2"))
# Get soilType
soiltype <- var$SoilType
## ----organize_future_worldclim------------------------------------------------
# Create folder to save structured files
out_dir_future <- file.path(tempdir(), "Future_raw") # a temporary directory
# Organize
organize_future_worldclim(input_dir = in_dir, # Path to variables from WorldClim
output_dir = out_dir_future,
name_format = "bio_", # Name format
static_variables = var$SoilType) # Static variables
# Check files organized
dir(out_dir_future, recursive = TRUE)
## ----fs, eval = FALSE---------------------------------------------------------
# # Install package if necessary
# if (!require("fs")) {
# install.packages("fs")
# }
#
# dir_tree(out_dir_future)
# #> Temp\RtmpkhmGWN/Future_raw
# #> ├── 2041-2060
# #> │ ├── ssp126
# #> │ │ ├── ACCESS-CM2
# #> │ │ │ └── Variables.tif
# #> │ │ └── MIROC6
# #> │ │ └── Variables.tif
# #> │ └── ssp585
# #> │ ├── ACCESS-CM2
# #> │ │ └── Variables.tif
# #> │ └── MIROC6
# #> │ └── Variables.tif
# #> └── 2081-2100
# #> ├── ssp126
# #> │ ├── ACCESS-CM2
# #> │ │ └── Variables.tif
# #> │ └── MIROC6
# #> │ └── Variables.tif
# #> └── ssp585
# #> ├── ACCESS-CM2
# #> │ └── Variables.tif
# #> └── MIROC6
# #> └── Variables.tif
## ----copy present-------------------------------------------------------------
# Create a "Current_raw" folder in a temporary directory
# and copy the rawvariables there.
out_dir_current <- file.path(tempdir(), "Current_raw")
dir.create(out_dir_current, recursive = TRUE)
# Save current variables in temporary directory
terra::writeRaster(var, file.path(out_dir_current, "Variables.tif"))
# Check folder
list.files(out_dir_current)
## ----prepare projections------------------------------------------------------
# Prepare projections using fitted models to check variables
pr <- prepare_projection(models = fitted_model_maxnet,
present_dir = out_dir_current, # Directory with present-day variables
past_dir = NULL, # NULL because we won't project to the past
past_period = NULL, # NULL because we won't project to the past
past_gcm = NULL, # NULL because we won't project to the past
future_dir = out_dir_future, # Directory with future variables
future_period = c("2041-2060", "2081-2100"),
future_pscen = c("ssp126", "ssp585"),
future_gcm = c("ACCESS-CM2", "MIROC6"))
## ----print pr-----------------------------------------------------------------
pr
## ----str pr, eval = FALSE-----------------------------------------------------
# # Open prepared_projection in a new window
# View(pr)
## ----project selected---------------------------------------------------------
# Create a folder to save projection results
# Here, in a temporary directory
out_dir <- file.path(tempdir(), "Projection_results/maxnet")
dir.create(out_dir, recursive = TRUE)
# Project selected models to multiple scenarios
p <- project_selected(models = fitted_model_maxnet,
projection_data = pr,
out_dir = out_dir,
write_replicates = TRUE,
progress_bar = FALSE) # Do not print progress bar
## ----print model_projections--------------------------------------------------
print(p)
## ----print results, eval=FALSE------------------------------------------------
# dir_tree(out_dir)
# #> Temp\Projection_results/maxnet
# #> ├── Future
# #> │ ├── 2041-2060
# #> │ │ ├── ssp126
# #> │ │ │ ├── ACCESS-CM2
# #> │ │ │ │ ├── General_consensus.tif
# #> │ │ │ │ ├── Model_192_consensus.tif
# #> │ │ │ │ ├── Model_192_replicates.tif
# #> │ │ │ │ ├── Model_219_consensus.tif
# #> │ │ │ │ └── Model_219_replicates.tif
# #> │ │ │ └── MIROC6
# #> │ │ │ ├── General_consensus.tif
# #> │ │ │ ├── Model_192_consensus.tif
# #> │ │ │ ├── Model_192_replicates.tif
# #> │ │ │ ├── Model_219_consensus.tif
# #> │ │ │ └── Model_219_replicates.tif
# #> │ │ └── ssp585
# #> │ │ ├── ACCESS-CM2
# #> │ │ │ ├── General_consensus.tif
# #> │ │ │ ├── Model_192_consensus.tif
# #> │ │ │ ├── Model_192_replicates.tif
# #> │ │ │ ├── Model_219_consensus.tif
# #> │ │ │ └── Model_219_replicates.tif
# #> │ │ └── MIROC6
# #> │ │ ├── General_consensus.tif
# #> │ │ ├── Model_192_consensus.tif
# #> │ │ ├── Model_192_replicates.tif
# #> │ │ ├── Model_219_consensus.tif
# #> │ │ └── Model_219_replicates.tif
# #> │ └── 2081-2100
# #> │ ├── ssp126
# #> │ │ ├── ACCESS-CM2
# #> │ │ │ ├── General_consensus.tif
# #> │ │ │ ├── Model_192_consensus.tif
# #> │ │ │ ├── Model_192_replicates.tif
# #> │ │ │ ├── Model_219_consensus.tif
# #> │ │ │ └── Model_219_replicates.tif
# #> │ │ └── MIROC6
# #> │ │ ├── General_consensus.tif
# #> │ │ ├── Model_192_consensus.tif
# #> │ │ ├── Model_192_replicates.tif
# #> │ │ ├── Model_219_consensus.tif
# #> │ │ └── Model_219_replicates.tif
# #> │ └── ssp585
# #> │ ├── ACCESS-CM2
# #> │ │ ├── General_consensus.tif
# #> │ │ ├── Model_192_consensus.tif
# #> │ │ ├── Model_192_replicates.tif
# #> │ │ ├── Model_219_consensus.tif
# #> │ │ └── Model_219_replicates.tif
# #> │ └── MIROC6
# #> │ ├── General_consensus.tif
# #> │ ├── Model_192_consensus.tif
# #> │ ├── Model_192_replicates.tif
# #> │ ├── Model_219_consensus.tif
# #> │ └── Model_219_replicates.tif
# #> ├── Present
# #> │ └── Present
# #> │ ├── General_consensus.tif
# #> │ ├── Model_192_consensus.tif
# #> │ ├── Model_192_replicates.tif
# #> │ ├── Model_219_consensus.tif
# #> │ └── Model_219_replicates.tif
# #> └── Projection_paths.RDS
## ----import mean--------------------------------------------------------------
# Import mean of each projected scenario
p_mean <- import_results(projection = p, consensus = "mean")
# Plot all scenarios
terra::plot(p_mean, cex.main = 0.8)
## ----specific scen, fig.width = 7, fig.height = 4-----------------------------
# Importing
p_2060_ssp126 <- import_results(projection = p, consensus = "mean",
present = FALSE, # Do not import present projections
future_period = "2041-2060",
future_pscen = "ssp126")
# Plot all scenarios
terra::plot(p_2060_ssp126, cex.main = 0.8)
## ----projection_changes-------------------------------------------------------
# Run analysis to detect changes in suitable areas
changes <- projection_changes(model_projections = p,
output_dir = out_dir,
write_bin_models = TRUE, # Write individual binary results
return_raster = TRUE)
## ----set colors for change----------------------------------------------------
# Set colors for change maps
changes_col <- colors_for_changes(changes)
## ----binarized----------------------------------------------------------------
terra::plot(changes_col$Binarized, cex.main = 0.8)
## ----results by gcm-----------------------------------------------------------
terra::plot(changes_col$Results_by_gcm, cex.main = 0.8)
## ----Results_by_change--------------------------------------------------------
# Results by change for the scenario of 2041-2060 (ssp126)
terra::plot(changes_col$Results_by_change$`Future_2041-2060_ssp126`)
## ----summary changes----------------------------------------------------------
terra::plot(changes_col$Summary_changes, plg = list(cex = 0.75)) # Decrease size of legend text
## ----import general summary---------------------------------------------------
# Import changes detected for 2041–2060 SSP5-8.5
general_changes <- import_results(projection = changes,
future_period = "2041-2060",
future_pscen = "ssp585",
change_types = "summary")
# Set colors
general_changes <- colors_for_changes(general_changes)
# Plot
terra::plot(general_changes$Summary, main = names(general_changes$Summary),
plg = list(cex = 0.75)) # Decrease size of legend text
## ----save raster changes, eval = FALSE----------------------------------------
# writeRaster(changes$Summary_changes,
# file.path(out_dir, "Summary_changes.tif"))
## ----read changes projection--------------------------------------------------
changes <- readRDS(file.path(out_dir, "Projection_changes/changes_projections.rds"))
## ----par_reset----------------------------------------------------------------
# Reset plotting parameters
par(original_par)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.