### R code from vignette source 'SiMRiv.Rnw' ################################################### ### code chunk number 1: version ################################################### #options(width = 60) version <- packageDescription("SiMRiv") #colorramp <- rgb(c(seq(4, 9, len = 5), rep(9, 5)), c(rep(9, 5), seq(9, 4, len = 5)), 0, max = 9) #colorramp <- rgb(9, 9:0, 9:0, max = 9) ################################################### ### code chunk number 2: SiMRiv.Rnw:21-38 ################################################### my.Swd <- function(name, width, height, ...) { grDevices::png(filename = paste(name, "png", sep = "."), width = 8, height = 8, res = 100, units = "in") } my.Swd.off <- function() { grDevices::dev.off() } my.Swd2 <- function(name, width, height, ...) { grDevices::png(filename = paste(name, "png", sep = "."), width = 8, height = 8 * 2, res = 100, units = "in") } my.Swd2.off <- function() { grDevices::dev.off() } library(SiMRiv) ################################################### ### code chunk number 3: simriv-1 ################################################### # define a species with a single-state movement type # characterized by a random walk rand.walker <- species(state.RW()) # simulate one individual of this species, 10000 simulation steps sim.rw <- simulate(rand.walker, 10000) # plot trajectory plot(sim.rw, type = "l", asp = 1, main = "Random walk") ################################################### ### code chunk number 4: simriv-2 ################################################### # define a species with a single-state movement type characterized # by a correlated random walk with concentration=0.98 c.rand.walker <- species(state.CRW(0.98)) # simulate one individual of this species # 10000 simulation steps sim.crw <- simulate(c.rand.walker, 10000) plot(sim.crw, type = "l", asp = 1, main = "Correlated Random walk") ################################################### ### code chunk number 5: simriv-3 ################################################### # define a species with a correlated random walk # and step length = 15 c.rand.walker.15 <- species(state.CRW(0.98) + 15) # which, in single-state species, is the same as: c.rand.walker.15 <- species(state.CRW(0.98)) + 15 ################################################### ### code chunk number 6: simriv-4 ################################################### # a Lévy walker can be approximated by a two-state walker # composed of a random walk state and a correlated # random walk state. levy.walker <- species(state.RW() + state.CRW(0.98) , trans = transitionMatrix(0.005, 0.01)) + 25 sim.lw <- simulate(levy.walker, 10000) plot(sim.lw, type = "l", asp = 1, main = "Lévy-like walker") ################################################### ### code chunk number 7: simriv-5 ################################################### resistance <- resistanceFromShape( system.file("doc/landcover.shp", package="SiMRiv") , res = 100) plot(resistance, axes = F, col=map.pal("reds")) ################################################### ### code chunk number 8: simriv-6 ################################################### resistance <- resistanceFromShape( system.file("doc/landcover.shp", package="SiMRiv") , res = 100, field = "coverclass", mapvalues = c( "forest" = 0.5, "urban" = 1, "dam" = 0 , "shrubland" = 0.75) , background = 0.9, margin = 3000) plot(resistance, axes = F, col=map.pal("reds")) ################################################### ### code chunk number 9: simriv-7 ################################################### resistance <- resistanceFromShape( system.file("doc/river-sample.shp", package="SiMRiv") , res = 100, field = "Order", mapvalues = c("2" = 0 , "3" = 0.2, "4" = 0.4, "5" = 0.6, "6" = 0.8) , buffer = 150, background = 0.95, margin = 3000) plot(resistance, axes = F, col=map.pal("reds")) ################################################### ### code chunk number 10: simriv-8 ################################################### # load shapefile river.shape <- sf::st_read(system.file("doc/river-sample.shp", package="SiMRiv")) # below you can provide the shapefile filename, or the # R shapefile object itself resistance <- resistanceFromShape(river.shape, res = 100 , buffer = (9 - river.shape$Order) ^ 3 , background = 0.95, margin = 3000) # buffer here is just some magical function to convert river # order into a meaningful value in the [0, 1] range! plot(resistance, axes = F, col=map.pal("reds")) ################################################### ### code chunk number 11: simriv-9 ################################################### landcover <- resistanceFromShape( system.file("doc/landcover.shp", package="SiMRiv") , res = 50, field = "coverclass", mapvalues = c( "forest" = 0.5, "urban" = 1, "dam" = 0 , "shrubland" = 0.75), background = 0.95) river.landcover <- resistanceFromShape( system.file("doc/river-sample.shp", package="SiMRiv") , baseRaster = landcover, buffer = 100, field = 0 , background = 0.95, margin = 3000) plot(river.landcover, axes = F, col=map.pal("reds")) ################################################### ### code chunk number 12: simriv-10 ################################################### # this is just for ensuring the same results - don't use it in your code set.seed(6) # set starting coordinates anywhere within the river init <- terra::xyFromCell(river.landcover, sample(which(values(river.landcover) == 0), 1)) # adding a number to a species is a shortcut for setting # the step lengths of all states # multiplying is a shortcut for setting the perceptual range radius levy.walker <- (levy.walker + 15) * 1000 # simulate sim.lw.river <- simulate(levy.walker, 40000 , resist = river.landcover, coords = init) # plot resistance plot(river.landcover, axes = F, col=map.pal("reds") , ylim = range(sim.lw.river[, 2]), xlim = range(sim.lw.river[, 1])) # plot trajectory on top of resistance lines(sim.lw.river)