将ggmap对象保存到可重复使用的文件中?

7

是否可以将ggmap保存到本地文件?

背景:我需要一个大区域的高分辨率地图,但从stamen服务器获取需要很长时间。 我认为最好的方法是获取地图一次,将其保存到文件中,然后在本地副本上进行操作。

获取地图的代码如下:

library(ggmap)
map <- get_stamenmap(bbox = c(left = 8.7, bottom = 46.8, right = 9.7, top = 47.6), zoom = 14, maptype = c("toner"))

我知道我可以将它保存为图片,例如:

png(filename=name, width=1280, height=1280)
print(map)
dev.off()

但这并没有帮助,因为我之后想使用地图来标注不同的点和多边形,只有在地图上每个点都知道其纬度和经度信息时才可能实现。
那么,是否有一种方法可以将地图保存为其原始数据形式?

7
你可以将对象 map 存储在一个 RData 文件中:save(map, file = "xy.RData")。然后通过调用命令将其读取回来:load("xy.RData")。别忘了加载 ggmap 库,以便让 R 识别 map 的类。 - user3710546
2个回答

4

根据user3710546的建议,使用save函数将ggmap对象保存到RData文件中,然后使用load函数读取。例如:

library(ggmap)
map <- get_map(location="California", zoom=6, maptype="terrain")

save(map, file = "my_map.RData")
load(file = "my_map.RData")

0

您可以使用write.table(map,file="filename")将其保存到文件中。


1
使用 map2 <- read.table(file="filename") 读取写入的文件后,我得到了一个类型为 list 的对象,无法使用 ggmap 进行绘图。 有没有一种方法可以以一种保持可绘制类型为 ggmap 的方式读取文件? - symbolrush
这是因为对象的某些信息丢失了。您可以尝试使用 dput(map,filename) 将其保存,然后使用 dget(filename) 进行下载。 - maeVeyable
很不幸,这对我来说不起作用。dput(map, "mapdata")将文件放在磁盘上,这是可以的。但是当我尝试使用dget("mapdata")时,R会挂起几分钟,什么也没有发生。有什么提示吗? - symbolrush
我尝试了zoom=2,它可以工作。也许zoom=14会更长。你能否尝试使用较小的缩放比例来查看是否存在问题? - maeVeyable
@Pascal 的 saveload 的想法完美地解决了问题,所以我会采用这个方案。 - symbolrush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接