Saltar al contenido principal
VigíaDocumentación

Documentación

Guía de uso, funcionalidades, fuentes de datos, arquitectura y licencias de código abierto de Vigía.

Resumen

Vigía es una plataforma de código abierto para la evaluación y gestión de riesgos, con cobertura nacional y el mayor nivel de detalle en sus tres municipios de estudio original en el Valle del Cauca, Colombia: Sevilla, Caicedonia y Zarzal. Cruza amenazas naturales de deslizamiento, inundación e incendio forestal con la población y la infraestructura crítica expuestas, combinando índices de amenaza estáticos con pronósticos y monitoreo en vivo de fuentes abiertas. Fuera de esos tres municipios, algunas capas (deslizamientos, inundaciones, precipitación, clima) siguen respondiendo con datos reales, pero de menor resolución y a partir de fuentes distintas, señaladas explícitamente — ver Fuentes de datos y Metodología.

La aplicación no mantiene una base de datos propia: cada vista es una capa de agregación en tiempo real sobre servicios geoespaciales públicos (ArcGIS, WMS, WMTS, APIs REST) — descrito en detalle en Arquitectura y Fuentes de datos.

Índices de amenaza y créditos

Los índices de susceptibilidad a deslizamientos e incendios forestales que sostienen esta plataforma fueron desarrollados por RED LabOT, la Red de Laboratorios de Observación de la Tierra de las Américas.

RED LabOT — Red de Laboratorios de Observación de la Tierra de las Américas

NASA Lifelines

Vigía forma parte de la comunidad de NASA Lifelines, una iniciativa de la División de Ciencias de la Tierra de la NASA y la firma DevGlobal que impulsa el uso de datos satelitales para fortalecer la acción humanitaria.

NASA Lifelines

Guía de uso

Cuatro pasos para pasar de abrir Vigía a entender el riesgo de tu vereda, con una captura de pantalla real de cada uno. Cada paso trae además una nota técnica más corta, por si quieres saber exactamente de dónde sale cada número.

Elige una amenaza para vigilar, en cualquier municipio del país

Cuando abres Vigía, ya estás viendo un mapa — por defecto, el de Sevilla. En la barra lateral, el selector de "Ubicación" (Departamento y Ciudad/Municipio) cambia el mapa a cualquiera de los 1.122 municipios de Colombia. A la derecha hay seis franjas verticales con un ícono cada una: Deslizamientos, Inundaciones, Incendios, Precipitación, Clima y Sismología (más Riesgo compuesto, que junta las cinco amenazas). Clima es un reporte del tiempo, no una amenaza. Toca cualquier franja y el mapa completo cambia a esa vista — no se abre una página nueva, todo pasa en la misma pantalla.

Panel principal de Vigía mostrando el mapa de deslizamientos de Sevilla, el selector de departamento y municipio, y las seis franjas de las otras amenazas a la derecha
Nota técnica

Cada amenaza carga su propio mapa Leaflet con capas independientes que se activan y desactivan con las casillas de la esquina superior izquierda (por ejemplo, "Humedad del suelo (SMAP)" o "Fallas geológicas (SGC)"). La leyenda de colores está siempre en la esquina inferior — de verde (muy bajo) a rojo (muy alto). Sevilla, Caicedonia y Zarzal siguen teniendo el mayor nivel de detalle (índices de campo de RED LabOT); cualquier otro municipio recibe los mismos modelos propios calculados en vivo, con las estimaciones señaladas donde aplican.

Descubre cuánta gente vive en riesgo, en cualquier municipio

En la barra lateral del panel principal, la tarjeta de población te muestra cuánta gente vive en el municipio seleccionado, separada por año y por si vive en el pueblo o en el campo. Cambia el municipio con el selector de ubicación —por ejemplo, a Santiago de Cali— y las cifras se actualizan solas, para cualquiera de los 1.122 municipios del país.

Barra lateral de Vigía con el selector de departamento y municipio en Santiago de Cali, y la tarjeta de población mostrando población urbana y rural del municipio
Nota técnica

Los números vienen de las proyecciones poblacionales del DANE (2020–2035, actualización post-COVID del CNPV 2018), extraídas una sola vez para los 1.122 municipios y versionadas como JSON estático — sin llamada de red por consulta. El desglose urbano/rural existe a nivel nacional; los modelos de amenaza por vereda mostrados debajo se calculan para el municipio seleccionado en cada momento.

Revisa tu propio nivel de riesgo

El botón celeste "Conoce tu nivel de exposición", en la esquina superior izquierda del panel principal, es la forma más rápida de saber qué tan expuesto estás tú. Elige primero tu municipio y después tu vereda (o "Casco Urbano" si vives en el pueblo). El mapa se acerca a tu zona y muestra las cuatro amenazas juntas, ya activadas.

Ventana de exposición con Sevilla y Casco Urbano seleccionados, el mapa de las cuatro amenazas y el botón Exportar como PDF
Nota técnica

Cada casilla de la leyenda (Deslizamientos, Inundaciones, Incendios, Precipitación) se puede apagar por separado para comparar una amenaza a la vez sobre la misma zona. El selector de subdivisión se llama "Vereda" en municipios genuinamente rurales, o "Zona" en ciudades grandes (más de 100.000 habitantes, el umbral de categoría de Ley 617 de 2000) — misma capa de límites de Esri Colombia en ambos casos, solo cambia el término mostrado porque en una ciudad grande esas subdivisiones no son uniformemente rurales. El botón "Exportar como PDF" — visible en la esquina superior derecha de esta ventana — captura el mapa exactamente como lo estás viendo y genera un PDF descargable para guardar o imprimir.

Abre el reporte completo de una vereda

Dentro del mapa de "Riesgo compuesto", toca cualquier vereda coloreada. Se abre una ventana con el nombre del lugar, el nivel de riesgo (Bajo, Medio, Alto...), qué hacer al respecto (Informar, Prepararse o Actuar) y el detalle de cada una de las cinco amenazas por separado, sismología incluida. También tiene su propio botón para exportar ese reporte a PDF.

Reporte de riesgo compuesto para la vereda Maulen en Sevilla, con el nivel de riesgo, el desglose de las cinco amenazas incluida sismología, y el botón Exportar PDF
Nota técnica

El nivel de riesgo compuesto es el mayor entre las cinco amenazas normalizadas (la amenaza más alta gobierna, siguiendo la doctrina de la OMM/GDACS), mientras que el puntaje de 0 a 1 es un promedio ponderado al estilo del Índice de Riesgo INFORM. El texto del reporte es una plantilla que se rellena con los mismos números que ya se ven en el mapa — no usa generación de lenguaje ni la puerta de enlace de IA de la app.

Otros detalles útiles

Vistas completas por amenaza

Los enlaces del menú superior (Deslizamientos, Inundaciones, Incendios, Precipitación) abren la versión de página completa de cada mapa, con el mismo contenido que el panel de inicio pero con más espacio en pantalla — útil para monitoreo prolongado o pantallas grandes.

Tema claro y oscuro

El ícono de sol/luna, en la esquina superior derecha de cualquier página, alterna entre tema claro, oscuro y el tema del computador. Vigía recuerda cuál elegiste la próxima vez que abras la página.

Uso con teclado y lectores de pantalla

Todas las páginas incluyen un enlace "Saltar al contenido principal" al presionar Tab por primera vez, roles y etiquetas ARIA en los controles interactivos, y regiones aria-live en los paneles que se actualizan con datos en vivo — para que un lector de pantalla anuncie los cambios sin que el usuario tenga que buscarlos.

Funcionalidades

Qué hace cada módulo de la plataforma.

Deslizamientos
NacionalMayor detalle en Sevilla, Caicedonia y Zarzal
  • Mapa de amenaza por vereda coloreado por un modelo propio inspirado en LHASA (NASA): pendiente del terreno, proximidad a vías y proximidad a una falla geológica (SGC) como susceptibilidad estática, ajustada por un disparador de lluvia reciente frente a su normal histórica. Calculado en las 55 veredas de los tres municipios de estudio, incluida Zarzal.
  • Población, escuelas, hospitales, farmacias e infraestructura crítica expuestas por nivel de amenaza — el índice de campo de RED LabOT en Sevilla y Caicedonia; en cualquier otro municipio del país, una estimación por área a partir de la capa nacional de amenaza del SGC, población del DANE e infraestructura de OpenStreetMap (ver Metodología), señalada explícitamente como estimación y no como el mismo índice de campo.
  • Capa opcional de fallas geológicas del SGC (líneas), la misma fuente que alimenta el factor de proximidad a fallas del modelo — mostrada como referencia visual, no como un cálculo aparte.
  • Superposición de pronóstico de humedad del suelo de raíz (NASA SMAP L4), actualizada cada 3–4 días.
  • "Sitios críticos": puntos de daño vial relevados en campo por la Secretaría de Infraestructura del Valle del Cauca (solo Sevilla, Caicedonia, Zarzal).
