在多边形上创建函数 return 位置以获得多边形之间的最短距离

Make function return locations on polygons for shortest distance between the polygons

R 中有 X 个函数来计算两个多边形之间的最短距离,但我似乎无法找到一种方法来使函数 return 这个距离在哪两个位置之间?!

假设多边形 A 和 B 之间的距离为 10 个单位。那么我的问题是,我可以在 A 和 B 的哪两点之间画一条 10 个单位的线。

圣诞美食是不是塞满了我的脑袋?

如果您可以将数据放入 sf 对象,那么 sf::st_nearest_points() 就可以完成这项工作。

以下是玩具数据的示例:

library(sf)

p1 <- matrix(c(0, 0, 1, 0, 1, 1, 0, 1, 0, 0), ncol = 2, byrow = TRUE)

p2 <- p1 + 3

pts1 <- list(p1)
pts2 <- list(p2)

poly1 <- st_polygon(pts1)
poly2 <- st_polygon(pts2)

near_points <- st_nearest_points(poly1, poly2)

近点returns sf LINESTRING 对象有两个点(1,1) 和(3,3):

Geometry set for 1 feature 
geometry type:  LINESTRING
dimension:      XY
bbox:           xmin: 1 ymin: 1 xmax: 3 ymax: 3
epsg (SRID):    NA
proj4string:    NA
LINESTRING (1 1, 3 3)
ggplot() + geom_sf(data = poly1, color = 'blue') +
  geom_sf(data = poly2, color = 'orange') +
  geom_sf(data = near_points, color = 'red')

st_distance() 将 return 两个最近点之间的距离。

 st_distance(poly1, poly2)
         [,1]
[1,] 2.828427