【问题标题】:Leaflet package in R not Plotting all Coordinates from GPX FileR中的传单包没有从GPX文件中绘制所有坐标
【发布时间】:2016-08-20 23:38:07
【问题描述】:

我一直致力于绘制来自远足小径的 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

这段代码有效,你得到了一张地图,阴影正确,标记在正确的位置。

但是,只绘制了一小段线段。通过查看pct 对象,我可以看到 GPX 文件中有 12 行,但它似乎只绘制了一条。无论我下载哪个 GPX 文件,都是同样的问题。

【问题讨论】:

  • 你有可能有十二行相互跟随吗?运行 plot(pct) ,你会看到线条一个接一个地绘制,形成一条大线
  • 不,因为它们的长度各不相同,当我将它们全部打开时,我可以将它们绘制为圆圈或标记,它们反映了预期的结果,但它比线条慢得多且数据密集.

标签: r leaflet gpx


【解决方案1】:

这可能与传单中的错误有关。 github 上已经有 issue 提交,见here

ma​​pview 中,我们已修复此问题,并且正确绘制了多线。查看问题对话here

作为可重现的示例(取自 ma​​pview 问题):

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

注意:目前仅在 ma​​pview 的开发版本中修复,可以使用devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop")进行安装

【讨论】:

  • 谢谢@TimSalbim。我怀疑这是一个可能依赖于操作系统的传单错误(我使用的是 Windows)。基本上,我是从这个blog 复制代码。它显示了成功的绘图,我正在复制代码和数据。
  • 我不确定这是操作系统问题。在 Ubuntu 10.04 上我有同样的问题。我已经更新了我的答案,现在看起来应该与您提到的博客文章的版本相似。
  • 我在安装时遇到错误,正在寻找一个名为 stringi 的包,因此当我运行上面的代码时,它会遍历所有数据但无法绘制图表。
  • 安装 stringi 没有帮助?
  • 最初,我收到了 package 'stringi' does not exist 错误,但已解决。现在我有一个 rJava 问题;与 i386 相关联。这是一个我可以解决的单独问题。感谢您的帮助。
猜你喜欢
  • 2015-08-03
  • 1970-01-01
  • 2013-01-05
  • 2020-10-19
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2016-11-10
相关资源
最近更新 更多