【问题标题】:Offline plotting of map coordinates on static maps of Google在谷歌静态地图上离线绘制地图坐标
【发布时间】:2012-07-23 20:00:45
【问题描述】:

历史:从静态谷歌地图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))

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

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

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

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

我是不是在找错树了?

【问题讨论】:

  • 如果问题仍然广泛或不清楚,请告诉我如何改进。
  • ggimage 对坐标一无所知,它不知道图像的空间原点。它只是一个图像。您是否考虑过使用 package:ggmap 中的 get_map?它将获得一个谷歌地图图像,然后您将 geom_points 添加到它。坐标是经纬度。
  • @Spacedman 问题在于这是“离线”完成的。是否可以存储 get_map 的值以备后用?
  • 当然 - save() 函数会将任何内容序列化到磁盘。
  • “内存中”是什么意思? get_map 不会在磁盘上留下任何东西,它会创建一个包含图像数据的对象。你可以使用它。我认为我们在这里错过了大局,而大局并不是真正适合的地方。

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


【解决方案1】:

我认为你的错误如下:

  • 试图在图像上绘制地理数据,但该图像不知道地图坐标
  • 可能在数据框中转置您的纬度和经度

您应该按照以下方式进行操作,分两步:

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

首先,获取地图。

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)

【讨论】:

  • PS,我不知道为什么我的机器上的颜色这么奇怪。
  • 我只能说,感谢您的帮助和耐心。我不是数学系的学生,这在处理 R 时是个大问题。我明天试试你的代码。
  • @AnishaKaul 这与数学无关。它是关于仔细理解谜题的每一点、阅读帮助文件并尝试示例。这就是我在过去一个小时内为得到这个答案所做的事情。
  • Andrie 的解决方案有两部分:首先获取地图并保存。然后您可以拔下网络连接并“离线”。您甚至可以退出并重新启动 R,然后从保存的 .rda 文件中加载地图。这仍然是离线的。然后用ggmap添加你的点。重复。
  • @AnishaKaul 我设法通过直接使用get_googlemap 而不是get_map 来解决颜色问题。
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2018-09-21
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
相关资源
最近更新 更多