在道路上绘制 GPS 位置
plot GPS position over the road
如何在道路上绘制 GPS 轨迹并放大该道路?
有人可以取一个点(曼哈顿的 40.74640013950355,-73.98755303328286)并将其绘制在相应的道路网络上 [可能是 600 英尺 x 600 英尺的网格]。请编辑下面的代码来说明 -
lat <- 40.74640013950355
long <- -73.98755303328286
tbl <- tibble(lat, long)
ggplot(data = tbl,
aes(x = lat,
y = long)) +
geom_point()
一旦我知道如何绘制道路,我就可以通过修改上面的 tbl 来覆盖我的轨迹数据。
谢谢
实现这样的剧情难度不大,从tigris库中给出的例子开始:
library(tigris)
library(ggplot2)
library(ggthemes)
roads <- roads("Maine", "031")
gg <- ggplot() + geom_sf(data = roads, color="black", fill="white", size=0.25) + theme_map()
lat <- 43.5; long <- -70.6; bbox = 0.02
bbox_gg = coord_sf(xlim=c(long-bbox/2, long+bbox/2), ylim=c(lat-bbox/2, lat+bbox/2))
gg + geom_point(data=data.frame(lat, long), aes(x=long, y=lat), size=4, color="red") + bbox_gg
这里所做的只是在 geom_sf()
层之上添加 geom_point()
美学。我们可以使用一种边界框坐标限制来调整缩放
编辑
如果您需要在地图上显示一些道路名称,您可以将其添加到绘图中:
geom_sf_label(data=subset(roads, roads$RTTYP!="M"), aes(label=FULLNAME))
这里我使用 subset 来避免绘制 all 小路名。最终,您可能想在绘图之前找到一种方法 zoom/subset 您的数据,因为这样做会太长。
如何在道路上绘制 GPS 轨迹并放大该道路?
有人可以取一个点(曼哈顿的 40.74640013950355,-73.98755303328286)并将其绘制在相应的道路网络上 [可能是 600 英尺 x 600 英尺的网格]。请编辑下面的代码来说明 -
lat <- 40.74640013950355
long <- -73.98755303328286
tbl <- tibble(lat, long)
ggplot(data = tbl,
aes(x = lat,
y = long)) +
geom_point()
一旦我知道如何绘制道路,我就可以通过修改上面的 tbl 来覆盖我的轨迹数据。
谢谢
实现这样的剧情难度不大,从tigris库中给出的例子开始:
library(tigris)
library(ggplot2)
library(ggthemes)
roads <- roads("Maine", "031")
gg <- ggplot() + geom_sf(data = roads, color="black", fill="white", size=0.25) + theme_map()
lat <- 43.5; long <- -70.6; bbox = 0.02
bbox_gg = coord_sf(xlim=c(long-bbox/2, long+bbox/2), ylim=c(lat-bbox/2, lat+bbox/2))
gg + geom_point(data=data.frame(lat, long), aes(x=long, y=lat), size=4, color="red") + bbox_gg
这里所做的只是在 geom_sf()
层之上添加 geom_point()
美学。我们可以使用一种边界框坐标限制来调整缩放
编辑
如果您需要在地图上显示一些道路名称,您可以将其添加到绘图中:
geom_sf_label(data=subset(roads, roads$RTTYP!="M"), aes(label=FULLNAME))
这里我使用 subset 来避免绘制 all 小路名。最终,您可能想在绘图之前找到一种方法 zoom/subset 您的数据,因为这样做会太长。