Inundaciones
NacionalMayor detalle en Sevilla, Caicedonia y Zarzal
  • Polígonos de susceptibilidad estática a inundación por zona (RED LabOT) — solo cubre el área zonificada de Sevilla y Caicedonia.
  • Mapa de amenaza por vereda coloreado por un modelo propio de inundación: zonificación oficial (donde exista), distancia a la quebrada o río más próximo y planicie del terreno (pendiente reutilizada del modelo de deslizamiento). Calculado en las 69 veredas de los tres municipios de estudio, incluida Zarzal — la única capa de amenaza por inundación con esa cobertura.
  • Pronóstico de caudal en vivo de GEOGLOWS, hasta 6 estaciones por municipio: las curadas y verificadas en campo primero (Sevilla, Caicedonia, Zarzal), completadas con tramos adicionales resueltos en vivo por coordenadas para cualquier municipio del país, ordenados de mayor a menor caudal actual — la de mayor caudal se destaca a ancho completo.
  • Superposición de tasa de precipitación en vivo (NASA GPM IMERG, actualizada cada ~30 minutos).
Incendios
SevillaCaicedonia
  • Polígonos de amenaza por incendio forestal, por vereda.
  • Índice de riesgo de incendio (FWI) en vivo de Copernicus GWIS/EFFIS, con selector de día de pronóstico — activo por defecto.
  • Detecciones activas de incendio de NASA FIRMS — MODIS, VIIRS y Sentinel-3 activos por defecto — con radio de búsqueda configurable.
Precipitación
NacionalMayor detalle en Sevilla, Caicedonia y Zarzal
  • Lluvia acumulada de los últimos 7 días con dato válido, por vereda, calculada a partir del punto diario de NASA POWER (reanálisis MERRA-2/GEOS-IT). En los tres municipios de estudio es la única capa de amenaza con la misma cobertura en Zarzal que en Sevilla y Caicedonia.
  • Superposición de tasa de precipitación en vivo (NASA GPM IMERG, la misma capa satelital que ofrece el mapa de inundaciones).
  • Niveles de referencia (Bajo/Moderado/Alto/Muy alto) por umbrales simples de acumulación, no un modelo de amenaza calibrado.
  • Sigue al municipio seleccionado en cualquier parte del país — el mapa y el panel inferior recargan las veredas de ese municipio en lugar de quedarse fijos en uno solo.
Clima
NacionalMayor detalle en Sevilla, Caicedonia y Zarzal
  • Reporte meteorológico convencional por vereda con datos de Open-Meteo (modelos numéricos de pronóstico, no observación directa): temperatura actual, sensación térmica y estado del cielo (despejado, nublado, lluvia o tormenta), con la vereda coloreada por su banda de temperatura.
  • Un marcador de condiciones actuales por municipio, en su cabecera, con temperatura y glifo del estado del tiempo — calculado para los 1.122 municipios del país.
  • El mapa alterna con el zoom: alejado, un marcador coloreado por banda de temperatura por cada municipio del país; al acercarse al municipio seleccionado, el relleno por vereda de ese municipio.
  • Al hacer clic en una vereda: su pronóstico a 7 días (máx/mín, estado del cielo y probabilidad de lluvia) y una breve perspectiva de racha seca. Mismo nivel de detalle en cualquier municipio seleccionado.
  • No es una capa de amenaza y no entra en el riesgo compuesto: es información meteorológica de referencia.
Población
Nacional
  • Población proyectada del DANE (2020–2035, todos los municipios del país) del municipio seleccionado, con desagregación urbano/rural y hombres/mujeres, en la barra lateral del panel principal.
  • Se actualiza al cambiar de municipio; cuando no existe desglose oficial para el municipio elegido, se indica explícitamente en lugar de mostrar cifras fabricadas.
Conoce tu nivel de exposición
Por veredaCasco Urbano
  • Selector de municipio → vereda (o "Casco Urbano", el núcleo urbano de la cabecera municipal).
  • Mapa enfocado en la zona elegida con las cuatro amenazas y sus pronósticos disponibles como capas independientes.
  • Exportación a PDF del mapa capturado junto con un resumen de las amenazas activas.
Infraestructura
OpenStreetMap
  • Puntos de interés (salud, financiero, gobierno, social, comercial) clasificados desde OpenStreetMap y mostrados junto a cada panel de amenaza.

Fuentes de datos

Vigía no tiene una base de datos propia: cada vista consulta directamente estos servicios públicos, en su mayoría abiertos y sin necesidad de autenticación.

Índices de amenaza

Capas estáticas publicadas en ArcGIS Online por RED LabOT y la Secretaría de Infraestructura del Valle del Cauca — abiertas, sin autenticación.

Índice de susceptibilidad a deslizamientos

RED LabOT

ArcGIS FeatureServer

~11.721 puntos con nivel de susceptibilidad, puntaje y conteos de población y de infraestructura crítica (escuelas, hospitales, farmacias) por punto. Ya no colorea el mapa de deslizamientos (ver el modelo propio, abajo); sigue siendo la fuente de los conteos de población e infraestructura del panel de exposición por nivel de amenaza. Cubre Sevilla y Caicedonia; Zarzal no tiene registros por estar en el valle plano.

Cobertura
Sevilla, Caicedonia
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Capa estática; la app la relee cada hora
Ver servicio
Modelo propio de amenaza por deslizamiento

Vigía (cálculo propio, inspirado en NASA LHASA v1)

Cálculo propio sobre APIs REST abiertas

Combina pendiente del terreno (DEM Copernicus GLO-30, vía la API de elevación de Open-Meteo), distancia a la vía más cercana (red vial de OpenStreetMap/Overpass), distancia a la falla geológica más próxima (capa del SGC, ver la ficha siguiente), distancia al movimiento en masa histórico más próximo (inventario del SGC, ver la ficha siguiente) y una anomalía de lluvia reciente frente a su propia línea base histórica de 3 años (archivo histórico de Open-Meteo), calculado en el centroide de cada vereda. Reemplaza al índice de RED LabOT como fuente del color del mapa de deslizamientos — es un modelo propio de esta app, no un índice oficial publicado, pero documentado y con sus factores visibles en el popup de cada vereda. Ver la sección "Metodología" más abajo para el detalle completo, paso a paso, de cómo se calcula.

Cobertura
Sevilla, Caicedonia, Zarzal (~55 centroides de vereda)
Licencia / términos
N/A — calculado por la app a partir de fuentes abiertas
Actualización
Pendiente y vías cambian poco (cache de 30 días y 6 horas); lluvia recalculada cada hora
Ver servicio
Fallas geológicas — Atlas Geológico de Colombia

Servicio Geológico Colombiano (SGC)

ArcGIS FeatureServer

37 trazas de falla (tipo y nombre, p. ej. "Falla de Cauca-Almaguer") que intersectan el área de estudio. Usada dos veces: como cuarto factor del modelo propio de amenaza (distancia real punto-a-segmento hasta la traza más próxima, 30% del factor estático) y como capa opcional independiente en el mapa ("Fallas geológicas (SGC)"), mostrada como líneas discontinuas con su tipo y nombre en el popup. Encontrada a partir de un enlace compartido por el equipo a datos.sgc.gov.co.

Cobertura
Nacional (recortada al área de estudio)
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Cartografía geológica estática; la app la relee cada 30 días
Ver servicio
Inventario de movimientos en masa

Servicio Geológico Colombiano (SGC)

ArcGIS FeatureServer

55 puntos históricos (deslizamiento, caída, flujo, reptación y deformación gravitacional, con tipo y subtipo, pero sin fecha de ocurrencia confiable) dentro del área de estudio, derivados del inventario nacional SIMMA. Usada dos veces: como quinto factor del modelo propio de amenaza (distancia Haversine al punto más próximo, 30% del factor estático — el mayor peso del factor estático, por ser evidencia directa de inestabilidad pasada) y como capa opcional independiente en el mapa ("Movimientos en masa históricos (SGC)"), mostrada como puntos con su tipo y subtipo en el popup. Solo 55 puntos en toda la zona de estudio: es un complemento a los otros factores, no un sustituto — nunca fue pensada como un catálogo exhaustivo de eventos.

