Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, error = FALSE, fig.retina = 1, dpi = 80)
## ----generating data for plotting---------------------------------------------
library(voluModel) # Because of course
library(ggplot2) # For fancy plotting
library(viridisLite) # For high-contrast plotting palettes
library(dplyr) # To filter data
library(terra) # Now being transitioned in
library(sf) # Now being transitioned in
# Load data
oxygenSmooth <- rast(system.file("extdata/oxygenSmooth.tif",
package='voluModel'))
occs <- read.csv(system.file("extdata/Steindachneria_argentea.csv",
package='voluModel'))
# Temperature
td <- tempdir()
unzip(system.file("extdata/woa18_decav_t00mn01_cropped.zip",
package = "voluModel"),
exdir = paste0(td, "/temperature"), junkpaths = T)
temperature <- vect(paste0(td, "/temperature/woa18_decav_t00mn01_cropped.shp"))
# Creating a SpatRaster vector
template <- centerPointRasterTemplate(temperature)
tempTerVal <- rasterize(x = temperature, y = template, field = names(temperature))
# Get names of depths
envtNames <- gsub("[d,M]", "", names(temperature))
envtNames[[1]] <- "0"
names(tempTerVal) <- envtNames
temperature <- tempTerVal
# Oxygen processing
names(oxygenSmooth) <- names(temperature)
# Clean points ----
occurrences <- occs %>% dplyr::select(decimalLongitude, decimalLatitude, depth) %>%
distinct() %>% filter(dplyr::between(depth, 1, 2000))
# Gets the layer index for each occurrence by matching to depth
layerNames <- as.numeric(names(temperature))
occurrences$index <- unlist(lapply(occurrences$depth,
FUN = function(x) which.min(abs(layerNames - x))))
indices <- unique(occurrences$index)
downsampledOccs <- data.frame()
for(i in indices){
tempPoints <- occurrences[occurrences$index==i,]
tempPoints <- downsample(tempPoints, temperature[[1]], verbose = FALSE)
tempPoints$depth <- rep(layerNames[[i]], times = nrow(tempPoints))
downsampledOccs <- rbind(downsampledOccs, tempPoints)
}
occsWdata <- downsampledOccs[,c("decimalLatitude", "decimalLongitude", "depth")]
# Extract data ----
occsWdata$temperature <- xyzSample(occs = occsWdata, temperature)
occsWdata$AOU <- xyzSample(occs = occsWdata, oxygenSmooth)
occsWdata <- occsWdata[complete.cases(occsWdata),]
# Land shapefile
land <- rnaturalearth::ne_countries(scale = "small", returnclass = "sf")[1]
# Study region
studyRegion <- marineBackground(occsWdata, buff = 1000000)
# Get limits
tempLims <- quantile(occsWdata$temperature,c(0, 1))
aouLims <- quantile(occsWdata$AOU,c(0, 1))
# Reclassify environmental bricks to presence/absence
temperaturePresence <- classify(temperature,
rcl = matrix(c(-Inf,tempLims[[1]],0,
tempLims[[1]], tempLims[[2]], 1,
tempLims[[2]], Inf, 0),
ncol = 3, byrow = TRUE))
AOUpresence <- classify(oxygenSmooth,
rcl = matrix(c(-Inf, aouLims[[1]],0,
aouLims[[1]], aouLims[[2]], 1,
aouLims[[2]], Inf, 0),
ncol = 3, byrow = TRUE))
# Put it all together
envelopeModel3D <- temperaturePresence * AOUpresence
envelopeModel3D <- mask(crop(envelopeModel3D, studyRegion),
mask = studyRegion)
names(envelopeModel3D) <- names(temperature)
rm(AOUpresence, downsampledOccs, occurrences, temperaturePresence,
tempPoints, aouLims, envtNames, i, indices, layerNames, tempLims)
## ----pointMap, warning=FALSE, message=FALSE, eval=TRUE------------------------
pointMap(occs = occs, land = land, landCol = "black", spName = "Steindachneria argentea",
ptSize = 2, ptCol = "orange")
## ----pointCompMap, warning=FALSE, message=FALSE-------------------------------
pointCompMap(occs1 = occs, occs1Col = "red", occs1Name = "Raw",
occs2 = occsWdata, occs2Col = "orange", occs2Name = "Clean",
spName = "Steindachneria argentea", agreeCol = "purple",
land = land, landCol = "black", ptSize = 2, verbose = FALSE)
## ----oneRasterPlot------------------------------------------------------------
oneRasterPlot(rast = temperature[[1]],
land = land, title = "Sea Surface Temperature, WOA 2018",
landCol = "black", n = 11, option = "mako",
varName = "Temperature")
## ----rasterComp---------------------------------------------------------------
rasterComp(rast1 = envelopeModel3D[[1]], rast1Name = "Surface",
rast2 = envelopeModel3D[[10]], rast2Name = "45m",
land = land, landCol = "black",
title = "Suitability of Habitat for Luminous Hake\nAt Two Different Depths")
## ----plotLayers---------------------------------------------------------------
layerNames <- as.numeric(names(envelopeModel3D))
occsWdata$index <- unlist(lapply(occsWdata$depth, FUN = function(x) which.min(abs(layerNames - x))))
indices <- unique(occsWdata$index)
layerPlot <- plotLayers(envelopeModel3D[[min(indices):max(indices)]],
title = "Envelope Model of Luminous Hake,\n 20 to 700m",
land = land, landCol = "black")
## ----cleanup temporary directory----------------------------------------------
unlink(td, recursive = T)
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.