Tutorial de Leaflet para R: Leaflet for R
Sitio web del curso: GF-0604: Procesamiento de datos geográficos.
Datos utilizados durante el curso: Datos del curso GF-0604: Procesamiento de datos geográficos.
Instalación de paquetes:
# Leaflet
install.packages("leaflet")
Carga de paquetes:
# Leaflet
library(leaflet)
# sf
library(sf)
Leaflet es una de las bibliotecas más utilizadas para la creación de mapas interactivos en la Web. Está escrita en el lenguaje JavaScript y también puede utilizarse a través de otros lenguajes de programación, como Python y R.
El paquete Leaflet permite acceder la funcionalidad de Leaflet a través de R. Entre las capacidades que proporciona Leaflet están:
Los pasos básicos para la creación de un mapa con Leaflet son: 1. Crear un widget mediante un llamado a la función leaflet()
. 2. Añadir capas (mapas base, marcadores, puntos, lÃneas, polÃgonos, etc.). 3. Añadir controles (ej. leyenda, escala). 4. Desplegar el mapa.
El siguiente ejemplo ilustra estos pasos:
# Definición de mapa con capa base y con marcador
m <- leaflet() %>%
addTiles() %>% # Añadir capa base
addMarkers(lng=-84.0427264, lat=9.9380638, popup="Escuela de GeografÃa de la Universidad de Costa Rica")
# Despliegue del mapa
m
El método addProviderTiles()
permite añadir mapas de teselas, generalmente como capas base de un mapa. El sitio Leaflet Provider Demo proporciona una lista de capas base que pueden utilizarse.
# Definición de mapa con capa base y con marcador
m <- leaflet() %>%
addTiles() %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addMarkers(lng=-84.0427264, lat=9.9380638, popup="Escuela de GeografÃa de la Universidad de Costa Rica") %>%
addLayersControl(baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"))
# Despliegue del mapa
m
El siguiente ejemplo ilustra el uso de método para añadir controles, como addLayersControl()
(leyenda) y addMiniMapl()
(mapa de referencia). También se ejemplifica el uso de addCircleMarkers()
.
mammalia = st_read("https://raw.githubusercontent.com/geoprocesamiento-2020i/datos/master/biodiversidad/registros-presencia/cr/gam/mammalia.geojson")
## Reading layer `mammalia-amphibia-reptilia-aves-plantae' from data source `https://raw.githubusercontent.com/geoprocesamiento-2020i/datos/master/biodiversidad/registros-presencia/cr/gam/mammalia.geojson' using driver `GeoJSON'
## Simple feature collection with 1140 features and 5 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -84.45085 ymin: 9.74913 xmax: -83.76667 ymax: 10.11853
## geographic CRS: WGS 84
m <- leaflet() %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addCircleMarkers(data = mammalia,
stroke = F,
radius = 4,
fillColor = 'red',
fillOpacity = 1,
popup = paste(mammalia$order, mammalia$species, sep = '<br/>')) %>%
addLayersControl(baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI")) %>%
addMiniMap(
toggleDisplay = TRUE,
tiles = providers$Stamen.TonerLite
)
# Despliegue del mapa
m