ggmap、ggimage...-在R中保存和加载地图

4
在我的R项目中,我正在使用ggmap软件包下载和显示地图。让我困扰的是,您需要互联网连接才能加载来自谷歌等的地图。我想从互联网上加载地图并保存它,以便我也可以离线工作。理想的解决方案应该将get_map()(或相关命令)和在ggmap()(或相关命令) 中使用所保存的地图之间的代码量最小化。
我已经知道get_map()有一个filename属性,可以将地图保存为图像,而且我也了解ggimage()方法(尽管我实际上从未使用过)。 是否有一种简单的方法来保存这样的地图,或者这两个工具是可用的最佳工具 - 如果是,如何有效地使用它们?
1个回答

3

在每次运行时,我等待加载相同地图数十次后遇到了同样的问题。

在R中,您可以保存任何对象,但是我花了一些时间才能弄清楚如何在函数内部保存地图。这是我想出来的方法 - 我很想知道是否有可以改进的地方。

该函数查找Locale字符串(基本上是用于命名地图的内容)、坐标和缩放级别。然后,该函数会查看地图是否已经存在为一个已保存的文件,如果存在,则会加载它。如果磁盘上不存在该地图,则从谷歌下载并将其保存到文件中。

从文件中加载它没有什么诀窍,但我发现如果在将地图对象保存到磁盘之前,在赋值函数中未指定.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)
  }  
} 

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