18

我想从 R 获取带有 RgoogleMaps 的地图,具有特定的坐标边界。

我可以调用的是GetMap,并指定一个中心,我必须添加一个缩放级别。一切正常,除了我没有得到一个以我选择的坐标为界的图像地图。

这是一个例子:

lat <- c(44.49,44.5)                
lon <- c(11.33,11.36)               
center = c(mean(lat), mean(lon))    
zoom <- 14                          
mmap <- GetMap(center = center, zoom=zoom, maptype= "satellite", destfile = "m.png") 

问题是只有中心作为参数传递,因此我看到的整个图像取决于缩放级别。所以,我无法真正理解我得到的图像的边界是什么。我想要做的是得到一个与我定义的坐标完全一致的图像。这可能吗(也可以使用其他地图包)?

4

4 回答 4

28

这是一种方法。首先,您会得到一张具有一定缩放比例的地图。然后,您在绘制图形时添加 lon 和 lat 限制,您可以使用scale_x_continuousand来完成scale_y_continuous

library(ggmap)
library(ggplot2)

### Set a range
lat <- c(44.49, 44.5)                
lon <- c(11.33, 11.36)   

### Get a map
map <- get_map(location = c(lon = mean(lon), lat = mean(lat)), zoom = 14,
               maptype = "satellite", source = "google")

### When you draw a figure, you limit lon and lat.      
foo <- ggmap(map)+
       scale_x_continuous(limits = c(11.33, 11.36), expand = c(0, 0)) +
       scale_y_continuous(limits = c(44.49, 44.5), expand = c(0, 0))

foo

在此处输入图像描述

于 2014-09-03T07:56:04.913 回答
8

另一种选择是使用 OpenStreetMap 作为地图的来源。使用包中的get_map函数ggmap,您可以在使用 OpenStreetMap 作为源时指定地图的边界。和:

mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm")
ggmap(mmap)

你得到:

在此处输入图像描述

但是,此方法不适用于 GoogleMaps。使用 GoogleMaps 作为源指定边界会给您以下警告:

警告:给谷歌的边界框 - 空间范围只是近似值。将边界框转换为中心/缩放规范。(实验性)

使用 OpenStreetMap 的一个缺点是您无法访问卫星图像。

于 2015-09-07T06:35:06.340 回答
3

实际交互式谷歌地图的另一种方法是使用我的googleway

library(googleway)

lat <- c(44.49,44.5)                
lon <- c(11.33,11.36)  
zoom <- 14   

mapKey <- 'your_api_key'

google_map(location = c(mean(lat), mean(lon)), zoom = zoom, key = mapKey)

在此处输入图像描述

其中,作为谷歌地图,标配卫星图像

在此处输入图像描述

于 2017-06-30T11:12:02.470 回答
1

我希望我早点看到这个问题。RgoogleMaps 包提供了两种检索地图的方法:GetMap(center, zoom)GetMap.bbox(lonR,latR),它简单地将边界框作为参数。缩放级别是自动计算的。我认为后一个功能可能是您正在寻找的。马库斯

于 2017-08-12T13:52:36.163 回答