superponer - Obtener mapa con coordenadas límite especificadas
superponer graficas en r (4)
Quiero obtener un mapa con RgoogleMaps desde R, con un límite de coordenadas específico.
Lo que puedo llamar es GetMap, y especificar un centro, debo agregar un nivel de zoom. Todo funciona bien, excepto que no obtengo un mapa de imagen acotado con las coordenadas que elijo.
Aquí hay un ejemplo:
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")
El problema es que solo se pasa el centro como parámetro y, por lo tanto, toda la imagen que veo depende del nivel de zoom. Entonces, realmente no puedo entender cuáles son los límites de la imagen que obtengo. Lo que quiero hacer es obtener una imagen acotada exactamente con las coordenadas que estoy definiendo. ¿Es esto posible (también con otros paquetes de mapas)?
Aquí hay una forma. Primero, obtienes un mapa con un cierto zoom. Luego, agregue los límites de lon y lat cuando dibuje una figura, lo que puede hacer con scale_x_continuous
y 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
Ojalá hubiera visto esta pregunta antes. El paquete RgoogleMaps ofrece dos formas de recuperar un mapa: GetMap (center, zoom) y GetMap.bbox (lonR, latR) que simplemente toma el cuadro delimitador como parámetros. El nivel de zoom se calcula automáticamente. Creo que esta última función podría ser lo que estás buscando. Markus
Otra forma de un Google Map interactivo real es con mi paquete de 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)
El cual, al ser un mapa de Google, viene con imágenes satelitales como estándar
Otra opción es usar OpenStreetMap como fuente para su mapa. Con la función ggmap
paquete ggmap
, puede especificar los límites de su mapa cuando utiliza OpenStreetMap como fuente. Con:
mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm")
ggmap(mmap)
usted obtiene:
Sin embargo, este método no funciona con GoogleMaps. Especificar los límites con GoogleMaps como fuente le dará la siguiente advertencia:
Advertencia: cuadro delimitador dado a google - la extensión espacial solo es aproximada. conversión de cuadro delimitador a centro / zoom especificación. (experimental)
Un inconveniente de usar OpenStreetMap es que no tendrá acceso a imágenes satelitales.