spatialEco (version 2.0-2)

topo.distance: Topographic distance

Description

Calculates topographic corrected distance for a line object

Usage

topo.distance(x, r, echo = FALSE)

Value

Vector of corrected topographic distances same length as nrow(x)

Arguments

x

sf LINESTRING object

r

terra SpatRaster class elevation raster

echo

(FALSE/TRUE) print progress to screen

Author

Jeffrey S. Evans <jeffrey_evans@tnc.org>

Details

This function corrects straight-line (euclidean) distances for topographic-slope effect.

Examples

Run this code
 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