Пакет листовок в R не отображает все координаты из файла GPX

Я работал с построением данных GPX по пешеходным тропам. Я могу загрузить и извлечь все данные маршрута, но когда я рисую их в виде полилиний, они рисуют только небольшой сегмент. Я подтвердил, что файл готов, запустив функцию, которая прерывает файл GPX, создает фрейм данных широты и долготы и отображает их в виде маркеров или круговых маркеров. Это очень медленно для файлов, с которыми я работаю.

Код выглядит следующим образом:

library(rgdal)
library(maps)
library(htmltools)
library(devtools)
library(leaflet)
library(sp)
library(htmlwidgets)
library(plotKML)
library(maptools)
library(XML)

url <- "http://hiking.waymarkedtrails.org/en/routebrowser/1225378/gpx"
download.file(url, destfile = "pct.gpx", method = "wininet")

pct <- readOGR("pct.gpx", layer = "tracks")

# Import list with shapefiles of the three states the PCT is crossing
mapStates <- map("state", fill = TRUE,
                 plot = FALSE,
                 region = c('california', 'oregon', 'washington:main'))

your.map <- leaflet(pct) %>%

 # Add layer
  addTiles(urlTemplate = "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png") %>%
  addPolylines(color="red", popup="PCT")  %>%
  addMarkers(-116.4697, 32.60758, popup = "Campo") %>%
  addMarkers(-120.7816, 49.06465, popup = "Manning Park, Canada") %>%
  addPolygons(data=mapStates, fillColor = heat.colors(3, alpha = NULL), stroke = FALSE) %>%

  # Add legend
  addLegend(position = 'topright', colors = "red", labels = "PCT", opacity = 0.4,
            title = 'Legend')
your.map

Этот код работает, вы получаете карту, закрашенную правильно, а маркеры находятся в нужном месте.

Однако отображается только один небольшой отрезок линии. В файле GPX 12 строк, которые я могу видеть, просматривая объект pct, но, похоже, он рисует только одну. Независимо от того, какой файл GPX я скачиваю, это одна и та же проблема.


person Bryan Butler    schedule 26.04.2016    source источник
comment
Возможно ли, что у вас есть двенадцать строк, следующих друг за другом? запустите plot (pct), и вы увидите, что линии рисуются одна за другой, образуя одну большую линию   -  person MLavoie    schedule 27.04.2016
comment
Нет, потому что они разной длины, и когда я распаковываю их все, я могу изобразить их в виде кругов или маркеров, и они отражают желаемый результат, но это намного медленнее и требует больших объемов данных, чем линии.   -  person Bryan Butler    schedule 27.04.2016


Ответы (1)


Вероятно, это связано с ошибкой в ​​буклете. На github уже зарегистрирована проблема, см. здесь.

В mapview мы исправили это, и многострочные линии отображаются правильно. См. Обсуждение проблемы здесь.

В качестве воспроизводимого примера (взято из проблемы mapview):

library(trajectories)
data(storms)
x = as(storms, "SpatialLinesDataFrame")
plot(x)
library(mapview)
mapview(x)

leaflet() %>% addTiles() %>% addPolylines(data = x)

или для вашего примера просто

your.map <- mapview(pct, map.types = "CartoDB.Positron")@map %>% 
  addMarkers(-116.4697, 32.60758, popup = "Campo") %>%
  addMarkers(-120.7816, 49.06465, popup = "Manning Park, Canada") %>%
  addPolygons(data=mapStates, fillColor = heat.colors(3, alpha = NULL), stroke = FALSE) %>%

  # Add legend
  addLegend(position = 'topright', colors = "red", labels = "PCT", opacity = 0.4,
            title = 'Legend')

your.map

ПРИМЕЧАНИЕ. В настоящее время это исправлено только в разрабатываемой версии mapview, которую можно установить с devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop")

person TimSalabim    schedule 27.04.2016
comment
Спасибо @TimSalbim. Я подозреваю, что это ошибка в листовке, которая может зависеть от ОС (я использую Windows). По сути, я копировал код из этого блога. Он показал успешные графики, и я копировал и код, и данные. - person Bryan Butler; 27.04.2016
comment
Я не уверен, что это проблема ОС. В Ubuntu 10.04 у меня такая же проблема. Я обновил свой ответ, и теперь он должен быть похож на версию упомянутого вами сообщения в блоге. - person TimSalabim; 27.04.2016
comment
Я получаю сообщение об ошибке при установке, ищу пакет с именем stringi, поэтому, когда я запускаю приведенный выше код, он просматривает все данные, но не может построить график. - person Bryan Butler; 27.04.2016
comment
А установка stringi не помогает? - person TimSalabim; 27.04.2016
comment
Первоначально я получал package 'stringi' does not exist ошибку, но теперь она устранена. Теперь у меня проблема с rJava; связанный с i386. Это отдельная проблема, с которой я могу работать. Спасибо за помощь. - person Bryan Butler; 27.04.2016
comment
Проблема rJava больше не должна быть проблемой, поскольку зависимость OpenStreetMap теперь устарела. - person TimSalabim; 28.04.2016