#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. Это не тривиальная вещь, и вам нужно много знать о районе, чтобы сделать это хорошо, быстро и правильно.