En este tutorial te explico cómo descargar y procesar datos climáticos del dataset TerraClimate directamente desde R, automatizando la descarga de múltiples años, recortando por país y exportando los resultados en formato GeoTIFF listo para análisis espacial.

El flujo que implementamos es completamente reproducible y escalable, ideal para proyectos de modelación climática, análisis de sequías o estudios de cambio climático.

🌎 ¿Qué es TerraClimate?

TerraClimate es un conjunto de datos climáticos mensuales de alta resolución (~4 km) que combina información de estaciones, reanálisis y climatologías históricas. Es ampliamente utilizado para estudios de:

  • Balance hídrico
  • Índices de sequía (como PDSI)
  • Temperatura y precipitación
  • Modelación ecológica
  • Agricultura y seguridad alimentaria

En este ejemplo trabajamos con el Palmer Drought Severity Index (PDSI).

🧠 Objetivo del flujo en R

El script realiza cuatro procesos clave:

  1. Genera automáticamente las URLs para múltiples años.
  2. Descarga archivos NetCDF (.nc) desde el servidor THREDDS.
  3. Recorta y enmascara los datos usando el límite oficial de Colombia.
  4. Exporta cada resultado como archivo GeoTIFF.

Todo esto se ejecuta con una función aplicada iterativamente.

📦 Librerías utilizadas

Trabajamos con un stack moderno y eficiente

require(pacman)
p_load(terra, fs, sf, tidyverse, gtools, glue)
🔗 Construcción automática de URLs

Generamos las rutas directamente hacia el servidor:

urls <- glue('http://thredds.northwestknowledge.net:8080/thredds/fileServer/TERRACLIMATE_ALL/data/TerraClimateV1.1_PDSI_{1995:2020}.nc')

Esto evita descargar manualmente año por año y permite escalar fácilmente el rango temporal.

🗺 Descarga del límite oficial de Colombia

Utilizamos geodata::gadm() para obtener el shapefile del país:

col0 <- geodata::gadm(country = 'COL', level = 0, path = './tmpr')

Este objeto se usa posteriormente como máscara espacial.

⚙️ Función principal de descarga y procesamiento

La función ejecuta tres operaciones:

  • Descarga del archivo .nc
  • Recorte espacial (crop)
  • Enmascaramiento (mask)
  • Exportación a .tif
make.down <- function(urle){
wrtn <- glue('{dout}/{basename(urle)}')
download.file(
url = urle,
destfile = wrtn,
mode = 'wb'
)
rstr <- rast(wrtn)
rstr <- terra::crop(rstr, col0)
rstr <- terra::mask(rstr, col0)
wrtn <- glue('{dirname(wrtn)}/COL_{basename(wrtn)}')
wrtn <- gsub('.nc', '.tif', wrtn)
terra::writeRaster(x = rstr, filename = wrtn, overwrite = TRUE)
}

Luego simplemente:

map(urls, make.down)
📁 Resultado final

Obtendrás una carpeta con archivos como:

🚀 Ventajas del enfoque

✔ Automatización completa
✔ Flujo reproducible
✔ Uso de terra (más eficiente que raster)
✔ Escalable a cualquier variable de TerraClimate
✔ Compatible con flujos avanzados (SPEI, modelación de especies, análisis agrícola)


🎥 Mira el video completo

En el video del canal Un Geógrafo en YouTube explico cada paso con detalle

Posted in

Deja un comentario