Cobertura
Nacional (recortada al área de estudio)
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Inventario histórico estático; la app la relee cada 30 días
Ver servicio
Amenaza nacional por movimiento en masa (% de área por nivel)

Servicio Geológico Colombiano (SGC)

ArcGIS MapServer (REST)

Capa nacional "Amenaza_Departamento_Municipios" (Mapa_Nacional_Amenaza_Mov_Masa_100K) — un registro por municipio de todo el país, consultado por código DIVIPOLA, con el % del área municipal en cada uno de cuatro niveles (baja/media/alta/muy alta; no distingue un nivel "muy bajo" propio). Fuera de Sevilla y Caicedonia, esta capa alimenta la estimación nacional de exposición (población DANE × % de área por nivel, más infraestructura crítica de OpenStreetMap) — una sustituta de menor resolución frente al índice de campo de RED LabOT, no un reemplazo. Ver la sección "Metodología" para el detalle paso a paso.

Cobertura
Nacional
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Cartografía de amenaza estática; la app la relee cada semana
Ver servicio
Amenaza por incendios forestales

RED LabOT

ArcGIS FeatureServer

Polígonos de amenaza por incendio forestal, por vereda rural.

Cobertura
Sevilla, Caicedonia
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Capa estática; la app la relee cada hora
Ver servicio
Susceptibilidad a inundaciones

RED LabOT

ArcGIS FeatureServer

Polígonos de zonificación estática de susceptibilidad a inundación. Sigue siendo el insumo de mayor peso (50%) del modelo propio de amenaza por inundación, donde tiene cobertura; ya no colorea la capa "Modelo propio de inundación" del mapa por sí sola.

Cobertura
Sevilla, Caicedonia
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Capa estática; la app la relee cada hora
Ver servicio
Modelo propio de amenaza por inundación

Vigía (cálculo propio)

Cálculo propio sobre capas ArcGIS abiertas

Combina la clase de zonificación oficial (donde exista, 50%), distancia a la quebrada o río más próximo (capa pública de hidrografía, ver la ficha siguiente, 30%) y planicie del terreno —reutilizando la pendiente ya calculada por el modelo de amenaza por deslizamiento, 20%—, calculado en el centroide de cada vereda. Extiende la zonificación oficial a los tres municipios, incluido Zarzal, con nivel de detalle por vereda. Ver la sección "Metodología" más abajo para el detalle completo, paso a paso.

Cobertura
Sevilla, Caicedonia, Zarzal (69 centroides de vereda)
Licencia / términos
N/A — calculado por la app a partir de fuentes abiertas
Actualización
Zonificación e hidrografía cambian poco (cache de 1 hora y 30 días); pendiente reutilizada del modelo de deslizamiento
Ver servicio
Quebradas y ríos con nombre

RED LabOT

ArcGIS FeatureServer

19 trazas de quebrada o río con nombre (p. ej. "Río Palomino", "Quebrada Morelia") que cubren toda el área de estudio, incluida Zarzal. Usada como segundo factor del modelo propio de amenaza por inundación (distancia real punto-a-segmento hasta la traza más próxima, 30% del puntaje) — es el único factor de ese modelo con cobertura completa en Zarzal. Cada traza también trae un identificador (rivid) que coincide con el esquema de tramos de GEOGLOWS, ya usado en el mismo mapa para el pronóstico de caudal en vivo — un posible cruce futuro, señalado en la metodología pero no implementado todavía.

Cobertura
Sevilla, Caicedonia, Zarzal
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Hidrografía estática; la app la relee cada 30 días
Ver servicio
Sitios críticos (daño vial)

Secretaría de Infraestructura del Valle del Cauca

ArcGIS Server (REST)

94 puntos de daño vial relevados en campo en un único levantamiento (2019-07-15) — información histórica de sitios conocidos, no un monitoreo en vivo.

Cobertura
Sevilla, Caicedonia, Zarzal
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Levantamiento único; releído cada 24 h
Ver servicio

Pronósticos y monitoreo en vivo

Servicios internacionales gratuitos de agencias científicas y ambientales, sin necesidad de clave salvo donde se indica.

Pronóstico de caudal fluvial

GEOGLOWS v2 (ECMWF)

API REST (JSON)

Pronóstico determinístico de caudal por tramo de río, evaluado contra períodos de retorno calculados con el registro retrospectivo histórico del mismo tramo. El panel de inundaciones muestra hasta 6 tramos por municipio: primero las estaciones curadas y verificadas en campo de Sevilla, Caicedonia y Zarzal, y luego —para completar hasta 6, en esos tres municipios y en cualquier otro— tramos adicionales resueltos en vivo por `getriverid` a partir de centroides de vereda, sin repetir tramo, ordenados de mayor a menor caudal actual.

Cobertura
Red fluvial global (recortada al área de estudio)
Licencia / términos
Acceso abierto
Actualización
Pronóstico diario; retrospectivo semanal
Ver servicio
Detecciones activas de incendio (VIIRS)

NASA FIRMS (LANCE, EOSDIS)

API CSV (requiere clave gratuita)

Focos de calor casi en tiempo real detectados por los satélites VIIRS (Suomi NPP y NOAA-20/21).

Cobertura
Global (recortada al área de estudio)
Licencia / términos
Datos públicos de la NASA
Actualización
Varias veces al día; la app cachea 15 min
Ver servicio
Humedad del suelo de raíz (SMAP L4)

NASA GIBS (EOSDIS)

WMTS (teselas de imagen)

Mosaico de teselas WMTS de humedad del suelo, usado como pronóstico complementario en el mapa de deslizamientos.

Cobertura
Global
Licencia / términos
Datos públicos de la NASA
Actualización
Compuesto continuo, ~3–4 días de latencia
Ver servicio
Tasa de precipitación (GPM IMERG)

NASA GIBS (EOSDIS)

WMTS (teselas de imagen)

Mosaico de teselas WMTS de precipitación de 2 km, usado como capa satelital en los mapas de inundaciones y precipitación.

Cobertura
Global
Licencia / términos
Datos públicos de la NASA
Actualización
Cada ~30 minutos
Ver servicio
Lluvia acumulada por punto (PRECTOTCORR)

NASA POWER (LARC)

API REST (JSON)

Precipitación diaria puntual por reanálisis MERRA-2 (datos asentados) o GEOS-IT (últimos días, casi en tiempo real) — no es GPM/satelital directo. Consultada una vez por centroide de vereda para el acumulado de 7 días del mapa de precipitación.

Cobertura
Global (recortada al área de estudio)
Licencia / términos
Datos públicos de la NASA
Actualización
Diaria; la app cachea 3 horas
Ver servicio
Lluvia acumulada por estación automática

IDEAM

API REST (Socrata/JSON)

Lecturas de precipitación cada 10 minutos de estaciones automáticas, expuestas en el portal de datos abiertos. Fuente alternativa (junto a NASA POWER) para el modo histórico del mapa de precipitación: más precisa donde hay estación cercana, pero solo 2 estaciones caen dentro de un radio de 20 km del área de estudio (Zarzal y Bugalagrande), sin cobertura en Caicedonia ni buena parte de Sevilla.

Cobertura
2 estaciones dentro de 20 km del área de estudio
Licencia / términos
Datos abiertos de Colombia (datos.gov.co)
Actualización
Cada ~10 minutos; la app cachea 3 horas
Ver servicio
Lluvia mensual del año en curso (archivo histórico)

Open-Meteo

API REST (JSON)

Precipitación diaria por análisis ECMWF IFS HRES (últimos ~2 meses, asimila observaciones reales de estaciones y radiosondas) con reanálisis ERA5/ERA5-Land más atrás en el año — no es una lectura satelital directa. Usada para la línea de comparación del año en curso en el histograma de climatología, en lugar de NASA POWER: su capa casi en tiempo real (derivada de GPM IMERG) mostró sobrestimaciones notables de lluvia en este terreno montañoso durante las pruebas.

Cobertura
Global (recortada al área de estudio)
Licencia / términos
Uso no comercial gratuito, sin clave
Actualización
Diaria, con ligero retraso en los días más recientes; la app cachea 1 hora
Ver servicio
Pronóstico del tiempo por vereda (forecast)

Open-Meteo

API REST (JSON)

Pronóstico meteorológico por punto (temperatura actual, sensación térmica, código de estado del cielo WMO y pronóstico a 7 días con máx/mín y probabilidad de lluvia), derivado de modelos numéricos del ECMWF y otros — no es observación directa. Consultado una vez por centroide de vereda para el mapa de clima, que es un reporte del tiempo de referencia y no una capa de amenaza. El mapa alterna la representación según el zoom: alejado (vista nacional), un marcador circular coloreado por banda de temperatura por cada municipio del país; al acercarse al municipio seleccionado (donde `RegionRecenter` encuadra la vista), el relleno por vereda de ese municipio.

