INRA, UMR CARRTEL
75 avenue de Corzent
74200 Thonon-les-Bains
francois.keck@thonon.inra.fr
@FrancoisKeck
[Pour éviter des problèmes d'affichage il est recommandé d'utiliser votre navigateur en mode plein écran (F11)]
e.g. Google Maps
20 niveaux d'échelle de 1:590.000.000 à 1:1000.
Pour travailler à petite échelle sur de grandes surfaces
250.000 cartes IGN 1:25.000 pour représenter l'ensemble des terres émergées
Différents packages : googleVis, plotGoogleMaps, rMaps, leafletR, webmaps...
Basés sur différentes technologies de rendus :
Format SVG, Google Chart, Google Maps API, Leaflet, OpenLayers...
Il est conçu pour exporter des données héritant de la classe Spatial* (package sp, Bivand et al. 2008) vers une carte interactive Leaflet
rleafmap est diponible sur www.francoiskeck.fr/rleafmap/
install.packages("~/rleafmap_0.1.tar.gz", repos = NULL, type = "source")
library(sp)
library(rleafmap)
rleafmap fonctionne avec Leaflet, un projet de bibliothèque JavaScript opensource initié par Vladimir Agafonkin.
writeMap(...,
dir = getwd(),
prefix = "",
width = 700, height = 400,
setView = c(0,0),
setZoom = 6,
interface = NULL,
lightjson = FALSE,
directView = c("viewer", "browser", "disabled"),
leaflet.loc = "online")
Les stations Velo'v de la ville de Lyon
library(sp)
velov <- read.table("velov.txt", h = T)
coordinates(velov) <- ~lon+lat
library(rleafmap)
stamen.toner <- basemap("stamen.toner")
velov.map <- spLayer(velov, stroke = F, popup = velov$stations.name)
writeMap(stamen.toner, velov.map, setView = c(45.76, 4.85), setZoom = 12)
Les stations Velo'v de la ville de Lyon
La fonction basemap() permet de créer simplement une nouvelle couche de tuiles (distribuées par un serveur distant)
Une liste de serveurs préconfigurés est disponible
N'importe quelle URL de serveur de tuiles peut être utilisée
basemap("stamen.toner")
basemap("stamen.watercolor")
#User defined server: Mapbox Tiles example
basemap("https://a.tiles.mapbox.com/v3/examples.map-i875mjb7/{z}/{x}/{y}.png")
#User defined server: Eleanor Lutz "Space Station"
basemap("https://a.tiles.mapbox.com/v3/eleanor.ipncow29/{z}/{x}/{y}.png")
La fonction générique spLayer() permet de créer simplement une nouvelle couche vecteur ou raster
Un ensemble d'arguments permet la personnalisation de la symbologie
L'argument popup permet l'ajout d'info-bulles
Répartition des campings en France
data(campsites)
gcol <- rev(heat.colors(5))
gcut <- cut(campsites$N.CAMPSITES, breaks = c(-1, 20, 40, 60, 80, 1000))
pop <- paste(campsites$DEP.NAME, " (", campsites$DEP.CODE, ")
",
campsites$N.1, "★
", campsites$N.2, "★★
",
campsites$N.3, "★★★
", campsites$N.4, "★★★★
",
campsites$N.5, "★★★★★", sep = "")
cs <- spLayer(campsites, fill.col = gcol[as.numeric(gcut)], popup = pop)
writeMap(mq.map, cs, setView = c(46.5, 3), setZoom = 5)
Répartition des campings en France
Densité de stations Vélo'v
library(spatstat)
win <- owin(xrange = bbox(velov)[1,] + c(-0.01,0.01),
yrange = bbox(velov)[2,] + c(-0.01,0.01))
velov.ppp <- ppp(coordinates(velov)[,1], coordinates(velov)[,2], window = win)
velov.ppp.den <- density(velov.ppp, sigma = 0.005)
velov.den <- as.SpatialGridDataFrame.im(velov.ppp.den)
velov.den$v[velov.den$v < 10^3] <- NA
velov.d <-spLayer(velov.den, layer = "v",
cells.alpha = seq(0.1, 0.8, length.out = 12))
writeMap(mapbox, velov.d, setView=c(45.76, 4.85), setZoom = 12)
Densité de stations Vélo'v
La fonction ui() permet de personnaliser l'interface utilisateur
ui(zoom = c("topleft", "topright", "bottomleft", "bottomright", "none"),
layers = c("none", "topright", "topleft", "bottomleft", "bottomright"),
attrib = c("bottomright", "topleft", "topright", "bottomleft", "none"),
attrib.text = "")
L'argument layers permet l'ajout d'un sélecteur de couches
Emplacement stations Vélo'v + Densité de stations Vélo'v + Voies cyclables
vcycle <- readShapeLines("amenagement_cyclable")
vcycle.map <- spLayer(vcycle, stroke.col = "red", stroke.lwd = 1.3,
stroke.lty = c(5,3))
velov.ui <- ui(layers = "topright")
writeMap(stamen.toner, mapbox.terrain, velov.d, velov.map, vcycle.map,
interface = velov.ui, setView = c(45.76, 4.85), setZoom = 13)
Emplacement stations Vélo'v + Densité de stations Vélo'v + Voies cyclables
writeMap(..., directView = "viewer")
writeMap(..., directView = "viewer")