Geospatiale kaarten met leaflet

Dashboards bouwen met shinydashboard

Png Kee Seng

Researcher

De opbouw van een leaflet-plot

  • De eerste laag is leaflet()
    • Net als ggplot()
  • addTiles() voegt de wereldkaart toe
    • Zoals x, y in ggplot
  • Nieuwe lagen voeg je toe met %>%
    • Zoals + in ggplot
library(leaflet)

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

Een leeg leaflet-canvas.

Een leaflet-canvas met de wereldkaart.

Dashboards bouwen met shinydashboard

Verschillende kaartproviders

  • Voeg addProviderTiles() toe
  • Enkele voorbeelden van providers
    • MtbMap: mountainbiken
    • Esri.NatGeoWorldMap: van National Geo
    • Stamen.Toner: zwart-wit
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet met MtbMap-provider.

Leaflet met Nat Geo-provider.

Leaflet met Stamen Toner-provider.

1 https://rstudio.github.io/leaflet/basemaps.html
Dashboards bouwen met shinydashboard

Polygonen toevoegen in leaflet

  • Voeg polygonen toe met addPolygon()
    • Belangrijkste argument is een sf-object

Een polygoon toevoegen in leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Dashboards bouwen met shinydashboard

Polylines toevoegen in leaflet

  • Lengte- en breedtegraden nodig
    • Te vinden in $geometry[[1]]
  • Polylines plot je met addPolylines()
    • Lengte- en breedtegraad staan in kolom 1 en 2
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")
Dashboards bouwen met shinydashboard

Markers toevoegen in leaflet

  • Je kunt markers toevoegen
    • addCircleMarkers(): stelt elk punt voor als cirkel
    • addMarkers(): stelt elk punt voor als standaardmarker
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Cirkelmarkers in leaflet.

Standaardmarkers in leaflet.

Dashboards bouwen met shinydashboard

markerClusterOptions

  • markerClusterOptions() kun je toevoegen
    • Toont geaggregeerde waarden

Markers met clusteropties.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Dashboards bouwen met shinydashboard

Gebruikerskeuze

  • Voeg addLayersControl() toe voor gebruikerskeuzes
  • baseGroups: laat kiezen tussen kaartproviders
    • Label elke providertile
    • Zet baseGroups als vector met deze labels
  • overlayGroups: laat lagen aan/uit zetten
    • Label elke laag
    • Zet overlayGroups als vector met deze labels
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"))
Dashboards bouwen met shinydashboard

Gebruikerskeuze, weergegeven

Leaflet-kaart met gebruikerskeuze.

Dashboards bouwen met shinydashboard

Laten we oefenen!

Dashboards bouwen met shinydashboard

Preparing Video For Download...