Cobertura
Global (según municipio seleccionado; marcadores nacionales al alejar el zoom)
Licencia / términos
Uso no comercial gratuito, sin clave
Actualización
Actualizado cada hora; la app cachea 3 horas
Ver servicio
Índice de riesgo de incendio (FWI)

Copernicus GWIS / EFFIS (Comisión Europea, JRC)

WMS

Pronóstico diario del Índice Meteorológico de Incendio (Fire Weather Index), derivado de datos meteorológicos del ECMWF.

Cobertura
Global
Licencia / términos
Política de datos abiertos de Copernicus
Actualización
Pronóstico diario, hasta 7 días
Ver servicio

Demografía y límites administrativos

Fuentes gubernamentales y de datos abiertos usadas para población, veredas y cascos urbanos.

Proyecciones de población municipal

DANE

Descarga estática (Excel), extraída a JSON

Proyecciones de población municipal por área, sexo y edad 2020–2035 (modelo cohorte-componente, actualización post-COVID-19). Publicado solo como un libro de cálculo nacional de ~70 MB sin API por municipio, así que se extrajo una vez — para los 1.122 municipios del país, no solo los tres de estudio — y se versiona como JSON estático en el repositorio. Es la fuente de población total usada por la estimación nacional de exposición a deslizamientos fuera de Sevilla/Caicedonia (ver la ficha del SGC); no incluye desagregación por edad a nivel nacional (solo urbano/rural y hombres/mujeres), así que esa estimación no reporta cifras de niñez ni de adultos mayores fuera de esos dos municipios.

Cobertura
Nacional
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Última publicación: DANE, actualización post-COVID-19; sin llamada de red en la app
Ver servicio
Zona urbana (cabeceras municipales)

DANE — Marco Geoestadístico Nacional

ArcGIS FeatureServer

Límites de la cabecera municipal de cada municipio, usados para el pseudo-vereda "Casco Urbano" del selector de exposición.

Cobertura
Sevilla, Caicedonia, Zarzal
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Límites administrativos estáticos; releído cada semana
Ver servicio
Veredas de Colombia

Esri Colombia (Datos Abiertos)

ArcGIS FeatureServer

Límites administrativos de las veredas rurales de cada municipio.

Cobertura
Sevilla, Caicedonia, Zarzal
Licencia / términos
Datos abiertos, sin autenticación
Actualización
Límites administrativos estáticos; releído cada semana
Ver servicio

Infraestructura

Puntos de interés comunitarios, con la misma filosofía de datos abiertos que el resto de la plataforma.

Puntos de interés (OSM)

OpenStreetMap (API Overpass)

API Overpass (POST)

Comercios, oficinas, y equipamiento de salud, financiero, gubernamental y social, clasificados en cinco categorías para el desglose de "Infraestructura por categoría". La consulta a Overpass se recorta al bbox del municipio seleccionado, así que sigue a cualquier municipio del país, no solo a los tres de estudio. Una consulta aparte, con las mismas categorías escuela/hospital/farmacia/estación de bomberos-policía, alimenta el conteo de infraestructura crítica reutilizado por la estimación nacional de exposición a deslizamientos (ver la ficha del SGC arriba).

Cobertura
Nacional (según municipio seleccionado)
Licencia / términos
Open Database License (ODbL) — © colaboradores de OpenStreetMap
Actualización
Consultada cada 6 horas
Ver servicio

Sismología

Actividad sísmica en vivo de la Red Sismológica Nacional de Colombia (SGC) como fuente principal, con el catálogo global del USGS como verificación y el catálogo histórico oficial del SGC, más un resumen opcional de reportes comunitarios de daños en Sevilla. Los sismos no se pueden pronosticar: estas fuentes mejoran la detección en vivo, no la predicción.

Feed sísmico casi en tiempo real (RSNC)

Red Sismológica Nacional de Colombia — Servicio Geológico Colombiano (SGC)

Feed GeoJSON público, sin clave

Fuente en vivo principal: todos los eventos localizados por la red nacional en los últimos 5 días, desde ~M0.4 — magnitud, profundidad, ubicación, lugar descriptivo y estado de revisión (manual/automático). Al ser la red local del país, detecta los microsismos (M1–M4) que el catálogo global del USGS no registra. Cuando un mismo sismo aparece también en el USGS, se conserva el registro del SGC para no duplicarlo. Feed público sin clave; se recomienda coordinar con el SGC el uso automatizado sostenido.

Cobertura
Colombia (y eventos mundiales significativos), filtrado a la región de Sevilla/Caicedonia/Zarzal
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Consultado cada 5 minutos
Ver servicio
Catálogo sísmico en vivo (FDSN Event Web Service)

USGS (Servicio Geológico de Estados Unidos)

API REST pública (GeoJSON), sin clave

Verificación independiente y ventana más larga (90 días): eventos sísmicos globales dentro de la zona de estudio, sin magnitud mínima — magnitud, profundidad, ubicación y lugar descriptivo. Confirma los eventos regionales de mayor magnitud, aunque su cobertura para Colombia baja de forma fiable solo hasta ~M4.

Cobertura
Global, filtrado a la región de Sevilla/Caicedonia/Zarzal
Licencia / términos
Dominio público (USGS)
Actualización
Consultado cada 5 minutos
Ver servicio
Catálogo de sismos histórico

Servicio Geológico Colombiano (SGC)

ArcGIS FeatureServer

Registro sísmico oficial de Colombia — magnitud, profundidad y ubicación de eventos históricos en la región. No es un feed en vivo.

Cobertura
Colombia, filtrado a la región de Sevilla/Caicedonia/Zarzal
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Consultado una vez al día
Ver servicio
Reportes de daños (Sevilla)

UVGeomatica — formulario de campo comunitario (Survey123)

ArcGIS FeatureServer, agregado en el servidor antes de exponerse

Reportes de daños por sismo, agregados por barrio — solo conteos y estado de la vivienda; nunca direcciones ni cifras de heridos o fallecidos por hogar.

Cobertura
Solo Sevilla
Licencia / términos
Datos comunitarios, sin verificar
Actualización
Consultado cada hora
Ver servicio

Riesgo compuesto (multiamenaza)

Sin fuente externa propia — esta categoría solo combina, en el servidor, los cinco modelos de amenaza que ya alimentan las categorías anteriores.

Riesgo compuesto por vereda

Vigía (cálculo propio, siguiendo la doctrina OMM/GDACS y el estilo del Índice de Riesgo INFORM)

Cálculo propio, composición de las cinco categorías existentes

Combina el puntaje/nivel de deslizamientos, el puntaje/nivel de inundaciones (modelo propio), el nivel de incendios forestales (AmenazaIncendios, cruzado por centroide de vereda), el nivel de precipitación (acumulado de 7 días, NASA POWER) y el puntaje de exposición sísmica (decaimiento espacial desde epicentros USGS/SGC) en un nivel compuesto (el mayor de los cinco, normalizado 0–1) y un puntaje compuesto (promedio ponderado 20%/20%/20%/20%/20%, re-normalizado sobre los que resolvieron), más un reporte narrativo en español generado con plantillas de texto deterministas — nunca con un modelo de lenguaje. Ver la sección "Metodología" más abajo para el detalle completo.

Cobertura
Sevilla, Caicedonia, Zarzal (~55 centroides de vereda)
Licencia / términos
N/A — calculado por la app a partir de sus propios modelos
Actualización
Hereda el caché de cada insumo (30 días / 6 horas / 1 hora / 3 horas / 5 min-1 día)
Ver servicio

Metodología: modelo propio de amenaza por deslizamiento

Cálculo propio, no un índice oficial

El color del mapa de deslizamientos ya no proviene de una capa publicada por un tercero, sino de un modelo que esta misma app calcula en el servidor. Sigue, de forma simplificada, la estructura de NASA LHASA v1 (Stanley & Kirschbaum, 2017): un factor estático de susceptibilidad del terreno combinado con un disparador dinámico de lluvia reciente. Esta sección documenta paso a paso qué dato entra en cada cálculo y exactamente cómo se procesa, para que el resultado sea auditable en vez de una caja negra.

1. Pendiente del terreno

Entrada

Elevación del DEM Copernicus GLO-30, vía la API gratuita de elevación de Open-Meteo (sin clave, un valor por coordenada).

