离线绘制Google静态地图上的地图坐标

时间:2012-07-25 11:39:20

标签: r ggplot2 png google-static-maps ggimage

历史记录:从静态Google地图png中提取的栅格数据,通过ggimage将其加载到R设备上。

library (png)
library (ggmap)

rasterArray <- readPNG ("My.png")

x = c (40.702147,40.718217,40.711614)
y = c (-74.012318,-74.015794,-73.998284)

myData <- data.frame (x, y)

print (ggimage (rasterArray, fullpage = TRUE, coord_equal = FALSE) 
    + geom_point (aes (x = x, y = y), data = myData, colour = I("green"), 
      size = I(5), fill = NA))

我确实在dput上运行rasterArray,但输出为20 MB,无法在此发布。
顺便说一句,this is the URL of that static map:

问题:要在包含地图的R设备上绘制“GPS坐标”(以像素为单位),我是否需要scale data.frame

我看到了这个页面:http://www-personal.umich.edu/~varel/rdatasets/Langren1644.html 我是否需要按照他们在这里展示的方式进行缩放?

如果是,那么除了scale函数的手册之外的其他内容我还需要了解才能完成这项工作吗?

我在错误的树上吠叫吗?

1 个答案:

答案 0 :(得分:22)

我认为你的错误如下:

  • 尝试在图像上绘制地理数据,其中该图像没有任何地图坐标感知
  • 可能在数据框中调换纬度和经度

以下是您应该如何执行此操作,分两步:

  1. 使用get_map()获取地图,并使用save()
  2. 将其保存到磁盘
  3. 使用ggmap()
  4. 绘制数据

    首先,获取地图。

    library (ggmap)
    
    
    # Read map from google maps and save data to file
    
    mapImageData <- get_googlemap(
      c(lon=-74.0087986666667, lat=40.7106593333333), 
      zoom=15
    )
    save(mapImageData, file="savedMap.rda")
    

    然后,在新的会话中:

    # Start a new session (well, clear the workspace, to be honest)
    
    rm(list=ls())
    
    # Load the saved file
    
    load(file="savedMap.rda")
    
    # Set up some data
    
    myData <- data.frame(
        lat = c (40.702147, 40.718217, 40.711614),
        lon = c (-74.012318, -74.015794, -73.998284)
    )
    
    
    # Plot
    
    ggmap(mapImageData) +
        geom_point(aes(x=lon, y=lat), data=myData, colour="red", size=5)
    

    enter image description here