Cartes géospatiales avec leaflet

Créer des tableaux de bord avec shinydashboard

Png Kee Seng

Researcher

Structure d'un graphique leaflet

  • La première couche requise est leaflet()
    • Comme ggplot()
  • addTiles() ajoute la carte du monde
    • Comme x, y dans ggplot
  • On ajoute de nouvelles couches avec %>%
    • Comme + dans ggplot
library(leaflet)

m <- leaflet() %>%
addTiles()

Une toile leaflet vide.

Une toile leaflet avec la carte du monde.

Créer des tableaux de bord avec shinydashboard

Différents fournisseurs de cartes

  • Ajouter addProviderTiles()
  • Exemples de fournisseurs
    • MtbMap : vélo de montagne
    • Esri.NatGeoWorldMap : par National Geo
    • Stamen.Toner : noir et blanc
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet avec le fournisseur MtbMap.

Leaflet avec le fournisseur Nat Geo.

Leaflet avec le fournisseur Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Créer des tableaux de bord avec shinydashboard

Ajouter des polygones dans leaflet

  • Ajouter des polygones avec addPolygon()
    • L'argument principal requis est un objet sf

Ajout d'un polygone dans leaflet.

leaflet() %>% 
  addTiles() %>% 

addPolygons(data=london_poly,
col="red",
label=~Name)
Créer des tableaux de bord avec shinydashboard

Ajouter des polylignes dans leaflet

  • Besoin de longitudes et latitudes
    • Contenues dans $geometry[[1]]
  • Tracer des polylignes avec addPolylines()
    • Longitudes et latitudes : 1re et 2e colonnes
loop_geo <- london_loop$geometry[[1]]

capital_geo <- london_capital$geometry[[1]]
m2 <- leaflet() %>% 
  addTiles() %>% 
  addPolygons(data = london_poly, col="red", 
                  label=~Name) %>% 

addPolylines(loop_geo[,1], loop_geo[,2]) %>% addPolylines(capital_geo[,1], capital_geo[,2], color = "orange")
Créer des tableaux de bord avec shinydashboard

Ajouter des marqueurs dans leaflet

  • Possibilité d'ajouter des marqueurs
    • addCircleMarkers() : chaque point en cercle
    • addMarkers() : chaque point en marqueur standard
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Marqueurs circulaires dans leaflet.

Marqueurs standards dans leaflet.

Créer des tableaux de bord avec shinydashboard

markerClusterOptions

  • On peut ajouter markerClusterOptions()
    • Affiche des valeurs agrégées

Marqueurs avec options de grappes.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Créer des tableaux de bord avec shinydashboard

Sélection par l'utilisateur

  • Ajouter addLayersControl() pour permettre des choix aux utilisateurs
  • baseGroups : permet d'alterner entre différents fournisseurs de cartes
    • Il faut nommer chaque tuile de fournisseur
    • Définir baseGroups comme un vecteur de ces étiquettes
  • overlayGroups : permet d'activer/désactiver des couches
    • Il faut nommer chaque couche
    • Définir overlayGroups comme un vecteur de ces étiquettes
m_london <- leaflet(london_poly) %>% 

addTiles(group="Default") %>% addProviderTiles(providers$Stamen.Toner,
group = "Toner") %>%
addProviderTiles(providers$Esri.NatGeoWorldMap,
group = "Nat Geo") %>%
addPolygons(col="red", label=~Name,
group = "Ward") %>%
addPolylines(loop_geo[,1], loop_geo[,2],
group = "London loop") %>%
addPolylines(capital_geo[,1], capital_geo[,2], labelOptions = labelOptions(noHide = TRUE), color = "orange",
group = "Capital ring", ) %>%
addMarkers(data = listings_geo, clusterOptions = markerClusterOptions(),
group = "Listings") %>%
addLayersControl(
baseGroups = c("Default", "Toner", "Nat Geo"),
overlayGroups = c("Ward","Listings", "London loop", "Capital loop"))
Créer des tableaux de bord avec shinydashboard

Sélection par l'utilisateur : rendu

Carte leaflet avec sélection par l'utilisateur.

Créer des tableaux de bord avec shinydashboard

Passons à la pratique !

Créer des tableaux de bord avec shinydashboard

Preparing Video For Download...