Procesamiento

  • Por cada centroide de vereda se consultan 5 puntos: el centroide y sus 4 vecinos cardinales (norte, sur, este, oeste) desplazados ~500 m.
  • Se calcula el gradiente norte-sur y el gradiente este-oeste por diferencias finitas: atan(|Δelevación| / distancia) para cada eje.
  • La pendiente final es el mayor de los dos gradientes, en grados.
  • Para el puntaje, la pendiente se acota a 45°: 45° o más equivale a un puntaje de pendiente de 1.0 (pendiente_score = min(1, pendiente° / 45)).

Open-Meteo no ofrece un endpoint de pendiente directo — se deriva localmente de 5 lecturas de elevación por punto, no de una consulta ya calculada.

2. Cercanía a la vía más cercana

Entrada

Red vial de OpenStreetMap (vías motorway, trunk, primary, secondary, tertiary, unclassified, residential, track y path) para toda el área de estudio, vía la API Overpass.

Procesamiento

  • Una sola consulta Overpass por toda el área de estudio (no por vereda) recupera cada vértice de geometría de cada vía —no solo sus extremos— usando out geom.
  • Para cada centroide se calcula la distancia Haversine al vértice más cercano de toda la red vial recuperada.
  • El puntaje decrece linealmente con la distancia y llega a 0 al superar 1 km: vía_score = max(0, 1 − distancia_km / 1).

Es una aproximación al vértice más cercano, no la distancia exacta punto-a-línea — el error es despreciable porque OSM traza vías con vértices cada pocas decenas de metros, muy por debajo del radio de influencia de 1 km.

3. Cercanía a una falla geológica

Entrada

Trazas de falla del Servicio Geológico Colombiano (SGC), capa "Fallas" del Atlas Geológico de Colombia, publicada como un FeatureServer de ArcGIS público y sin autenticación (tipo de falla y nombre por traza).

Procesamiento

  • Una sola consulta por toda el área de estudio (envolvente de las tres municipalidades) recupera cada traza de falla que la intersecta, con su geometría completa de vértices (esri JSON "paths") — no solo sus extremos.
  • Para cada centroide se calcula la distancia real punto-a-segmento (no al vértice más cercano) contra cada segmento de cada traza, proyectando localmente a kilómetros alrededor de la latitud del punto: se toma el mínimo sobre todos los segmentos de todas las trazas.
  • El puntaje decrece linealmente con la distancia y llega a 0 al superar 2 km: falla_score = max(0, 1 − distancia_km / 2).

A diferencia de la cercanía a vías (donde el vértice más cercano es una aproximación aceptable porque OSM traza vías con vértices muy próximos), las trazas de falla del SGC tienen vértices mucho más espaciados sobre líneas mucho más largas — usar solo el vértice más cercano habría sobrestimado la distancia real a una traza que pasa cerca de un punto entre dos de sus vértices. Por eso este factor sí calcula la distancia real al segmento.

4. Cercanía a un movimiento en masa histórico

Entrada

Inventario nacional de movimientos en masa del SGC (derivado de SIMMA), 55 puntos dentro del área de estudio, cada uno con tipo y subtipo (deslizamiento, caída, flujo, reptación, deformación gravitacional) pero sin fecha de ocurrencia confiable.

Procesamiento

  • Una sola consulta por toda el área de estudio recupera cada punto del inventario que cae dentro de la envolvente de las tres municipalidades.
  • Para cada centroide se calcula la distancia Haversine al punto más cercano de todo el inventario recuperado — a diferencia de las fallas, cada registro aquí es un evento puntual, no una traza continua, así que no hace falta la distancia punto-a-segmento.
  • El puntaje decrece linealmente con la distancia y llega a 0 al superar 2 km: histórico_score = max(0, 1 − distancia_km / 2).

Es evidencia directa de inestabilidad pasada, no un proxy geomorfológico indirecto como los otros tres factores — por eso recibe el mayor peso del factor estático. Pero con solo 55 puntos dispersos y sin fecha en toda la zona de estudio, es un inventario disperso y no exhaustivo, no un catálogo completo de eventos: complementa a los otros factores, no los sustituye.

5. Factor estático combinado

Entrada

Los cuatro puntajes anteriores.

Procesamiento

  • Promedio ponderado: factor_estático = (pendiente_score × 0.35 + vía_score × 0.15 + falla_score × 0.2 + histórico_score × 0.3) / peso_total.
  • Si alguno de los cuatro factores no se pudo calcular para una vereda (falla de red, chunk sin datos), el peso se renormaliza sobre los que sí estén disponibles, en vez de descartar la vereda entera.
6. Disparador de lluvia reciente

Entrada

Precipitación diaria histórica de la API de archivo histórico de Open-Meteo (misma fuente que la climatología del mapa de precipitación), consultada una sola vez por centroide en un rango continuo de varios años.

Procesamiento

  • Índice antecedente actual: suma ponderada por decaimiento de la lluvia diaria de los últimos 15 días, con vida media de 4 días — el día más reciente pesa más que el resto de la ventana (peso = 0.5^(días_atrás / 4)).
  • Línea base histórica: se calcula el mismo índice de 15 días, con la misma fecha de cierre pero retrocedida 1, 2 y 3 años, y se promedian los tres resultados.
  • Razón = índice actual / índice base. Si la base es 0 (sin lluvia histórica registrada en esa ventana), se trata como caso aparte: razón nula, con puntaje 1 si hay lluvia actual o 0 si no la hay.
  • El puntaje del disparador satura en razón = 2 (el doble de lo normal para la época): disparador_score = clamp((razón − 1) / (2 − 1), 0, 1).

Compara contra la propia estacionalidad del punto, no contra un umbral absoluto de milímetros — una tormenta moderada en un mes normalmente seco puede pesar más que la misma tormenta en un mes normalmente lluvioso.

7. Puntaje final y nivel de amenaza

Entrada

El factor estático (paso 5) y el disparador de lluvia (paso 6).

Procesamiento

  • Puntaje final = (factor_estático × 0.6 + disparador_score × 0.4) / peso_total, con la misma renormalización de pesos si alguno de los dos factores falló.
  • El puntaje 0–1 resultante se traduce al esquema de 5 niveles ya usado en toda la plataforma: Muy bajo (< 0.2), Bajo (< 0.4), Medio (< 0.6), Alto (< 0.8), Muy alto (≥ 0.8).
  • Se calcula una sola vez por centroide de vereda (~55 en total entre Sevilla, Caicedonia y Zarzal) al resolver /api/veredas, no por punto de grilla.

Si absolutamente ningún factor resolvió para una vereda, el resultado es nulo en todos los campos — nunca un puntaje inventado — siguiendo la misma convención de "sin datos" que ya usaba la integración de RED LabOT para Zarzal.

Caché por factor

Cada insumo del modelo se cachea de forma independiente, según qué tan rápido cambia — solo la primera solicitud dentro de cada ventana de caché paga el costo completo de recalcular los ~55 centroides.

Elevación / pendiente
30 díasel terreno no cambia
Red vial (Overpass)
6 horasmismo caché que el resto de capas de OpenStreetMap
Fallas geológicas (SGC)
30 díasla cartografía geológica no cambia
Inventario de movimientos en masa (SGC)
30 díases un inventario histórico estático
Lluvia / disparador
1 horalos días más recientes se revisan con nuevas observaciones

Qué no es este modelo

  • No es una calibración validada contra deslizamientos ocurridos en la zona — los pesos y umbrales (0.35/0.15/0.2/0.3, 0.6/0.4, 45°, 1 km, 2 km, 2 km, razón de saturación 2) son elegidos por criterio propio siguiendo la estructura de LHASA v1, no ajustados con datos locales.
  • LHASA v1 usa cinco predictores estáticos; este modelo reproduce tres de ellos (pendiente, vías y fallas geológicas) y suma un cuarto factor propio (movimientos en masa históricos) que LHASA v1 no incluye. Cobertura de suelo (ESA WorldCover) — el único predictor de LHASA que sigue faltando — se evaluó pero se descartó: solo existe como archivo raster satelital (COG/GeoTIFF) sin una API de consulta por punto viable desde una función serverless. Geología/fallas y el inventario histórico se habían descartado por el mismo motivo hasta encontrar sus respectivas capas del SGC, que resultaron ser la excepción: vectores pequeños y directamente consultables, no rásteres.
  • El inventario de movimientos históricos solo tiene 55 puntos en toda la zona de estudio y sin fecha de ocurrencia confiable — es evidencia real de inestabilidad pasada, pero disperso y no exhaustivo. Que una vereda quede lejos de los 55 puntos conocidos no significa que nunca haya tenido un movimiento en masa, solo que ninguno quedó registrado en este inventario.
  • Se calcula en el centroide de cada vereda, no en una grilla densa — una sola pendiente y distancia a vía representan a toda la vereda, a diferencia de los ~11.721 puntos que sí tenía la capa de RED LabOT dentro de su área de cobertura.

