rasterDistance {spatialEco} | R Documentation |
Raster Distance
Description
Calculates the Euclidean distance of a defined raster class and all the other cells in a taster
Usage
rasterDistance(x, y, scale = FALSE)
Arguments
x |
A terra SpatRast or sf class object |
y |
Value(s) in x to to calculate distance to |
scale |
(FALSE/TRUE) Perform a row standardization on results |
Details
This replicates the terra distance function but uses the Arya & Mount Approximate Near Neighbor (ANN) C++ library for calculating distances. Where this results in a notable increase in performance it is not memory safe, needing to read in the entire raster and does not use the GeographicLib (Karney, 2013) spheroid distance method for geographic data.
Value
A terra SpatRast raster representing distances
Author(s)
Jeffrey S. Evans <jeffrey_evans@tnc.org>
References
Arya S., Mount D. M., Netanyahu N. S., Silverman R. and Wu A. Y (1998), An optimal algorithm for approximate nearest neighbor searching, Journal of the ACM, 45, 891-923.
See Also
Examples
library(sf)
library(terra)
# read, project and subset 10 polygons
nc <- suppressWarnings(st_cast(st_read(system.file("shape/nc.shp",
package="sf")), "POLYGON"))
nc <- st_transform(nc, st_crs("ESRI:102008"))
nc.sub <- nc[sample(1:nrow(nc),10),]
# create 1000m reference raster, rasterize subset polygons
ref <- rast(ext(nc), resolution=1000)
rnc <- mask(rasterize(vect(nc.sub), field="CNTY_ID",
ref, background=9999), vect(nc))
crs(rnc) <- "ESRI:102008"
# Calculate distance to class 1 in rnc raster, plot results
ids <- nc.sub$CNTY_ID
rd <- rasterDistance(rnc, y=ids)
plot(rd)
plot( st_geometry(nc.sub), add=TRUE)