在多边形上创建函数 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
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