Metodología: modelo propio de amenaza por inundación

Cálculo propio, no un índice oficial

La capa "Modelo propio de inundación" del mapa de inundaciones extiende la zonificación oficial de RED LabOT —que solo cubre el área zonificada de Sevilla y Caicedonia— a los tres municipios, incluido Zarzal, calculando un puntaje propio por vereda. La zonificación oficial no se descarta: es, al contrario, el insumo de mayor peso del modelo, donde tiene cobertura.

1. Zonificación oficial

Entrada

Capa pública susceptibilidad_inundaciones (ArcGIS Online, RED LabOT) — polígonos disueltos con 5 clases de susceptibilidad, cubriendo el área zonificada de Sevilla y Caicedonia.

Procesamiento

  • Para cada centroide de vereda se hace una prueba punto-en-polígono (turf) contra los polígonos de zonificación.
  • Si el centroide cae dentro de un polígono, su clase (Muy alta/Alta/Moderada/Baja/Muy baja) se traduce a un puntaje 0–1: zonificación_score = 1 − índice_de_clase / 4 (Muy alta = 1, Muy baja = 0).
  • Si el centroide no cae dentro de ningún polígono —el caso de las 19 veredas de Zarzal— el factor queda sin resolver, no en 0.

Es la única evidencia oficial directa que entra al modelo, por eso recibe el mayor peso individual (50%) — pero se limita a ese 50%, en vez de un peso mayor, precisamente para que una vereda sin esta cobertura (todo Zarzal) no quede con un puntaje degenerado por depender de un solo factor ausente.

2. Cercanía a una quebrada o río

Entrada

Capa pública de hidrografía "Quebradas" (ArcGIS Online, mismo publicador que la zonificación oficial) — 19 cauces con nombre que cubren toda el área de estudio, incluida Zarzal.

Procesamiento

  • Una sola consulta recupera las 19 trazas completas, con su geometría de vértices (esri JSON "paths").
  • Para cada centroide se calcula la distancia real punto-a-segmento (no al vértice más cercano) contra cada segmento de cada traza, misma proyección local a kilómetros que usa el factor de fallas geológicas del modelo de deslizamiento — se toma el mínimo sobre todos los segmentos de todas las trazas.
  • El puntaje decrece linealmente con la distancia y llega a 0 al superar 1 km: quebrada_score = max(0, 1 − distancia_km / 1).

Es el único factor del modelo que efectivamente llega a Zarzal: la capa de hidrografía no tiene el mismo vacío de cobertura que la zonificación oficial.

3. Planicie del terreno

Entrada

El mismo valor de pendiente ya calculado por el modelo de amenaza por deslizamiento (paso 1 de esa metodología), en el mismo centroide.

Procesamiento

  • No se vuelve a consultar la API de elevación: se reutiliza directamente el resultado ya calculado para ese centroide.
  • A diferencia del modelo de deslizamiento, aquí el efecto se invierte — terreno plano cerca de un cauce se inunda con más facilidad; terreno empinado drena en vez de encharcar: planicie_score = 1 − min(1, pendiente° / 8).
  • El puntaje llega a 0 a partir de 8° de pendiente — un umbral mucho más bajo que el de 45° del factor de pendiente del modelo de deslizamiento, porque aquí lo relevante es si el terreno puede retener agua, no si puede colapsar.
4. Puntaje final y nivel de amenaza

Entrada

Los tres factores anteriores.

Procesamiento

  • Promedio ponderado: puntaje_final = (zonificación_score × 0.5 + quebrada_score × 0.3 + planicie_score × 0.2) / peso_total.
  • Si la zonificación oficial no resolvió para una vereda (fuera de su cobertura, o si el propio factor de zonificación falló al cargar), el peso se renormaliza sobre los otros dos — nunca se descarta la vereda entera solo por no tener zonificación oficial.
  • El puntaje 0–1 resultante se traduce al mismo vocabulario de 5 niveles que ya usa la zonificación oficial (Muy alta/Alta/Moderada/Baja/Muy baja), en vez de inventar una escala nueva.
  • Se calcula una sola vez por centroide de vereda (69 en total entre Sevilla, Caicedonia y Zarzal, incluyendo los cascos urbanos) al resolver /api/veredas.

Ninguna vereda queda sin puntaje: incluso sin zonificación oficial, los otros dos factores por sí solos ya producen un resultado no degenerado en toda vereda de Zarzal — es la extensión de cobertura que motivó este modelo.

Caché por factor

Zonificación oficial de inundación
1 horamismo caché que la capa pública original
Hidrografía (quebradas y ríos)
30 díasel curso de un cauce cambia muy lentamente
Pendiente / planicie
reutilizadaes el mismo valor ya cacheado por el modelo de deslizamiento

Qué no es este modelo

  • No es un modelo hidráulico ni hidrológico — no simula caudal, láminas de agua ni tiempos de llegada de una creciente. Es una susceptibilidad relativa por vereda, del mismo tipo que la zonificación oficial que extiende, no un pronóstico de inundación (para eso está el pronóstico de caudal en vivo de GEOGLOWS, ya en el mismo mapa).
  • La capa de hidrografía usada para el factor de cercanía a cauces solo tiene 19 trazas con nombre — es una aproximación a la red de drenaje real, no un mapa completo de todo arroyo o canal menor.
  • Los pesos y umbrales (0.5/0.3/0.2, 1 km, 8°) son elegidos por criterio propio, siguiendo la misma lógica de factores-por-distancia-e-inclinación del modelo de deslizamiento, no ajustados con datos locales de inundaciones ocurridas.
  • Cada traza de cauce de la capa de hidrografía trae también un identificador (rivid) que coincide con el esquema de tramos que ya usa el pronóstico de GEOGLOWS en este mapa — un posible factor dinámico futuro (p. ej. ponderar por el período de retorno en vivo del tramo más cercano), señalado aquí pero no implementado: a diferencia de cada otro insumo de este modelo, que es una sola consulta cacheada, eso implicaría decenas de consultas individuales por tramo en cada solicitud.

Metodología: riesgo compuesto (multiamenaza)

Cálculo propio, no un índice oficial

La capa "Riesgo compuesto" combina las cinco amenazas que esta app ya modela por vereda —deslizamientos, inundaciones (modelo propio), incendios forestales, precipitación y sismología— en una sola evaluación, siguiendo dos enfoques ya usados en la práctica internacional en vez de inventar uno nuevo: la doctrina de la OMM/GDACS de que "la amenaza más alta gobierna" para el nivel de alerta, y la composición ponderada al estilo del Índice de Riesgo INFORM para un puntaje continuo de referencia. El resultado se traduce además al marco de acción Informar/Prepararse/Actuar que ya usa IDEAM en Colombia.

1. Normalización de cada amenaza a 0–1

Entrada

Los cinco modelos de amenaza que esta app ya calcula por vereda: deslizamientos, inundaciones y sismología (cada uno con su propio puntaje 0–1 continuo) e incendios forestales y precipitación (cada uno solo con un nivel de 4 categorías, sin puntaje continuo propio).

Procesamiento

  • Deslizamientos e inundaciones: se reutiliza directamente el puntaje 0–1 ya calculado por cada modelo — nunca se recalcula.
  • Incendios (AmenazaIncendios, 4 niveles: Muy bajo/Bajo/Medio/Alto) y precipitación (4 niveles: Bajo/Moderado/Alto/Muy alto): sin puntaje continuo publicado, se usa el índice ordinal del nivel sobre el total de niveles como puntaje sustituto — la misma técnica que el modelo de inundación ya usa para traducir la clase de zonificación oficial a un puntaje.
  • Incendios se resuelve en el mismo centroide de vereda que los otros cuatro, mediante un nuevo cruce punto-en-polígono contra la capa AmenazaIncendios (lib/riesgo-compuesto/incendios-join.ts) — un archivo nuevo, no una modificación al mapa de incendios existente.
  • Precipitación reutiliza /api/precipitacion/amenaza en su modo histórico de 7 días con NASA POWER, ya calculado por vereda.
  • Sismología: sin zonificación por vereda publicada, se calcula un puntaje propio de exposición por decaimiento espacial desde los epicentros de USGS (en vivo) y SGC (histórico) — ver lib/sismologia/exposure-score.ts.

Ninguna de las cinco amenazas se recalcula desde cero — el módulo compuesto solo importa y combina las funciones ya exportadas por cada categoría existente (sismología incluida, con su propio módulo de exposición).

