Geospatiala kartor med leaflet

Bygga dashboards med shinydashboard

Png Kee Seng

Researcher

Strukturen hos ett leaflet-diagram

  • Det första lagret är leaflet()
    • Som ggplot()
  • addTiles() lägger till världskartan
    • Som x, y i ggplot
  • Nya lager läggs till med %>%
    • Som + i ggplot
library(leaflet)

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

En tom leaflet-duk.

En leaflet-duk med världskartan.

Bygga dashboards med shinydashboard

Olika kartleverantörer

  • Lägg till addProviderTiles()
  • Exempel på leverantörer:
    • MtbMap: Mountainbike
    • Esri.NatGeoWorldMap: Från National Geo
    • Stamen.Toner: Svartvit
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet med MtbMap-leverantör.

Leaflet med National Geo-leverantör.

Leaflet med Stamen Toner-leverantör.

1 https://rstudio.github.io/leaflet/basemaps.html
Bygga dashboards med shinydashboard

Lägga till polygoner i leaflet

  • Lägg till polygoner med addPolygon()
    • Huvudargumentet är ett sf-objekt

Lägger till en polygon i leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Bygga dashboards med shinydashboard

Lägga till polylinjer i leaflet

  • Longitud och latitud krävs
    • Finns i $geometry[[1]]
  • Polylinjer ritas med addPolylines()
    • Longitud och latitud motsvarar första och andra kolumnen
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")
Bygga dashboards med shinydashboard

Lägga till markörer i leaflet

  • Markörer kan läggas till
    • addCircleMarkers(): visar varje punkt som en cirkel
    • addMarkers(): visar varje punkt som en vanlig markör
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Cirkelmarkörer i leaflet.

Vanliga markörer i leaflet.

Bygga dashboards med shinydashboard

markerClusterOptions

  • markerClusterOptions() kan läggas till
    • Visar aggregerade värden

Markörer med klusteralternativ.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Bygga dashboards med shinydashboard

Användarval

  • Lägg till ett addLayersControl()-lager för användarval
  • baseGroups: Låter användaren växla mellan kartleverantörer
    • Varje leverantörsruta behöver en etikett
    • Ange baseGroups som en vektor med dessa etiketter
  • overlayGroups: Låter användaren slå lager på och av
    • Varje lager behöver en etikett
    • Ange overlayGroups som en vektor med dessa etiketter
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"))
Bygga dashboards med shinydashboard

Användarval, renderat

Leaflet-karta med användarval.

Bygga dashboards med shinydashboard

Nu kör vi en övning!

Bygga dashboards med shinydashboard

Preparing Video For Download...