Mapy geoprzestrzenne z leaflet

Tworzenie dashboardów z shinydashboard

Png Kee Seng

Researcher

Struktura wykresu leaflet

  • Pierwsza warstwa to leaflet()
    • Jak ggplot()
  • addTiles() dodaje mapę świata
    • Jak x, y w ggplot
  • Nowe warstwy dodaje się za pomocą %>%
    • Jak + w ggplot
library(leaflet)

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

Puste płótno leaflet.

Płótno leaflet z mapą świata.

Tworzenie dashboardów z shinydashboard

Różni dostawcy map

  • Dodaj addProviderTiles()
  • Przykładowi dostawcy
    • MtbMap: Kolarstwo górskie
    • Esri.NatGeoWorldMap: National Geographic
    • Stamen.Toner: Czarno-biały
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet z dostawcą MtbMap.

Leaflet z dostawcą National Geo.

Leaflet z dostawcą Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Tworzenie dashboardów z shinydashboard

Dodawanie wielokątów w leaflet

  • Dodawanie wielokątów za pomocą addPolygon()
    • Główny argument to obiekt sf

Dodawanie wielokąta w leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Tworzenie dashboardów z shinydashboard

Dodawanie polilinii w leaflet

  • Wymagane są długości i szerokości geograficzne
    • Zawarte w $geometry[[1]]
  • Polilinie są rysowane za pomocą addPolylines()
    • Długości i szerokości geograficzne odpowiadają pierwszej i drugiej kolumnie
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")
Tworzenie dashboardów z shinydashboard

Dodawanie znaczników w leaflet

  • Możliwe jest dodawanie znaczników
    • addCircleMarkers(): reprezentuje każdy punkt jako okrąg
    • addMarkers(): reprezentuje każdy punkt jako standardowy znacznik
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Okrągłe znaczniki w leaflet.

Standardowe znaczniki w leaflet.

Tworzenie dashboardów z shinydashboard

markerClusterOptions

  • Można dodać markerClusterOptions()
    • Wyświetla zagregowane wartości

Znaczniki z opcją grupowania.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Tworzenie dashboardów z shinydashboard

Wybór użytkownika

  • Dodaj warstwę addLayersControl(), aby umożliwić użytkownikom wybór
  • baseGroups: pozwala przełączać się między dostawcami map
    • Każdy kafelek dostawcy wymaga etykiety
    • Ustaw baseGroups jako wektor zawierający te etykiety
  • overlayGroups: pozwala włączać i wyłączać warstwy
    • Każda warstwa wymaga etykiety
    • Ustaw overlayGroups jako wektor zawierający te etykiety
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"))
Tworzenie dashboardów z shinydashboard

Wybór użytkownika – wynik

Mapa leaflet z wyborem użytkownika.

Tworzenie dashboardów z shinydashboard

Czas na ćwiczenia!

Tworzenie dashboardów z shinydashboard

Preparing Video For Download...