【问题标题】:Calculate Max Distance Between Polylines计算折线之间的最大距离
【发布时间】:2019-09-25 04:21:13
【问题描述】:

有没有办法计算两条折线之间的最大距离?我目前正在使用 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<- ???

谢谢

【问题讨论】:

  • 还有一些额外的 ) 用于定义数据框。代码没有运行。

标签: r sf


【解决方案1】:

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

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

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

您的这两条线可能代表河岸之类的东西,而您真正的问题是“河流最宽处有多宽”,在您的示例中,这将位于最南端的两个点之间,但是这与“两条线之间的最大距离是多少”是不同的问题。

【讨论】:

  • 您是否知道如何在“最宽处”找到两条线之间的“最宽距离”?
  • 值得作为一个新问题提出 - 它需要对您的数据进行一些额外的注意事项,例如定义方向以确定“宽度”的含义,以及每行中有多少点等等...
猜你喜欢
  • 2018-07-14
  • 2014-01-28
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多