Extract borders between polygons.

Outer borders are non-contiguous polygons borders (e.g. maritime borders).

getBorders(x, id)

getOuterBorders(x, id, res = NULL, width = NULL)

Arguments

x

an sf object, a simple feature collection or a SpatialPolygonsDataFrame.

id

name of the identifier variable in x, default to the first column. (optional)

res

resolution of the grid used to compute outer borders (in x units). A high resolution will give more detailed borders. (optional)

width

maximum distance between used to compute outer borders (in x units). A higher width will build borders between units that are farther apart. (optional)

Value

An sf object (MULTILINESTRING) of borders is returned. This object has three id variables: id, id1 and id2. id1 and id2 are ids of units that neighbour a border; id is the concatenation of id1 and id2 (with "_" as separator).

Note

getBorders and getOuterBorders can be combined with rbind.

See also

Examples

library(sf)
if (FALSE) {
mtq <- st_read(system.file("gpkg/mtq.gpkg", package="cartography"))
# extract
m <- mtq[c(5, 29, 9), ]
# Get borders
m_borders <- getBorders(x = m)
# Plot polygons
plot(st_geometry(m), border = NA, col = "grey60")
# Plot borders
plot(st_geometry(m_borders),
     col = sample(x = rainbow(nrow(m_borders))),
     lwd = 2 * c(4, 3, 2, 1), add = TRUE)
}
library(sf)
if (FALSE) {
mtq <- st_read(system.file("gpkg/mtq.gpkg", package="cartography"))
# extract
m <- mtq[c(29, 9), ]
# Get borders
m_borders <- getOuterBorders(x = m)
# Plot polygons
plot(st_geometry(m))
# Plot borders
plot(st_geometry(m_borders),
     col = sample(x = rainbow(nrow(m_borders))),
     lwd = c(4, 1), add = TRUE)
}