Mapas geoespaciais com leaflet

Construindo dashboards com shinydashboard

Png Kee Seng

Researcher

A estrutura de um gráfico leaflet

  • A primeira camada é leaflet()
    • Como ggplot()
  • addTiles() adiciona o mapa-múndi
    • Como x, y no ggplot
  • Novas camadas são adicionadas com %>%
    • Como + no ggplot
library(leaflet)

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

Uma tela em branco do leaflet.

Uma tela do leaflet com o mapa-múndi.

Construindo dashboards com shinydashboard

Diferentes provedores de mapa

  • Adicione addProviderTiles()
  • Alguns provedores são
    • MtbMap: Mountain biking
    • Esri.NatGeoWorldMap: da National Geo
    • Stamen.Toner: preto e branco
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet com o provedor MtbMap.

Leaflet com o provedor Nat Geo.

Leaflet com o provedor Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Construindo dashboards com shinydashboard

Adicionando polígonos no leaflet

  • Adicione polígonos com addPolygon()
    • O principal argumento é um objeto sf

Adicionando um polígono no leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Construindo dashboards com shinydashboard

Adicionando polilinhas no leaflet

  • Precisa de longitudes e latitudes
    • Contidas em $geometry[[1]]
  • Polilinhas são plotadas com addPolylines()
    • Longitude e latitude correspondem às colunas 1 e 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")
Construindo dashboards com shinydashboard

Adicionando marcadores no leaflet

  • Pode adicionar marcadores
    • addCircleMarkers(): representa cada ponto por um círculo
    • addMarkers(): representa cada ponto por um marcador comum
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Marcadores circulares no leaflet.

Marcadores comuns no leaflet.

Construindo dashboards com shinydashboard

markerClusterOptions

  • markerClusterOptions() pode ser adicionado
    • Mostra valores agregados

Marcadores com opções de cluster.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Construindo dashboards com shinydashboard

Seleção do usuário

  • Adicione a camada addLayersControl() para permitir entradas do usuário
  • baseGroups: permite alternar entre provedores de mapa
    • É preciso rotular cada provider tile
    • Defina baseGroups como um vetor com esses rótulos
  • overlayGroups: permite ligar/desligar camadas
    • É preciso rotular cada camada
    • Defina overlayGroups como um vetor com esses rótulos
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"))
Construindo dashboards com shinydashboard

Seleção do usuário, renderizada

Mapa leaflet com seleção do usuário.

Construindo dashboards com shinydashboard

Vamos praticar!

Construindo dashboards com shinydashboard

Preparing Video For Download...