Identify cells that are adjacent to a set of raster cells. Or identify adjacent polygons
methods
## S4 method for signature 'SpatRaster'adjacent(x, cells, directions="rook", pairs=FALSE, include=FALSE, symmetrical=FALSE)## S4 method for signature 'SpatVector'adjacent(x, type="rook", pairs=TRUE, symmetrical=FALSE)
Arguments
x: SpatRaster, or SpatVector of polygons
cells: vector of cell numbers for which adjacent cells should be found. Cell numbers start with 1 in the upper-left corner and increase from left to right and from top to bottom
directions: character or matrix to indicated the directions in which cells are considered connected. The following character values are allowed: "rook" or "4" for the horizontal and vertical neighbors; "bishop" to get the diagonal neighbors; "queen" or "8" to get the vertical, horizontal and diagonal neighbors; or "16" for knight and one-cell queen move neighbors. If directions is a matrix it should have odd dimensions and have logical (or 0, 1) values
pairs: logical. If TRUE, a two-column matrix of pairs of adjacent cells is returned. If x is a SpatRaster and pairs is FALSE, an n*m matrix is returned where the number of rows n is length(cells) and the number of columns m is the number of neighbors requested with directions
include: logical. Should the focal cells be included in the result?
type: character. One of "rook", "queen", "touches", or "intersects". "queen" and "touches" are synonyms. "rook" exclude polygons that touch at a single node only. "intersects" includes polygons that touch or overlap
symmetrical: logical. If TRUE and pairs=TRUE, an adjacent pair is only included once. For example, if polygon 1 is adjacent to polygon 3, the implied adjacency between 3 and 1 is not reported
Note
When using global lon/lat rasters, adjacent cells at the other side of the date-line are included.
See Also
relate, nearby, nearest
Returns
matrix
Examples
r <- rast(nrows=10, ncols=10)adjacent(r, cells=c(1,5,55), directions="queen")r <- rast(nrows=10, ncols=10, crs="+proj=utm +zone=1 +datum=WGS84")adjacent(r, cells=11, directions="rook")#same as rk <- matrix(c(0,1,0,1,0,1,0,1,0),3,3)adjacent(r, cells=11, directions=rk)## note that with global lat/lon data the E and W connectr <- rast(nrows=10, ncols=10, crs="+proj=longlat +datum=WGS84")adjacent(r, cells=11, directions="rook")f <- system.file("ex/lux.shp", package="terra")v <- vect(f)a <- adjacent(v, symmetrical=TRUE)head(a)