🗺️ ¿Cómo medir la infraestructura vial a nivel municipal con R?
Acabo de subir un nuevo video donde pasamos directo a la práctica para resolver esto. Les muestro paso a paso cómo armar el flujo de trabajo para cuantificar la infraestructura de transporte usando datos geoespaciales.
En el tutorial vemos cómo:
Filtrar la red vial (tipos 1 a 4) para quedarnos solo con lo importante.
Hacer una intersección espacial entre las vías y los municipios usando el paquete terra.
Automatizar el cálculo para sacar la longitud total (en kilómetros) por cada municipio.
Rematar con un mapa de calor para visualizar súper rápido qué zonas del país están mejor conectadas.
Si trabajan con SIG y quieren aprender a automatizar este tipo de geoprocesos en R, el tutorial te va a gustar.
En este vídeo tutorial explicamos cómo realizar un mapa bivariado entre las variables de rezago escolar y trabajo infantil a nivel municipal para Colombia, los datos son tomados del Departamento Nacional de Planeación de Colombia.
En el análisis de datos geográficos, a menudo no basta con ver una sola variable en el mapa. A veces, la pregunta real es: ¿Cómo interactúan dos fenómenos en un mismo territorio? Para responder a esto, una de las herramientas más potentes y visualmente atractivas es el Mapa Bivariado. En este post, les explicaré la lógica detrás de un script desarrollado en R para analizar la relación entre el Rezago Escolar y el Trabajo Infantil.
¿Qué es un mapa bivariado?
A diferencia de un mapa de coropletas tradicional (que usa una escala de un solo color), el mapa bivariado utiliza una matriz de colores. Esto nos permite identificar no solo dónde los valores son altos o bajos para una variable, sino dónde se combinan ambas situaciones.
La lógica del proceso
Para lograr este resultado, el flujo de trabajo se divide en tres grandes pilares:
1. Preparación de los datos espaciales
El primer paso consiste en cargar la información base (capas departamentales y bases de datos georeferenciadas). En este punto, es vital definir los límites geográficos (bbox) para que el mapa se centre exactamente en el área de interés, eliminando ruidos visuales innecesarios.
2. Clasificación bivariada (El corazón del mapa)
Aquí es donde ocurre la «magia». Utilizando la librería biscale, los datos se clasifican en grupos (generalmente terciles o cuantiles). El script toma dos variables independientes:
Eje X: Rezago Escolar.
Eje Y: Trabajo Infantil.
El resultado es una nueva columna en nuestros datos que combina ambas dimensiones en categorías únicas (por ejemplo: «Bajo-Bajo», «Alto-Bajo», «Alto-Alto»).
3. Composición y Diseño Cartográfico
Un buen mapa debe ser tan informativo como estético. La lógica del diseño incluye:
Capas de contexto: Se añade un fondo global y los límites departamentales para dar ubicación espacial.
Simbolización: Se aplica una paleta de colores específica (como DkCyan) que permite diferenciar claramente los cuadrantes de la matriz.
Elementos técnicos: Se incorporan la flecha de norte, la escala gráfica y etiquetas precisas para que cualquier lector pueda interpretar la escala.
El resultado final: La Leyenda
Lo más importante en un mapa bivariado es su leyenda en forma de diamante. El script no solo genera el mapa, sino que construye una leyenda independiente que se superpone al lienzo principal. Esta matriz nos dice, por ejemplo, que las zonas en los tonos más oscuros son aquellas donde ambos problemas sociales convergen con mayor intensidad.
Conclusión
Visualizar datos de esta manera nos permite identificar patrones críticos de forma inmediata, facilitando la toma de decisiones basada en datos geográficos. R, a través de potentes librerías como terra, sf y ggplot2, sigue siendo la herramienta líder para este tipo de análisis avanzado.
En este vídeo tutorial explico como hacer uso de la librería geoBounds dentro de R para acceder a información de shapefiles político administrativo a distintos niveles. Y podemos lograr mapas como este:
Fabio Alexander Castro Llanos: fabioalexandercastro@gmail.com wa.me/+573217850490
En este pequeño proyecto desarrollé una aplicación interactiva en R Shiny para visualizar el Palmer Drought Severity Index (PDSI) a nivel municipal en Colombia. La idea es bastante simple: poder explorar cómo cambian las condiciones de sequía o humedad mes a mes usando un mapa interactivo.
El resultado final es una app donde el usuario puede seleccionar año y mes, y automáticamente el mapa se actualiza mostrando el valor del índice en cada municipio.
La aplicación está construida usando sf, leaflet, tidyverse y Shiny, junto con algunos ajustes visuales usando bslib para darle una apariencia moderna
📦 Carga de librerías y datos
El primer paso consiste en cargar las librerías necesarias y leer los datos que vamos a usar.
En este caso se utilizan dos datasets principales:
Un shapefile simplificado de los municipios de Colombia
Además se agrega una leyenda dinámica que ayuda a interpretar los colores.
🌎 Resultado
El resultado es una pequeña aplicación interactiva que permite explorar rápidamente las condiciones de sequía o humedad en Colombia a escala municipal.
Este tipo de herramientas resulta especialmente útil para:
monitoreo climático
análisis agroclimático
exploración de datos espaciales en tiempo real
Y demuestra lo poderoso que puede ser R para construir aplicaciones geoespaciales interactivas con relativamente pocas líneas de código.
Si requieres asesoría en temas de SIG contactame a mi correo fabioalexandercastro@gmail.com o whatsapp https://wa.me/+573217850490
En este nuevo tutorial muestro cómo calcular la estadística zonal del PDSI para todos los municipios de Colombia y generar un archivo espacial final listo para análisis multitemporal.
Trabajamos con datos previamente descargados de TerraClimate, específicamente el Palmer Drought Severity Index (PDSI), y realizamos el procesamiento usando un flujo reproducible en R.
🔎 ¿Qué hace el script?
El código realiza tres procesos fundamentales:
1️⃣ Lectura y organización de rasters
Se listan todos los .tif del PDSI recortados a Colombia y se ordenan correctamente por año.
fles <- dir_ls('./tif/pdsi', regexp = '.tif$')
fles <- grep('COL', fles, value = T)
fles <- mixedsort(fles)
2️⃣ Cálculo de estadística zonal
Utilizamos exactextractr::exact_extract() para calcular el promedio mensual del PDSI por municipio:
znal <- exactextractr::exact_extract(
x = rstr,
y = st_as_sf(mpio),
fun = 'mean'
)
El resultado genera:
12 columnas (mean.PDSI_1 a mean.PDSI_12)
Una fila por municipio
Un identificador temporal por año
Todo queda organizado en una tabla estructurada.
3️⃣ Creación del archivo espacial final
Luego hacemos el join con el shapefile municipal y exportamos:
st_write(znal, './gpkg/zonal_pdsi.gpkg')
El resultado es un GeoPackage listo para:
Mapas temáticos
Dashboards en Shiny
Modelos econométricos espaciales
Análisis multitemporal por municipio
🎥 Mira el paso a paso completo
En el video del canal Un Geógrafo en YouTube explico:
Por qué usar exactextractr en lugar de terra::extract
Cómo estructurar datos multitemporales
Buenas prácticas para zonal statistics
Errores comunes y cómo evitarlos
👉 Te invito a ver el tutorial completo en el canal.
Si requieres asesoría en temas de SIG contactame a mi correo fabioalexandercastro@gmail.com o whatsapp https://wa.me/+573217850490
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:
Genera automáticamente las URLs para múltiples años.
Descarga archivos NetCDF (.nc) desde el servidor THREDDS.
Recorta y enmascara los datos usando el límite oficial de Colombia.
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:
✔ 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
En este video presento un flujo completo y reproducible en R para identificar zonas climáticamente idóneas para el cultivo de café bajo sombra, inspirado en el artículo científico:
“A coffee corridor for biodiversity and livelihoods: climatic feasibility of shade coffee cultivation in western Rwanda” Trees, Forests and People 🌱📄
Aunque el estudio original se desarrolla en África oriental, aquí adapto su enfoque metodológico al contexto colombiano, utilizando datos climáticos globales y herramientas SIG en R.
🧭 Área de estudio y datos utilizados
El análisis se centra en los departamentos de Quindío, Risaralda y Caldas, una de las principales regiones cafeteras de Colombia ☕🇨🇴.
Se emplean datos oficiales y abiertos:
🌡️🌧️ Variables bioclimáticas (BIO) de WorldClim v2.1
🗺️ Límites administrativos de GADM
📦 Paquetes especializados de R para análisis espacial (terra, sf, tmap, geodata)
📊 Variables climáticas consideradas
Siguiendo el artículo de referencia, se seleccionan cinco variables bioclimáticas clave para el cultivo de Coffea arabica:
BIO1: Temperatura media anual 🌡️
BIO2: Rango diurno de temperatura
BIO5: Temperatura máxima del mes más cálido 🔥
BIO6: Temperatura mínima del mes más frío ❄️
BIO12: Precipitación anual 🌧️
Cada variable se recorta y enmascara a la zona de estudio para asegurar coherencia espacial.
🧮 Reclasificación climática (idoneidad)
Las variables climáticas se reclasifican en cinco niveles de idoneidad, desde:
❌ No apto
⚠️ Marginal
✅ Apto
🌿 Muy apto
Esto se realiza mediante matrices de reclasificación, construidas a partir de rangos climáticos reportados en la literatura agroecológica. El resultado es un conjunto de capas raster comparables entre sí.
⚖️ Análisis multicriterio (Weighted Linear Combination)
Para integrar las variables se aplica un Análisis Multicriterio por Combinación Lineal Ponderada (WLC):
Todas las variables reciben el mismo peso (0.25)
Se asume igual importancia relativa de cada factor climático
El resultado es un mapa continuo de idoneidad climática
Finalmente, el índice se normaliza a un rango de 0 a 1, donde:
0 = climáticamente no apto
1 = condiciones óptimas para café bajo sombra
📈 Este enfoque permite sintetizar información climática compleja en un solo indicador espacial interpretable.
🗺️ Visualización cartográfica
El resultado se representa mediante un mapa temático en tmap, incorporando:
🎨 Paleta de colores gradual por clases de idoneidad
🧭 Rosa de los vientos
📏 Barra de escala
🏷️ Etiquetas departamentales
🖼️ Exportación en alta resolución (300 dpi)
El mapa final resume visualmente las zonas con mayor potencial climático para el café, bajo un enfoque reproducible y transparente.
🔁 Reproducibilidad y aplicación
Todo el proceso se desarrolla 100% en R, lo que permite:
🔁 Repetir el análisis en otras regiones
🌱 Adaptarlo a otros cultivos
🌍 Incorporar escenarios climáticos futuros
📊 Integrarlo en estudios de planificación territorial
Este tipo de análisis es ampliamente utilizado en agroecología, SIG ambiental y estudios de cambio climático, y aquí se presenta de forma accesible para la comunidad técnica.
La disponibilidad de áreas verdes urbanas es un indicador clave para la calidad de vida, la salud pública y la resiliencia climática de las ciudades. En este artículo presento un flujo de trabajo reproducible en R para identificar, cuantificar y mapear las áreas verdes dentro de la ciudad de Cali, combinando límites oficiales con información abierta proveniente de OpenStreetMap (OSM).
El objetivo no es solo hacer un mapa “bonito”, sino calcular un indicador espacial sólido: la proporción del área urbana cubierta por zonas verdes.
🧰 1. Preparación del entorno de trabajo
El análisis se desarrolla completamente en R, utilizando un conjunto de librerías especializadas en datos espaciales, visualización y manejo reproducible de rutas:
Este stack permite:
trabajar con geometrías vectoriales modernas (sf),
consultar directamente OpenStreetMap (osmdata),
realizar operaciones espaciales robustas (terra),
y producir cartografía publicable (ggplot2, ggspatial).
El uso de here asegura que el proyecto sea portable y reproducible, una práctica fundamental en análisis espaciales profesionales.
🗺️ 2. Carga y preparación de los límites oficiales
El análisis parte de shapefiles oficiales de:
barrios urbanos,
corregimientos.
Estos límites definen el universo espacial válido del estudio.
🌳 3. ¿Dónde están las áreas verdes en OpenStreetMap?
A diferencia de los catastros oficiales, OpenStreetMap no tiene una única capa de “zonas verdes”. Estas áreas están distribuidas en múltiples etiquetas (tags), entre ellas:
leisure: parques, jardines, zonas recreativas,
landuse: bosques, praderas,
natural: vegetación natural.
Para manejar esta complejidad, se define una función personalizada que:
consulta OSM por tipo de cobertura,
descarga los polígonos,
los proyecta correctamente,
y los recorta al límite oficial de Cali.
✂️ 4. Recorte espacial: solo lo que está dentro de Cali
Una vez descargados los polígonos desde OSM, se realiza una intersección espacial:
Este paso es fundamental porque:
evita sobreestimar áreas,
elimina elementos periféricos,
asegura métricas coherentes con la ciudad real.
Sin recorte espacial, las métricas urbanas no son defendibles.
🧩 5. Integración de todas las áreas verdes
Las distintas capas provenientes de OSM se limpian y se unen en una sola geometría temática:
Cada polígono conserva:
su identificador,
la clave OSM (key),
el tipo de cobertura (value).
Esto permite auditoría, análisis posterior y extensiones del estudio.
📐 6. Cálculo de la cobertura verde urbana
Con todas las áreas integradas, se calcula el indicador central del anál
Este valor representa el porcentaje del área total de la ciudad cubierto por zonas verdes, un indicador ampliamente utilizado en:
planeación urbana,
estudios de sostenibilidad,
análisis de adaptación al cambio climático.
Aquí pasamos de la cartografía descriptiva a un resultado cuantitativo interpretable.
🗺️ 7. Cartografía final de las áreas verdes
El resultado se presenta mediante un mapa claro y sobrio, pensado para comunicación académica y técnica:
Vídeo tutorial donde explicamos todo esto:
Deseas contactarme para guiarte en tu proyecto de SIG (pregrado, maestría o doctorado), escríbeme al Whatsapp: +57 3217850490