Я хочу проанализировать пройденное расстояние на основе треков GPS. Но когда я вычисляю расстояние, оно всегда оказывается слишком большим.
Я использую python для создания CSV-файла с широтой и долготой для всех точек трека, которые я затем анализирую с помощью R. Кадр данных выглядит следующим образом:
| lat| lon| lat.p1| lon.p1| dist_to_prev|
|--------:|--------:|--------:|--------:|------------:|
| 60.62061| 15.66640| 60.62045| 15.66660| 28.103099|
| 60.62045| 15.66660| 60.62037| 15.66662| 8.859034|
| 60.62037| 15.66662| 60.62026| 15.66636| 31.252373|
| 60.62026| 15.66636| 60.62018| 15.66636| 8.574722|
| 60.62018| 15.66636| 60.62010| 15.66650| 17.787905|
| 60.62001| 15.66672| 60.61996| 15.66684| 14.393267|
| 60.61996| 15.66684| 60.61989| 15.66685| 7.584996|
...
Я мог быопубликовать весь фрейм данных здесь для воспроизводимости, это только 59 строк, но я не уверен в этикете для размещения здесь больших кусков данных?Дайте мне знать, как мне лучше всего поделиться этим.
lat.next, а lon.next - это только широта и долгота из строки ниже.dist_to_prev рассчитывается с помощью distm () из геосферы:
library(geosphere)
library(dplyr)
df$dist_to_prev <- apply(df, 1 , FUN = function (row) {
distm(c(as.numeric(row["lat"]), as.numeric(row["lon"])),
c(as.numeric(row["lat.p1"]), as.numeric(row["lon.p1"])),
fun = distHaversine)})
df %>% filter(dist_to_prev != "NA") %>% summarise(sum(dist_to_prev))
# A tibble: 1 x 1
`sum(dist_to_prev)`
<dbl>
1 1266.
Я взял этот трек в качестве примера из Trailforks, и если вы посмотрите на описание его трека, оно должно быть 787m , а не 1266m какя получил.Это не уникально для этого трека, но для всех треков, на которые я смотрел.Когда я делаю это, они все выходят на 30-50% слишком долго.
Одна причина, которая может быть причиной, состоит в том, что есть только 5 десятичных знаков для латов / дол.В CSV есть 6 десятичных знаков, но я вижу только 5, когда открываю его в Rstudio.Я думал, что это было просто форматирование, чтобы было легче читать и что "целое" число было там, но, возможно, нет?Тип широты / долготы: double.
Почему мои расстояния намного больше, чем те, которые указаны на сайте, с которого я получил gpx-файл?