2. Nivel compuesto: la amenaza más alta gobierna

Entrada

Los cinco puntajes normalizados del paso 1.

Procesamiento

  • Cada puntaje normalizado se traduce individualmente al mismo esquema de 5 niveles usado en toda la plataforma (Muy bajo <0.2, Bajo <0.4, Moderado <0.6, Alto <0.8, Muy alto ≥0.8).
  • El nivel compuesto de la vereda es el mayor de esos cinco niveles — no un promedio — siguiendo la doctrina de la OMM y GDACS (Global Disaster Alert and Coordination System) de que la amenaza más severa determina la alerta general, sin diluirla con amenazas más tranquilas.
  • La amenaza "dominante" reportada es la que alcanzó ese nivel máximo (en caso de empate entre niveles, la de mayor puntaje normalizado).
3. Puntaje compuesto: promedio ponderado al estilo INFORM

Entrada

Los mismos cinco puntajes normalizados del paso 1.

Procesamiento

  • Puntaje compuesto = promedio ponderado de los cinco puntajes, con peso igual de 20% cada uno por defecto — al estilo del Índice de Riesgo INFORM (composición ponderada de componentes de riesgo).
  • Si una amenaza no tiene datos para una vereda (p. ej. incendios fuera de su cobertura en Sevilla/Caicedonia, o precipitación sin lectura válida), su peso se renormaliza sobre las que sí resolvieron — la misma convención de "sin datos nunca inventados" que usa cada modelo individual. Sismología siempre resuelve (es un fenómeno regional, no zonificado), por lo que casi nunca deja de aportar su 20%.
  • Este puntaje no define el nivel compuesto (eso lo hace el paso 2) — solo ordena veredas dentro de un mismo nivel para color de intensidad o priorización relativa.
4. Marco de acción IDEAM y narrativa

Entrada

El nivel compuesto del paso 2.

Procesamiento

  • El nivel se traduce a las tres categorías de acción que IDEAM ya usa en sus boletines públicos: Informar (Muy bajo/Bajo), Prepararse (Moderado), Actuar (Alto/Muy alto).
  • Un reporte narrativo en español se genera con plantillas de texto deterministas (lib/riesgo-compuesto/narrative.ts) rellenadas con los números ya calculados — nunca con un modelo de lenguaje: un resumen de una línea (nivel + amenaza dominante), un desglose por amenaza y un párrafo de exposición demográfica (reutilizando los mismos conteos de población/infraestructura de RED LabOT que ya usa /api/veredas).

Cero riesgo de alucinación y sin necesidad de una nueva integración de IA: es texto de plantilla, no generación de lenguaje.

Caché por insumo

Este módulo no introduce nuevas fuentes externas — cada insumo hereda el caché que ya tenía en su propia categoría.

Deslizamientos e inundaciones
reutilizadamismo caché que cada modelo individual (vía aggregateVeredas)
Incendios forestales (cruce por centroide)
1 horamismo caché que la capa AmenazaIncendios original
Precipitación (NASA POWER, 7 días)
3 horasmismo caché que /api/precipitacion/amenaza
Sismología (USGS en vivo / SGC histórico)
5 min / 1 díamismo caché que /api/sismologia/eventos

Qué no es este modelo

  • No incluye el pronóstico de caudal en vivo de GEOGLOWS. Ese pronóstico es por tramo de río, no por vereda, y cruzarlo con ~55 veredas exigiría decenas de consultas de identificación de tramo en vivo por solicitud — una integración pesada y frágil fuera del alcance de esta primera versión. La amenaza "inundaciones" en el riesgo compuesto es, en cambio, el modelo propio de inundación por vereda (zonificación + cercanía a cauce + planicie del terreno) que ya representa esa amenaza en las otras tres categorías.
  • No usa un modelo de lenguaje ni la puerta de enlace de IA de esta app. El reporte narrativo es texto de plantilla determinista, relleno con los mismos números que ya se muestran en el mapa y el panel — nunca generación libre.
  • Los pesos iguales de 25% por amenaza y los umbrales de nivel (0.2/0.4/0.6/0.8) son una elección de diseño razonable, no una calibración validada contra eventos multiamenaza ocurridos en la zona — igual que cada modelo individual que combina.
  • Incendios y precipitación no tienen un puntaje continuo propio publicado, así que su contribución al puntaje compuesto es una aproximación ordinal (índice de nivel entre los niveles totales), no una medida continua nativa como sí lo son deslizamientos e inundaciones.

Metodología: estimación nacional de exposición por deslizamiento

Estimación por área, no un índice de campo

El panel "Exposición en zona de susceptibilidad" sigue mostrando el índice de campo de RED LabOT en Sevilla y Caicedonia, sin cambios. Para cualquier otro municipio del país —donde RED LabOT no tiene cobertura— se calcula en su lugar una estimación por área que combina tres fuentes abiertas nacionales, documentada aquí paso a paso para que quede claro qué es un dato real y qué es un reparto proporcional.

1. % de área por nivel de amenaza (SGC, nacional)

Entrada

Capa nacional "Amenaza_Departamento_Municipios" del SGC (Mapa_Nacional_Amenaza_Mov_Masa_100K), un registro por municipio con el % del área municipal en cada nivel (baja/media/alta/muy alta).

Procesamiento

  • Se consulta el registro del municipio seleccionado por su código DIVIPOLA (CODIGO_DAN).
  • Los cuatro porcentajes (SUM_BAJA/SUM_MEDIA/SUM_ALTA/SUM_MUY_AL) se normalizan para que sumen 1, dando la participación de cada nivel dentro del municipio.
  • Esta fuente no distingue un nivel "Muy bajo" propio (solo Baja/Media/Alta/Muy Alta) — a diferencia del índice de campo de RED LabOT, aquí ese nivel queda siempre en 0.

Solo se usa fuera de Sevilla y Caicedonia: en esos dos municipios la app sigue mostrando el índice de campo de RED LabOT, sin pasar por esta estimación.

2. Población total del municipio (DANE, nacional)

Entrada

Proyecciones de población municipal del DANE (2020-2035, todos los municipios del país) — ver la ficha de fuentes.

Procesamiento

  • Se toma el total de población del municipio seleccionado, año más reciente disponible.
  • El dato es real y por municipio completo, pero no trae una desagregación por edad a nivel nacional (solo urbano/rural y hombres/mujeres) — a diferencia del índice de RED LabOT, que sí reporta menores de 5 y mayores de 60 por punto.

Por eso esta estimación reporta población total por nivel, pero nunca cifras de niñez ni de adultos mayores fuera de Sevilla/Caicedonia — se deja en 0 en vez de aproximarlas con un indicador no relacionado (p. ej. la proporción hombres/mujeres), que hubiera sido una cifra inventada disfrazada de dato real.

3. Población por nivel = total × % de área

Entrada

Los resultados de los pasos 1 y 2.

Procesamiento

  • Para cada uno de los cinco niveles: población_nivel = población_total_municipio × %área_nivel.
  • Es un reparto proporcional al área, no una medición directa de dónde vive la gente dentro del municipio — un municipio con más habitantes concentrados en su zona urbana plana (normalmente de menor amenaza) igual reparte población `en la misma proporción` que su área rural en ladera.
4. Infraestructura crítica por nivel (Overpass, por municipio)

Entrada

Consulta dedicada a la API Overpass de OpenStreetMap, acotada al bbox del municipio seleccionado, por las categorías escuela/universidad/colegio, hospital, farmacia y estación de bomberos/policía/defensa civil — el equivalente más cercano en datos abiertos a los campos propios de RED LabOT (n_escuelas, n_hospit, n_farmaci, infra_crit).

Procesamiento

  • Se cuentan los elementos de cada categoría dentro del bbox del municipio.
  • Cada total (escuelas, hospitales, farmacias, infraestructura crítica) se reparte entre los cinco niveles con la misma proporción de área del paso 1 — igual que la población.

Es un conteo real de OpenStreetMap, sujeto a qué tan completo esté el mapeo comunitario en ese municipio — no es un censo oficial de infraestructura, a diferencia del índice de RED LabOT en Sevilla/Caicedonia.

Qué no es esta estimación

  • No es un índice de campo verificado punto por punto como el de RED LabOT — es un reparto proporcional de totales municipales (población, infraestructura) según el % de área de cada nivel de amenaza, sin conocer la ubicación real de esa población o infraestructura dentro del municipio.
  • No reporta menores de 5 ni mayores de 60 años fuera de Sevilla/Caicedonia — la fuente nacional de población (DANE) no tiene esa desagregación por edad a nivel de todo el país, y esta app no aproxima esas cifras con un indicador no relacionado.
  • El conteo de infraestructura depende de qué tan completo esté el mapeo comunitario de OpenStreetMap en ese municipio — no es un registro oficial como los campos propios de la capa de RED LabOT.

