4

在我当前的 R 项目中,我正在使用ggmap包来下载和显示地图。困扰我的是,您需要访问互联网才能从谷歌等加载地图。我想从互联网加载地图并保存它,这样我也可以离线工作。一个理想的解决方案应该尽量减少get_map()(或相关命令)之间的代码量和使用(或相关命令)内保存的映射ggmap()

我已经知道它get_map()具有filename将地图保存为图像的属性,并且我也知道该ggimage()方法(尽管我从未真正使用过它。)

有没有一种简单的方法来保存这样的地图,或者这两个是最好的工具 - 如果是这样,我怎样才能有效地使用它们?

4

1 回答 1

3

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

你可以在 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)
  }  
} 
于 2013-09-29T08:27:31.717 回答