
Last chance! 50% off unlimited learning
Sale ends in
Use a friction (cost) surface to compute the cost-distance from any cell to one or more target cells.
Distances are computed by summing local distances between cells, which are connected with their neighbors in 8 directions, and assuming that the path has to go through the centers of one of the neighboring raster cells.
Distances are multiplied with the friction, thus to get the cost-distance, the friction surface must express the cost per unit distance (speed) of travel.
If the coordinate reference system (CRS) of the SpatRaster is longitude/latitude (+proj=longlat
) the distance is in meters divided by variable m. The default of m is 1000, expressing distance in km. Otherwise the distance is in the units of the CRS (typically meters).
# S4 method for SpatRaster
costDistance(x, target=0, scale=1000, maxiter=50, filename="", ...)
SpatRaster
SpatRaster
numeric. value of the target cells (where to compute cost-distance to)
numeric. Scale factor for longitude/latitude data (1 = m, 1000 = km)
numeric. The maximum number of iterations. Increase this number if you get the warning that costDistance did not converge
character. output filename (optional)
additional arguments as for writeRaster
gridDistance, distance
r <- rast(ncols=5, nrows=5, crs="+proj=utm +zone=1 +datum=WGS84",
xmin=0, xmax=5, ymin=0, ymax=5, vals=1)
r[13] <- 0
d <- costDistance(r)
plot(d)
text(d, digits=1)
r <- rast(ncols=10, nrows=10, xmin=0, xmax=10, ymin=0, ymax=10,
vals=10, crs="+proj=utm +zone=1 +datum=WGS84")
r[5, 1] <- -10
r[2:3, 1] <- r[1, 2:4] <- r[2, 5] <- 0
r[3, 6] <- r[2, 7] <- r[1, 8:9] <- 0
r[6, 6:10] <- NA
r[6:9, 6] <- NA
d <- costDistance(r, -10)
plot(d)
text(d, digits=1, cex=.8)
Run the code above in your browser using DataLab