Рассчитать максимальное расстояние между полилиниями - PullRequest
0 голосов
/ 07 мая 2019

Есть ли способ рассчитать максимальное расстояние между двумя полилиниями? В настоящее время я использую пакет 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 Ответ

2 голосов
/ 09 мая 2019

Максимальное расстояние (в плоской геометрии) всегда должно быть между двумя вершинами, поэтому приведите к точкам, вычислите матрицу расстояний между точками a и точками b и возьмите максимальное:

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

Обратите внимание, что это расстояние вдоль красной пунктирной линии:

enter image description here

Возможно, эти две ваши линии представляют собой нечто вроде банковрека, и ваш реальный вопрос в том, «насколько широкая река в ее самом широком месте», что в вашем примере будет между двумя самыми южными точками, но это другой вопрос к «каково наибольшее расстояние между двумя линиями».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...