在我当前的R项目中,我正在使用ggmap包下载和显示地图。困扰我的是,你需要互联网访问,从谷歌等加载地图。我想从互联网加载地图,并保存它,以便我可以离线工作。理想的解决方案应该尽量减少get_map() (或相关命令)之间的代码量,并使用ggmap()中保存的映射(或相关命令)。
我已经知道get_map()有一个filename属性来将地图保存为图像,我也知道ggimage()方法(不过,我从未实际使用过它)。
是否有一种简单的方法来保存这样的地图,或者这两个工具是可用的最好的工具?如果是,我如何有效地使用它们?
发布于 2013-09-29 08:27:31
在等待相同的地图每次运行几十次之后,我遇到了同样的问题。
您可以在R中保存任何对象,但我花了一小段时间才弄清楚在函数中保存地图的细微差别。这是我想出来的
该函数查找区域设置字符串(本质上是为地图命名)、坐标和缩放级别。然后,该函数将查看映射是否已作为保存的文件存在,如果存在,则加载它。如果磁盘上不存在映射,则从Google下载地图,然后将其保存到文件中。
没有从文件加载它的技巧,但我发现,如果在将映射对象保存到磁盘之前没有在赋值函数中指定.GlobalEnv,则R将忠实地加载到错误的环境中。
load.map <- function(Locale, Lon, Lat, MapZoom){
MapName <- paste("Map", gsub(" ", "", Locale), MapZoom, sep = "")
FileName <- paste(MapName,".RData", sep = "")
if (file.exists(FileName) & ReloadMaps == 0)
{
load(FileName, envir = .GlobalEnv)
} else
{
Map <- get_googlemap(center=c(lon = Lon, lat = Lat), zoom=MapZoom, scale = 2,
size = c(640, 640), maptype = "roadmap", color = "color", format = "png8")
assign(MapName, Map, envir = .GlobalEnv)
save(list = MapName, file = FileName, envir = .GlobalEnv)
}
} https://stackoverflow.com/questions/19071921
复制相似问题