
Determines which polygons of a "SpatialPolygons"
object are at the border, i.e. have coordinates in common with the
spatial union of all polygons (constructed using
unionSpatialPolygons
).
polyAtBorder(SpP, snap = sqrt(.Machine$double.eps),
method = "sf", ...)
logical vector of the same length as SpP
also inheriting its
row.names
.
an object of class "SpatialPolygons"
.
tolerance used to consider coordinates as identical.
method to use for unionSpatialPolygons
.
Defaults to sf, since polyclip uses integer
arithmetic, which causes rounding errors usually requiring tuning of
(i.e., increasing) the tolerance parameter snap
(see example
below).
further arguments passed to the chosen method
.
Sebastian Meyer
## Load districts of Germany
load(system.file("shapes", "districtsD.RData", package = "surveillance"))
## Determine districts at the border and check the result on the map
if (requireNamespace("sf")) {
atBorder <- polyAtBorder(districtsD, method = "sf")
if (interactive()) plot(districtsD, col = atBorder)
table(atBorder)
}
## For method = "polyclip", a higher snapping tolerance is required
## to obtain the correct result
if (requireNamespace("polyclip")) {
atBorder <- polyAtBorder(districtsD, snap = 1e-6, method = "polyclip")
if (interactive()) plot(districtsD, col = atBorder)
table(atBorder)
}
Run the code above in your browser using DataLab