Mapas geoespaciales con leaflet

Creación de paneles con shinydashboard

Png Kee Seng

Researcher

Estructura de un gráfico leaflet

  • La primera capa es leaflet()
    • Como ggplot()
  • addTiles() añade el mapa base
    • Como x, y en ggplot
  • Nuevas capas se añaden con %>%
    • Como + en ggplot
library(leaflet)

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

Lienzo en blanco de leaflet.

Lienzo de leaflet con el mapa mundial.

Creación de paneles con shinydashboard

Diferentes proveedores de mapas

  • Añade addProviderTiles()
  • Algunos proveedores son
    • MtbMap: ciclismo de montaña
    • Esri.NatGeoWorldMap: de National Geo
    • Stamen.Toner: blanco y negro
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

Leaflet con proveedor MtbMap.

Leaflet con proveedor Nat Geo.

Leaflet con proveedor Stamen Toner.

1 https://rstudio.github.io/leaflet/basemaps.html
Creación de paneles con shinydashboard

Añadir polígonos en leaflet

  • Añade polígonos con addPolygon()
    • El argumento clave es un objeto sf

Añadir un polígono en leaflet.

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

addPolygons(data=london_poly,
col="red",
label=~Name)
Creación de paneles con shinydashboard

Añadir polilíneas en leaflet

  • Necesitas longitudes y latitudes
    • Están en $geometry[[1]]
  • Las polilíneas se dibujan con addPolylines()
    • Longitudes y latitudes son la 1.ª y 2.ª columnas
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")
Creación de paneles con shinydashboard

Añadir marcadores en leaflet

  • Puedes añadir marcadores
    • addCircleMarkers(): cada punto como un círculo
    • addMarkers(): cada punto como un marcador estándar
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

Marcadores circulares en leaflet.

Marcadores estándar en leaflet.

Creación de paneles con shinydashboard

markerClusterOptions

  • Se puede añadir markerClusterOptions()
    • Muestra valores agregados

Marcadores con opciones de clúster.

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
Creación de paneles con shinydashboard

Selección del usuario

  • Añade addLayersControl() para permitir entradas del usuario
  • baseGroups: permite alternar entre proveedores de mapas
    • Etiqueta cada tesela del proveedor
    • Define baseGroups como un vector con esas etiquetas
  • overlayGroups: permite activar/desactivar capas
    • Etiqueta cada capa
    • Define overlayGroups como un vector con esas etiquetas
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"))
Creación de paneles con shinydashboard

Selección del usuario, renderizada

Mapa de leaflet con selección del usuario.

Creación de paneles con shinydashboard

¡Vamos a practicar!

Creación de paneles con shinydashboard

Preparing Video For Download...