Utilisation de RgoogleMaps

November 3, 2010
By

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 :

http://www.openstreetmap.org/

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

http://alea.fr.eu.org/public/_____________tile1.png

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

http://alea.fr.eu.org/public/_____________tile2.png

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

http://alea.fr.eu.org/public/_____________tile3.png

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);

http://alea.fr.eu.org/public/_____________tile4.png

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")

http://alea.fr.eu.org/public/_____________tile5.png

Tags:

Comments are closed.