library(sf)
library(terra)
# create example data
elev <- rast(system.file("extdata/elev.tif", package="spatialEco"))
names(elev) <- "elev"
lns <- lapply(1:5, function(i) {
p <- st_combine(st_as_sf(spatSample(elev, size=2, as.points=TRUE)))
st_as_sf(st_cast(p, "LINESTRING")) })
lns <- do.call(rbind, lns)
plot(elev)
plot(st_geometry(lns), add=TRUE)
# Calculate topographical distance
( tdist <- topo.distance(lns, elev) )
( lgt <- as.numeric(st_length(lns)) )
# Increase in corrected distance
tdist - lgt
# Percent increase in corrected distance
((tdist - lgt) / lgt) * 100
Run the code above in your browser using DataLab