get nearest points between pairs of geometries
get nearest points between pairs of geometries
st_nearest_points(x, y, ...) ## S3 method for class 'sfc' st_nearest_points(x, y, ..., pairwise = FALSE) ## S3 method for class 'sfg' st_nearest_points(x, y, ...) ## S3 method for class 'sf' st_nearest_points(x, y, ...)
x |
object of class |
y |
object of class |
... |
ignored |
pairwise |
logical; if |
in case x
lies inside y
, when using S2, the end points
are on polygon boundaries, when using GEOS the end point are identical to x
.
an sfc object with all two-point LINESTRING
geometries of point pairs from the first to the second geometry, of length x * y, with y cycling fastest. See examples for ideas how to convert these to POINT
geometries.
st_nearest_feature for finding the nearest feature
r = sqrt(2)/10 pt1 = st_point(c(.1,.1)) pt2 = st_point(c(.9,.9)) pt3 = st_point(c(.9,.1)) b1 = st_buffer(pt1, r) b2 = st_buffer(pt2, r) b3 = st_buffer(pt3, r) (ls0 = st_nearest_points(b1, b2)) # sfg (ls = st_nearest_points(st_sfc(b1), st_sfc(b2, b3))) # sfc plot(b1, xlim = c(-.2,1.2), ylim = c(-.2,1.2), col = NA, border = 'green') plot(st_sfc(b2, b3), add = TRUE, col = NA, border = 'blue') plot(ls, add = TRUE, col = 'red') nc = read_sf(system.file("gpkg/nc.gpkg", package="sf")) plot(st_geometry(nc)) ls = st_nearest_points(nc[1,], nc) plot(ls, col = 'red', add = TRUE) pts = st_cast(ls, "POINT") # gives all start & end points # starting, "from" points, corresponding to x: plot(pts[seq(1, 200, 2)], add = TRUE, col = 'blue') # ending, "to" points, corresponding to y: plot(pts[seq(2, 200, 2)], add = TRUE, col = 'green')
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.