r - 将坐标数据框绘制到基于组的路线中
问题描述
我正在寻找在 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 下载,如果有人对此感兴趣的话。
谢谢!
解决方案
如果您需要静态地图,我建议您使用静态地图包。如果您最熟悉 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。
推荐阅读
- c# - Outlook 的电子邮件类型为 EX 时如何获取发件人的电子邮件?
- entity-framework - 您的启动项目“项目”未引用 Microsoft.EntityFrameworkCore.Design
- pentaho - 在 Pentaho Server 8 CE 中写入本地文件系统
- python-3.x - 如何调整散景热图的宽度并去除周围的空白
- django - 即使在编译消息后,翻译也不能在 Django 1.5 中工作
- git - Is the time taken to git commit dependent on file size? Also, how much time does it take to restore a previous version in git?
- azure-devops - 为什么这些 Azure DevOps 预定义变量在管道构建中不起作用?
- php - 通过 PHP 从另一台服务器运行 python 脚本
- python - 在文件python中返回行的总和或差异时遇到问题
- android - 如何使用颤振本地化启动器中显示的应用程序名称?