| This post was kindly contributed by Alea - R - go there to comment and to read the full post. |
RgoogleMaps est une extension permettant de récupérer des fonds de carte (plans ou images satellites) depuis Google Maps et de les utiliser comme arrière-plan pour des graphiques.
Elle ne permet pas d'interroger l'API Google Maps pour faire de la géolocalisation ou du calcul de distance, etc. Elle permet aussi de récupérer des plans libres depuis OpenStreetMap :
Page sur le CRAN :
http://cran.r-project.org/web/packages/RgoogleMaps/index.html
Vignettes :
http://cran.r-project.org/web/packages/RgoogleMaps/vignettes/RgoogleMaps-intro.pdf
Utilisation
Préambule
library(RgoogleMaps)
Pour utiliser l'API Google Maps il faut une clé. On peut en obtenir une gratuitement :
http://code.google.com/apis/maps/signup.html
On place la clé dans un fichier ~/API.key.txt, ou on la place comme premier argument des fonctions de l'extension.
GetMap
La fonction GetMap récupère une carte depuis Google et l'enregistre dans un fichier. On peut spécifier les coordonnées du centre et un niveau de zoom :
map.lyon <- GetMap(center=c(45.77338,4.856039), zoom = 15, destfile = "r_out/tile1.png", maptype = "mobile");
[1] "http://maps.google.com/maps/api/staticmap?center=45.77338,4.856039&zoom=15&size=640x640&maptype=mobile&format=png32&sensor=true" Message d'avis : In readGDAL(destfile, silent = TRUE) : GeoTransform values not available

On peut aussi spécifier une bounding box. Voir ?qbbox pour les options de calcul des coordonnées :
bb <- qbbox(c(45.77338,45.77965),c(4.859236,4.856039), TYPE = "all", margin = list(m=rep(5,4), TYPE = c("perc", "abs")[1])); map <- GetMap.bbox(bb$lonR, bb$latR, destfile = "r_out/tile2.png", maptype = "satellite")
[1] "http://maps.google.com/maps/api/staticmap?center=45.776515,4.8576375&zoom=16&size=640x640&maptype=satellite&format=png32&sensor=true" Message d'avis : In readGDAL(destfile, silent = TRUE) : GeoTransform values not available

Options de GetMap
- key
- Clé API
- center
- Coordonnées du centre
- zoom
- Niveau de zoom
- markers
- Ajoute éventuellement des marqueurs Google
- hl
- Langue pour le texte affiché sur les cartes
- maptype
- Type de carte : satellite, terrain, hybrid, mobile
- destfile
- Chemin de l'image à générer
- GRAYSCALE
- Si TRUE, convertit l'image en niveaux de gris
Ajouter des données avec PlotOnStaticMap
Supposons qu'on ait les données suivantes :
data <- rbind.data.frame(c(45.77338,4.856039,12), c(45.776702,4.853743,20), c(45.777331,4.856147,9), c(45.77965,4.859236,4)) names(data) <- c("lat","lon","nb")
On récupère la bounding box correspondante :
bb <- qbbox(lat=data$lat, lon=data$lon)
On télécharge la carte :
map <- GetMap.bbox(bb$lonR, bb$latR, destfile = "r_out/tile3.png", maptype="hybrid");
R> R> R> [1] "http://maps.google.com/maps/api/staticmap?center=45.776515,4.8564895&zoom=16&size=640x640&maptype=hybrid&format=png32&sensor=true" Message d'avis : In readGDAL(destfile, silent = TRUE) : GeoTransform values not available

On ajoute les points :
PlotOnStaticMap(map, lat=data$lat, lon=data$lon, cex=data$nb*1.5, pch=20, col=rgb(1,0,0,0.7), add=F);

Ajouter des données avec les fonctions classiques (points,…)
Dans ce cas il faut ajouter l'option TrueProj=FALSE dans l'appel au premier PlotOnStaticMap.
PlotOnStaticMap(map.lyon, add=F, TrueProj=FALSE) points(x=data$lon,y=data$lat,pch=21,cex=data$nb*1.5,bg=rgb(0,0,1,0.7),col="white")
