Функция для расчета геопространственного расстояния между двумя точками (широта, долгота) с использованием R
У меня есть геокодированные точки в длинном латинском формате, и я хочу вычислить расстояние между ними, используя R. Это кажется довольно простым, но я не могу найти функцию, которая сделает это легко. Я пытался сделать это с помощью пакета gdistance, но он выглядит очень сложным и ориентированным на графики, мне просто нужен номер. Что-то вроде distanceBetween(pointA,pointB)
который возвращает число.
ОБНОВЛЕНИЕ: Этот вопрос относится к R, возможное дублирование является более общим. Хотя есть конкретный ответ на R, он похоронен в 28 других ответах.
2 ответа
Загружая пакет геосфера вы можете использовать ряд различных функций
library(geosphere)
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
Также:
distHaversine()
distMeeus()
distRhumb()
distVincentyEllipsoid()
distVincentySphere()
...
Согласитесь с @PereG в ответе выше, но подумайте, что порядок широты и долготы - наоборот: lon, lat. Это повлияет на ваши результаты для матрицы расстояний. Так правильно это:
library(geosphere)
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
Источник: ftp://cran.r-project.org/pub/R/web/packages/geosphere/geosphere.pdf