Metodología: selección de las 6 estaciones de caudal por municipio

El panel de inundaciones muestra hasta 6 estaciones por municipio en vez de las 1-3 originales. Esta sección documenta cómo se eligen: primero las estaciones curadas y verificadas en campo donde existen, y luego —para completar hasta 6, en cualquier municipio del país— tramos adicionales resueltos en vivo por GEOGLOWS.

1. Estaciones curadas primero

Entrada

La lista de estaciones verificadas en campo de Sevilla, Caicedonia y Zarzal (lib/geoglows/stations.ts).

Procesamiento

  • Si el municipio seleccionado es uno de los tres, su lista curada completa entra primero, en el mismo orden ya establecido (canal principal primero).
  • Para cualquier otro municipio, esta lista empieza vacía — no hay estaciones curadas que priorizar.
2. Candidatos adicionales por centroide de vereda

Entrada

Los centroides de vereda del municipio seleccionado (los mismos ya calculados para el resto de la app, vía lib/veredas/boundaries.ts), más el propio centroide del municipio.

Procesamiento

  • Si las estaciones curadas ya llegan a 6, no se consulta nada más.
  • En caso contrario, se toman hasta 10 puntos candidatos: el centroide del municipio y hasta 9 centroides de vereda.
  • Cada candidato se resuelve a un tramo de río real mediante getriverid de GEOGLOWS (coordenada → id de tramo más cercano), en paralelo.
3. Deduplicación y tope de 6

Entrada

Los tramos resueltos en el paso 2, más los reachId de las estaciones curadas del paso 1.

Procesamiento

  • Cualquier tramo cuyo id ya apareciera en la lista curada, o que se repita entre dos candidatos, se descarta — nunca se muestra el mismo tramo dos veces.
  • Se agregan tramos nuevos, en el orden en que se resolvieron, hasta completar 6 estaciones o agotar los candidatos.

Un municipio pequeño con pocas veredas puede terminar con menos de 6 si no hay suficientes tramos distintos que resolver — nunca se rellena con datos repetidos o inventados.

4. Evaluación y orden final por caudal

Entrada

La lista final de hasta 6 estaciones (curadas + resueltas).

Procesamiento

  • Cada estación se evalúa en paralelo (Promise.allSettled) contra el pronóstico y el registro retrospectivo de GEOGLOWS — la misma función assessReach que ya usaba el panel con 1-3 estaciones.
  • Una estación cuya evaluación falle se conserva en la respuesta como una entrada de error, en vez de descartar todo el panel.
  • Las estaciones evaluadas con éxito se ordenan de mayor a menor caudal actual; las fallidas van al final, en su orden original.

La primera tarjeta del panel (la de mayor caudal) es la única que se muestra a ancho completo — ver la sección de Funcionalidades.

Arquitectura

Cómo está construida la plataforma, de la interfaz al dato.

Framework y renderizado

Next.js 16 (App Router) con React 19 y TypeScript. Las páginas son Server Components por defecto; los mapas y controles interactivos se marcan "use client" solo donde necesitan estado o efectos del navegador.

Acceso a datos, sin base de datos propia

Cada fuente externa tiene un módulo server-only en lib/<amenaza>/client.ts que llama directamente a su API/WMS/WMTS pública. No hay capa de persistencia: la app es una capa de agregación en vivo sobre servicios públicos ya existentes.

Rutas de API y hooks de datos

Cada módulo servidor se expone mediante una ruta en app/api/**/route.ts, que envuelve el resultado en un sobre JSON consistente ({ data } o { error }) con manejo de errores. Los componentes cliente consumen esas rutas con hooks de SWR (lib/**/use-*.ts) para caché y revalidación en el navegador.

Estrategia de caché

El caché de fetch de Next (next: { revalidate }) se ajusta por fuente según qué tan rápido cambia: FIRMS cada 15 min, capas de ArcGIS cada hora, límites administrativos cada semana, y las proyecciones del DANE no hacen ninguna llamada de red — se leen de un JSON estático versionado en el repositorio.

Mapas

Leaflet y react-leaflet, importados dinámicamente con next/dynamic({ ssr: false }) para evitar que el renderizado en servidor choque con las dependencias de window/document de Leaflet. Cada amenaza combina GeoJSON, CircleMarker, TileLayer, WMSTileLayer e ImageOverlay según la forma de su fuente.

Estilos y sistema de diseño

Tailwind CSS v4 con tokens de diseño definidos en app/globals.css (escalas de color en oklch por amenaza/categoría), componentes de shadcn/ui sobre primitivas de Base UI, y next-themes para el tema claro/oscuro/sistema.

Ventanas emergentes sin barra de navegador

lib/open-info-popup.ts abre la vista de referencia "Conoce tu nivel de exposición" en una ventana emergente sin menú, barra de herramientas ni barra de direcciones — para no interrumpir el mapa en vivo que el usuario tenía abierto. La documentación, en cambio, abre en una pestaña normal del navegador porque es contenido extenso pensado para desplazarse, imprimirse o guardarse como marcador.

Exportación a PDF

El botón "Exportar como PDF" del selector de exposición usa html2canvas-pro para capturar el mapa como imagen (se eligió sobre el html2canvas original, sin mantenimiento, porque este último no soporta las funciones de color CSS modernas —lab()/oklch()— que usan los tokens de Tailwind v4) y jsPDF para componer el documento final.

Despliegue

Vercel. Vercel Analytics solo se activa en producción (process.env.NODE_ENV === 'production').

Licencia y uso del código

El repositorio de Vigía es público para que cualquiera pueda leer su código, auditarlo y aprender de él, creado por Alejandro Pino (SIG · Director Técnico). La plataforma en sí — el sitio que estás usando — es de uso público y gratuito. El código fuente, en cambio, todavía no tiene una licencia de código abierto: las dependencias que trae la app sí la tienen y se listan a continuación, agrupadas por su propia licencia.

Licencia del proyecto
Todos los derechos reservados

Creado por Alejandro Pino, SIG · Director Técnico (apino@redlabot.org). El repositorio de Vigía es público para consulta y auditoría, pero el código fuente no está bajo una licencia de código abierto: por ahora no se permite usarlo, copiarlo, modificarlo o redistribuirlo sin permiso escrito del autor, mientras se termina de definir y estabilizar su funcionalidad. La plataforma (la aplicación desplegada que ves en este sitio) sí es de uso público y gratuito. El texto completo está en el archivo LICENSE en la raíz del repositorio, e incluye la intención de publicar el código bajo una licencia de código abierto (por ejemplo, MIT) una vez alcance mayor estabilidad.

MIT
23
  • next
  • react
  • react-dom
  • next-themes
  • @base-ui/react
  • @terraformer/arcgis
  • @turf/boolean-point-in-polygon
  • @turf/helpers
  • class-variance-authority (Apache-2.0, ver abajo)
  • clsx
  • cn
  • html2canvas-pro
  • jspdf
  • lucide-react (ISC, ver abajo)
  • recharts
  • shadcn
  • swr
  • tailwind-merge
  • tw-animate-css
  • tailwindcss
  • @tailwindcss/postcss
  • postcss
  • @types/leaflet, @types/node, @types/react, @types/react-dom
BSD-2-Clause
1
  • leaflet
BSD-3-Clause
2
  • @mapbox/vector-tile
  • pbf
Apache-2.0
2
  • class-variance-authority
  • typescript
ISC
1
  • lucide-react
MPL-2.0
1
  • @vercel/analytics
Hippocratic-2.1
1
  • react-leaflet
Licencias de los datos
  • OpenStreetMap — Open Database License (ODbL). Todo uso debe atribuir a © colaboradores de OpenStreetMap.
  • NASA (FIRMS, GIBS) — datos públicos financiados con fondos federales de EE. UU., de libre uso y redistribución.
  • Copernicus (GWIS/EFFIS) — bajo la política de datos gratuitos, plenos y abiertos del programa Copernicus de la Unión Europea.
  • DANE y Esri Colombia — datos abiertos publicados por el Estado colombiano y su red de datos abiertos.
  • GEOGLOWS (ECMWF) — acceso abierto a través de su API pública v2.
  • RED LabOT — índices de susceptibilidad publicados abiertamente en ArcGIS Online; ver redlabot.org para sus términos de atribución.