poi {polylabelr} | R Documentation |
Pole of Inaccessibility (Visual Center) of a Polygon
Description
This function computes and returns the approximate pole of inaccessibility for a polygon using a quadtree-based algorithm developed by the people from Mapbox.
Usage
poi(x, y = NULL, precision = 1)
Arguments
x |
a vector of x coordinates or a matrix or data.frame
of x and y coordinates, a list of components x and y,
a time series (see |
y |
a vector of y coordinates. Only needs to be provided if
|
precision |
the precision to use when computing the center |
Details
If there are any NA
values in the input, they
will be treated as separators for multiple paths (rings) of the
polygon, mimicking the behavior of graphics::polypath()
.
Value
A list with items
x |
x coordinate of the center |
y |
y coordinate of the center |
dist |
distance to the enclosing polygon |
Source
Garcia-Castellanos & Lombardo, 2007. Poles of inaccessibility: A calculation algorithm for the remotest places on earth Scottish Geographical Journal, Volume 123, 3, 227-233. https://dx.doi.org/10.1080/14702540801897809
https://github.com/mapbox/polylabel
https://blog.mapbox.com/a-new-algorithm-for-finding-a-visual-center-of-a-polygon-7c77e6492fbc
See Also
grDevices::xy.coords()
, graphics::polypath()
Examples
plot_path <- function(x, y, ...) {
plot.new()
plot.window(range(x, na.rm = TRUE), range(y, na.rm = TRUE))
polypath(x, y, ...)
}
x <- c(5, 10, 10, 5, 5, 6, 6, 7, 7, 6, 8, 8, 9, 9, 8)
y <- c(5, 5, 10, 10, 5, 6, 7, 7, 6, 6, 8, 9, 9, 8, 8)
plot_path(x, y, col = "grey", border = NA)
points(poi(x, y))
## Not run:
# Find visual centers for North Carolina counties
library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
locations = do.call(rbind, poi(nc, precision=0.01))
plot(st_geometry(nc))
points(locations)
## End(Not run)