Mappe geospaziali con leaflet

Creare dashboard con shinydashboard

Png Kee Seng

Researcher

Struttura di un grafico leaflet

  • Il primo layer è leaflet()
    • Come ggplot()
  • addTiles() aggiunge la mappa del mondo
    • Come x, y in ggplot
  • Nuovi layer si aggiungono con %>%
    • Come + in ggplot
library(leaflet)

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

Una tela vuota di leaflet.

Una tela leaflet con la mappa del mondo.

Creare dashboard con shinydashboard

Provider di mappe diversi

  • Aggiungi addProviderTiles()
  • Alcuni provider:
    • MtbMap: Mountain bike
    • Esri.NatGeoWorldMap: di National Geographic
    • Stamen.Toner: bianco e nero
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet con provider MtbMap.

Leaflet con provider Nat Geo.

Leaflet con provider Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Creare dashboard con shinydashboard

Aggiungere poligoni in leaflet

  • Aggiungi poligoni con addPolygon()
    • L’argomento principale è un oggetto sf

Aggiunta di un poligono in leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Creare dashboard con shinydashboard

Aggiungere polilinee in leaflet

  • Servono longitudini e latitudini
    • Contenute in $geometry[[1]]
  • Le polilinee si tracciano con addPolylines()
    • Longitudini e latitudini sono nella prima e seconda colonna
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")
Creare dashboard con shinydashboard

Aggiungere marker in leaflet

  • Puoi aggiungere marker
    • addCircleMarkers(): rappresenta ogni punto con un cerchio
    • addMarkers(): rappresenta ogni punto con un marker standard
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Marker circolari in leaflet.

Marker standard in leaflet.

Creare dashboard con shinydashboard

markerClusterOptions

  • Puoi aggiungere markerClusterOptions()
    • Mostra valori aggregati

Marker con opzioni di clustering.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Creare dashboard con shinydashboard

Selezione utente

  • Aggiungi addLayersControl() per input utente
  • baseGroups: permette di cambiare provider della mappa
    • Etichetta ogni tile del provider
    • Imposta baseGroups come vettore di queste etichette
  • overlayGroups: permette di attivare/disattivare layer
    • Etichetta ogni layer
    • Imposta overlayGroups come vettore di queste etichette
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"))
Creare dashboard con shinydashboard

Selezione utente, resa

Mappa leaflet con selezione utente.

Creare dashboard con shinydashboard

Ayo berlatih!

Creare dashboard con shinydashboard

Preparing Video For Download...