Геопросторові мапи з leaflet

Створення панелей керування з shinydashboard

Png Kee Seng

Researcher

Структура графіка leaflet

  • Перший необхідний шар — leaflet()
    • Подібно до ggplot()
  • addTiles() додає мапу світу
    • Як x, y у ggplot
  • Нові шари додаються через %>%
    • Як + у ggplot
library(leaflet)

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

Порожнє полотно leaflet.

Полотно leaflet з мапою світу.

Створення панелей керування з shinydashboard

Різні постачальники мап

  • Додайте addProviderTiles()
  • Приклади провайдерів:
    • MtbMap: для маунтенбайку
    • Esri.NatGeoWorldMap: від National Geo
    • Stamen.Toner: чорно-біла
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet з провайдером MtbMap.

Leaflet з провайдером Nat Geo.

Leaflet з провайдером Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Створення панелей керування з shinydashboard

Додавання полігонів у leaflet

  • Додайте полігони через addPolygon()
    • Головний аргумент — обʼєкт sf

Додавання полігона в leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Створення панелей керування з shinydashboard

Додавання поліліній у leaflet

  • Потрібні довготи та широти
    • Містяться в $geometry[[1]]
  • Полілінії додаються через addPolylines()
    • Довготи та широти — це перший і другий стовпці
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")
Створення панелей керування з shinydashboard

Додавання маркерів у leaflet

  • Можна додавати маркери
    • addCircleMarkers(): показує кожну точку колом
    • addMarkers(): показує кожну точку звичайним маркером
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Колові маркери в leaflet.

Звичайні маркери в leaflet.

Створення панелей керування з shinydashboard

markerClusterOptions

  • Можна додати markerClusterOptions()
    • Показує агреговані значення

Маркери з опціями кластера.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Створення панелей керування з shinydashboard

Вибір користувача

  • Додайте шар addLayersControl() для взаємодії користувача
  • baseGroups: дає змогу перемикати постачальників мап
    • Потрібно підписати кожен tile-провайдер
    • Вкажіть baseGroups як вектор цих підписів
  • overlayGroups: дає змогу вмикати/вимикати шари
    • Потрібно підписати кожен шар
    • Вкажіть overlayGroups як вектор цих підписів
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"))
Створення панелей керування з shinydashboard

Вибір користувача, приклад відмалювання

Мапа leaflet з вибором користувача.

Створення панелей керування з shinydashboard

Давайте потренуємось!

Створення панелей керування з shinydashboard

Preparing Video For Download...