8  Visualización de datos espaciales

Para concluir los contenidos de este taller, ofrecemos información introductoria sobre la representación de datos espaciales en R. Es muy probable que esta sea, entre otras áreas, una de las que ha experimentado mayores y más potentes avances en R. No en vano, en el III Congreso y XIV Jornadas de Usuarios de R que tuvieron lugar en Sevilla (nov. 2024) se presentaron dos talleres prácticos relacionados con este ámbito:

En estos apuntes tan solo vamos a introducir de manera superficial algunas de las posibilidades y herramientas que ofrece R para visualizar datos con dependencias espaciales y tareas de geocomputación. En la Sección 8.3 se pueden encontrar algunas referencias que proporcionan mucha más información y ejemplos sobre este área de aplicación.

8.1 Datos espaciales

8.1.1 Simple features

El estándar simple features es un modelo común de almacenamiento y acceso para atributos geográficos, creado principalmente para geometrías 2-D (puntos, polígonos, líneas, etc.). Permite conexión con bases de datos geográficas (e.g. PostGIS) y también con Sistemas de Información Geográfica (GIS, por sus siglas), tales como ArcGIS.

En R, el paquete sf da soporte para trabajar con datos representados según el estándar simple features. Los registros de datos espaciales se almacenan en un objeto data.frame o tibble con una columna que contiene la información de geometría a representar. Están soportados los 17 tipos de datos representables con simple features en todas las dimensiones. También tiene interfaces con sistemas externos como GEOS, s2geometry, GDAL o PRØJ para realizar multitud de operaciones sobre distintos tipos de objetos y espacios de coordenadas.

Existe un listado de operaciones soportadas por sf que resume las capacidades completas de este paquete.

En particular la función geom_sf() permite incorporar objetos espaciales geométricos gestionados mediante el paquete sf como una capa más de nuestros gráficos creados con ggplot2. También es totalmente compatible con las funciones del paquete dplyr.

8.1.2 Datos raster y cubos de datos vectoriales

  • El paquete stars ofrece soporte para representación y manejo de datos raster (por ejemplo, de imágenes satelitales) así como cubos de datos vectoriales (vector datacubes), tal y como muestra la Figura 8.1.
Figura 8.1: Los hipercubos de datos son cubos de varias dimensiones que pueden contener datos de: latitud y longitud, tiempo, distintas bandas y diferentes sensores. Fuente: https://r-spatial.github.io/stars/.

8.1.3 Datos de España

Tenemos la enorme suerte de que en nuestro país existe una comunidad muy activa que desarrolla múltiples paquetes R con información cartográfica, datos climáticos y de otra índole, ya preparados y perfectamente integrados con el resto de paquetes populares como ggplot2. Destacan:

  • mapSpain: facilita la creación de mapas de diferentes niveles administrativos de España. Incluye muchas herramientas, como por ejemplo una función para representar las regiones como cuadrados o hexágonos de forma esquemática, siguiendo una idea parecida a los gráficos creados por el paquete statebins. Estos son una alternativa simplificada a los mapas de coropletas.

  • climaemet: permite utilizar la API de datos de la AEMET, integrándolos de forma directa en nuestro flujo de trabajo con R. Es imprescindible conseguir previamente una API KEY

# Instala los paquetes sf y climaemet previamente

# Ejecuta una sola vez para obtener tu API key:
# aemet_api_key(apikey, overwrite = FALSE, install = FALSE)

library(climaemet)
library(ggplot2)
library(dplyr)

all_stations <- aemet_daily_clim(
  start = "2021-01-08", end = "2021-01-08",
  return_sf = TRUE
)

ggplot(all_stations) +
  geom_sf(aes(colour = tmed), shape = 19, size = 2, alpha = 0.95) +
  labs(
    title = "Average temperature in Spain",
    subtitle = "8 Jan 2021",
    color = "Max temp.\n(celsius)",
    caption = "Source: AEMET"
  ) +
  scale_colour_gradientn(
    colours = hcl.colors(10, "RdBu", rev = TRUE),
    breaks = c(-10, -5, 0, 5, 10, 15, 20),
    guide = "legend"
  ) +
  theme_bw() +
  theme(
    panel.border = element_blank(),
    plot.title = element_text(face = "bold"),
    plot.subtitle = element_text(face = "italic")
  )
Figura 8.2: Representación de la temperatura máxima en distintos puntos de España en un día (2021-01-08). Fuente: https://ropenspain.github.io/climaemet/.
  • airqualityES: datos diarios de medidas de calidad del aire en España en un periodo de 18 años (2001-2018), incluyendo varios agentes contaminantes. Los datos son publicados por el Gobierno de España en abierto.

8.2 Representación de datos espaciales

Dominic Royé ha creado recientemente un taller titulado Breve introducción a la cartografía con R, que muestra algunos ejemplos básicos sobre cómo manejar este tipo de datos.

Figura 8.3: Representación gráfica de la red de ríos de la cuenca hidrográfica del Ebro. El grosor de línea se corresponde con el caudal promedio de cada río. Fuente: https://github.com/dominicroye/Taller_Carto_RqueR_2024.
Figura 8.4: Modelo digital del terreno (MDT) de Suiza. Se ha añadido efecto de sombreado para interpretar mejor el relieve de cada zona. Fuente: https://github.com/dominicroye/Taller_Carto_RqueR_2024.

Por supuesto, se pueden realizar todo tipo de representaciones más clásicas, como los mapas de coropletas en versión estática (Figura 8.5) como interactiva (Figura 8.6), utilizando la biblioteca JavaScript Leaflet.

library(tidyverse)
library(sf)
system.file("gpkg/nc.gpkg", package="sf") |>
    read_sf() -> nc
nc.32119 <- st_transform(nc, 'EPSG:32119')
nc.32119 |>
    select(BIR74) |>
    plot(graticule = TRUE, axes = TRUE)
Figura 8.5: Mapa de coropletas clásico mostrando nacimientos en 1974 en los condados del estado de Carolina del Norte (EE.UU.). Fuente: https://r-spatial.org/book/01-hello.html.
library(mapview) |> suppressPackageStartupMessages()
mapviewOptions(fgb = FALSE)
nc.32119 |> mapview(zcol = "BIR74", legend = TRUE, col.regions = sf.colors)
Figura 8.6: Mapa de coropletas interactivo usando Leaflet. Fuente: https://r-spatial.org/book/01-hello.html.

8.3 Referencias para análisis de datos espaciales

Las dos fuentes principales para aprendizaje sobre procesado y análisis de datos espaciales en R son:

Además, se pueden recomendar otras referencias interesantes: