Je souhaite obtenir une carte avec RgoogleMaps de R, avec une limite de coordonnées spécifique.
Ce que je peux appeler, c'est GetMap, et spécifier un centre, je dois ajouter un niveau de zoom. Tout fonctionne bien, sauf que je ne reçois pas de carte illustrée avec les coordonnées que je choisis.
Voici un exemple:
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")
Le problème est que seul le centre est passé en tant que paramètre et que, par conséquent, toute l'image que je vois dépend du niveau de zoom. Donc, je ne peux pas vraiment comprendre quelles sont les limites de l'image que je reçois. Ce que je veux faire, c'est que l'image soit délimitée exactement avec les coordonnées que je définis. Est-ce possible (également avec d'autres packages de cartes)?
Voici un moyen. Tout d'abord, vous obtenez une carte avec un certain zoom. Ensuite, vous ajoutez les limites lon et lat lorsque vous dessinez une figure, ce que vous pouvez faire avec scale_x_continuous
et 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
Une autre option consiste à utiliser OpenStreetMap comme source pour votre carte. Avec la fonction get_map
du package ggmap
, vous pouvez spécifier les limites de votre carte lorsque vous utilisez OpenStreetMap en tant que source. Avec:
mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm")
ggmap(mmap)
vous recevez:
Cependant, cette méthode ne fonctionne pas avec GoogleMaps. Spécifier les limites avec GoogleMaps en tant que source vous donnera l'avertissement suivant:
Attention: cadre de sélection attribué à Google - étendue spatiale uniquement approximatif. conversion du cadre de sélection en spécification centre/zoom . (expérimental)
L’utilisation d’OpenStreetMap présente l’inconvénient de ne pas avoir accès aux images satellites.
Un autre moyen de créer une carte interactive avec Google Map consiste à utiliser mon package 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)
Qui, étant une carte de Google, vient avec l'imaginaire satellite en tant que norme
J'aurais aimé avoir déjà vu cette question plus tôt ... Le package RgoogleMaps offre deux moyens de récupérer une carte: GetMap (centre, zoom) et GetMap.bbox (lonR, latR) qui prend simplement le cadre de sélection comme paramètres. Le niveau de zoom est automatiquement calculé. Je pense que cette dernière fonction pourrait être ce que vous recherchez ... Markus