makeCorridor | R Documentation |
A function to automatically perform the raster arithmetic
necessary to calculate the cost-of-travel for paths with multiple
waypoints, and the predicted cost of taking a detour to any
arbitrary point in the landscape (a 'corridor').
getCosts
must have been run before this tool can be used.
makeCorridor(rasters = tempdir(), order, costs = "all", name = NULL)
rasters |
One of either a character string or multilayer SpatRaster.
If character string, it represents the filepath
to the workspace used as |
order |
A character vector containing the desired path in
order of visited nodes. For example, to visit "A" then "B" then "C" then "A"
the vector would be |
costs |
A character vector containing any combination of pre-calculated
cost names (e.g. dt for time, dW_l for work using |
name |
A character vector representing the |
Rasters representing cost corridors.
# Generate a DEM
n <- 5
dem <- expand.grid(list(x = 1:(n * 100),
y = 1:(n * 100))) / 100
dem <- as.data.table(dem)
dem[, z := 250 * exp(-(x - n/2)^2) +
250 * exp(-(y - n/2)^2)]
dem <- rast(dem)
ext(dem) <- c(10000, 20000, 30000, 40000)
crs(dem) <- "+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100 +datum=WGS84"
# Export it so it doesn't just exist on the memory
dir <- tempdir()
writeRaster(dem, paste0(dir,"/DEM.tif"),overwrite=TRUE)
# Import raster, get the grid
dem <- rast(paste0(dir,"/DEM.tif"))
grid <- makeGrid(dem = dem, nx = n, ny = n, sources = TRUE)
# Import the data lying between x = (12000,16000) and y = (32000,36000)
region <- ext(c(12000,16000,32000,36000))
region <- as.polygons(region)
crs(region) <- crs(grid)
# Generate five random points that fall within the region
points <- data.table(ID = 1:5,
x = runif(5, ext(region)[1], ext(region)[2]),
y = runif(5, ext(region)[3], ext(region)[4]))
# Make a world but limit it to the DEM grid size
defineWorld(source = grid, cut_slope = 0.5,
res = res(dem), dir = dir, overwrite=TRUE)
# Calculate cost rasters
costRasters <- getCosts(region, from = points, dir = dir,
destination = 'all',
polygons = 'center',
costs = 'all', costFUN = energyCosts,
output = c('object','file'),
m = 70, v_max = 1.5, BMR = 76, k = 3.5, s = 0.05, l_s = 1,
L = 0.8)
# Calculating the corridors from a list of RasterStacks,
# with path 1 -> 2 -> 4 -> 1 -> 5
corridors <- makeCorridor(rasters = costRasters, order = c(1,2,5,1,4),)
#### Example 2:
# Calculating the corridors from a workspace directory
# with path 1 -> 2 -> 4 -> 1 -> 5
corridors <- makeCorridor(rasters = dir, name = 'points',
order = c(1,2,5,1,4))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.