Функция для вычисления геопространственного расстояния между двумя точками (lat, long) с использованием R
У меня есть геокодированные точки в длинном, лат-формате, и я хочу рассчитать расстояние между ними, используя R. Это кажется довольно прямым, но я не могу найти функцию, которая сделает это легко. Я пытаюсь сделать это с помощью пакета gdistance, но он кажется очень запутанным и ориентированным на графику, мне просто нужно число. Что-то вроде distanceBetween(pointA,pointB)
, которое возвращает число.
ОБНОВЛЕНИЕ: этот вопрос специфичен для R, возможный dup более общий. Хотя есть конкретный ответ R, он похоронен в 28 других ответах.
Ответы
Ответ 1
Загрузка пакета геосферы вы можете использовать несколько различных функций
library(geosphere)
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
также:
distHaversine()
distMeeus()
distRhumb()
distVincentyEllipsoid()
distVincentySphere()
...
Ответ 2
Согласитесь с @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