Вычисление расстояния в R с использованием геосферы

#r #distance #geosphere

Вопрос:

 library(geosphere)
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
 

Просто интересно, что приведенный выше код будет рассчитан на основе кратчайшего расстояния между этими двумя точками, а не фактического расстояния.

Если возможно, есть ли какой-либо способ точно рассчитать расстояние, скажем, в сценарии велосипедных поездок из точки А в точку В, что никогда не бывает прямой линией.

Заранее спасибо

Комментарии:

1. (1) используйте cbind , а не c ; (2) Я склонен просто соглашаться geosphere::distHaversine(cbind(lon1,lat1), cbind(lon2,lat2)) .

2. Его расчет расстояния будет между lon1[1],lat[1] и lon2[1],lat2[1] , и между lon1[2],lat[2] и lon2[2],lat2[2] и т. Д. Я не совсем понимаю, что вы подразумеваете под «кратчайшим расстоянием» по сравнению с реальным, вы проводите различие между «большим кругом» и другими? Что касается вашего комментария «точно», вы используете Haversine, который имеет известные предубеждения; вы могли бы подумать distVincentyEllipsoid о более точном (хотя и более медленном) методе.

3. Большое спасибо @r2evans за советы да, вы правы, cbind творит чудеса, как в таблице, я продолжал получать ошибку «Ошибка в .pointsToMatrix(x) : Неправильная длина вектора, должна быть 2» при использовании ТОЛЬКО c. Я довольно новичок в R и все еще открываю для себя больше (извиняюсь), что я имел в виду под кратчайшим расстоянием, используя аналогию с вождением автомобиля, поэтому расстояние между 2 точками никогда не бывает прямым, как я предполагаю, является результатом этой функции. также интересно, есть ли способ вычислить это, используя код в R.

4. просто для большей ясности, например, я еду в Макдональдс рядом со своим домом на машине, расстояние, рассчитанное с помощью distHarvesine, более или менее будет вычислять прямое расстояние между 2 точками (я могу ошибаться в этом). в то время как фактическое расстояние, которое я преодолел, могло быть больше из-за использования автомобиля. может быть, есть способ связать R с картами Google, чтобы мы могли рассчитать расстояние между 2 географическими точками?

5. Хорошо, значит, «кратчайшее расстояние»-это прямой подход, в то время как «фактическое расстояние» — это то, что Google Maps или что-то подобное направит вас на дорогу? Если это так, то да, это полностью выходит за рамки геопространственного пакета geosphere , в пакете нет понятия дорог или обхода теории графов с ребрами и вершинами и тому подобным. Эти типы направлений лучше всего оставить для действительно сложных математических инструментов оптимизации, таких как … Карты Google. Это не тривиальная вещь, и вам нужно много знать о районе, чтобы сделать это хорошо, быстро и правильно.