计算折线之间的最大距离

时间:2019-05-07 13:25:32

标签: r sf

是否可以计算两条折线之间的最大距离?我目前正在使用sf包来获取最小距离,但我也需要最大距离,请参见下面的示例。

pts1<- data.frame(
  x= c(-103.485342, -103.482808),
  y = c(31.348758, 31.376947))
) %>% 
  sf::st_as_sf(coords = c("x","y"))

st_crs(pts1)<- "+init=epsg:2257"

pts2<- data.frame(
  x= c(-103.492822, -103.484231),
  y = c(31.348181, 31.377191))
) %>% 
  sf::st_as_sf(coords = c("x","y"))

st_crs(pts2)<- "+init=epsg:2257"

a <- pts1 %>% st_coordinates() %>% st_linestring()
b<- pts2 %>% st_coordinates() %>% st_linestring()

min_dist<-st_distance(a,b,by_element = T)

max_dist<- ???

谢谢

1 个答案:

答案 0 :(得分:2)

(在平面几何中)最大距离应始终在两个顶点之间,因此将其强制转换为点,计算a点与b点之间的距离矩阵,并取最大值:

> max(st_distance(st_cast(st_sfc(b),"POINT"),st_cast(st_sfc(a),"POINT")))
[1] 0.0304592

请注意,这是沿红色虚线的距离:

enter image description here

您的这两行可能代表着一条河的两岸,而您真正的问题是“这条河的最宽处有多宽”,该宽度在您的示例中最南端的两个点之间,但是与“两行之间的最大距离是多少”是一个不同的问题。