Функция для расчета геопространственного расстояния между двумя точками (широта, долгота) с использованием 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

Другие вопросы по тегам