This function computes and returns the approximate pole of inaccessibility for a polygon using a quadtree-based algorithm developed by the people from Mapbox.

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, or a time series (see grDevices::xy.coords() for details) a vector of y coordinates. Only needs to be provided if x is vector. the precision to use when computing the center

## 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

## Value

A list with items

x

x coordinate of the center

y

y coordinate of the center

dist

distance to the enclosing polygon

## 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().

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))