首页 > 解决方案 > 将坐标数据框绘制到基于组的路线中

问题描述

我正在寻找在 R 中绘制地理空间数据。

我有一个以 Lon、lat 和活动为列的数据框。简化,它看起来像

structure(list(lon = c(-0.198418, -0.19847, -0.198493, -0.198261, 
-0.198308, -0.19826), lat = c(51.565559, 51.565564, 51.565588, 
51.565695, 51.565524, 51.565492), ride = c(10L, 10L, 10L, 11L, 
11L, 11L)), row.names = c(NA, -6L), class = c("grouped_df", "tbl_df", 
"tbl", "data.frame"), groups = structure(list(ride = 10:11, .rows = list(
    1:3, 4:6)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE))

所以像这样,但每次骑行有几千行:


         lon,      lat, ride
1   -0.19842    51.566  10
2   -0.19847    51.566  10
3   -0.19849    51.566  10
4   -0.19826    51.566  11
5   -0.19831    51.566  11
6   -0.19826    51.565  11

我想根据每次骑行将坐标绘制到地图上的路线中。我尝试使用 {leaflet},代码如下

leaflet(data = unnested_rides) %>% 
  addTiles() %>%
  addPolylines(~lon, ~lat)

但它无法区分分组变量,这意味着它只是一条长线,当我包含group它时,RStudio 会崩溃。如果可能的话,我想在 {leaflet} 中执行此操作,因为它不需要 Google API,但如果它更容易/质量更好,我愿意使用 {ggmaps}。

我的直觉是迭代数据,将分组数据分层添加,尽管我不确定如何去做。有没有人有什么建议?数据已从 Strava 下载,如果有人对此感兴趣的话。

谢谢!

标签: rleaflet

解决方案


  • 如果您需要静态地图,我建议您使用静态地图包。如果您最熟悉 plot() 语法,请从这种tuto开始,它向您展示如何渲染几组道路。如果您最熟悉 ggplot() 语法,请从这种tuto开始。两者都可以让您轻松控制道路图层(让您永久寻求找到更好的数据源以满足您的需求)。两者都可以让您制作静态地图(或 .gif 或视频中的多个静态地图)。

  • 我猜您的计算机崩溃了,因为传单不需要您的数据,您需要在addPolylines(data = mydf2, lng = ~long, lat = ~lat, group = ~group). 请参阅SO 中的此答案

PS:有很多技术可以显示地图,然后,有很多选项可以直观地表示信息。由于您正在寻找“绘制地理空间数据”,并且传单语法非常特定于绘制地图的动态图层,也不会生成静态图像,因此您应该考虑 (a) 加载传单地图,然后 (b) 添加折线或某个点(标记),以便在地图上指示道路所在的位置(道路不会以其他颜色呈现)。https://rstudio.github.io/leaflet/markers.html


推荐阅读