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 transformación de condiciones de vulnerabilidad social frente a amenazas naturales en cuatro municipios del Valle del Cauca, Colombia: Sevilla, Caicedonia, Zarzal y Roldanillo. Cruza fenómenos 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, y ese cruce se completa con el Índice de Vulnerabilidad Social (IVS) de la capa de Demografía, que mide la condición social previa de la población, no el peligro del lugar. Todo se consulta en un único mapa multicapa que abre directamente al entrar a Vigí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 y combina las capas que quieres vigilar

Cuando abres Vigía, ya estás viendo el mapa con la capa de Riesgo compuesto activa. En el riel lateral están todas las capas: Deslizamientos, Inundaciones, Incendios, Precipitación, Sismología, Riesgo compuesto y, aparte, Clima, Demografía e Hidrantes. Toca una para encenderla o apagarla; puedes tener hasta tres activas a la vez para compararlas en el mismo mapa. Clima es un reporte del tiempo, no una amenaza.

Vigía con el selector de capas en la parte superior, la capa de Riesgo compuesto activa sobre Sevilla y el panel derecho con la leyenda de niveles
Nota técnica

Todo ocurre en un único lienzo MapLibre GL. Cada capa se define en lib/laboratorio/layers.ts con sus controles propios (por ejemplo, "Humedad del suelo (SMAP)" o "Fallas geológicas (SGC)"). Cuando dos capas activas se superponen visualmente aparece un aviso y se puede ajustar la opacidad de cada una. Clima, Demografía e Hidrantes no se combinan con otras capas porque comparten el mapa de una forma incompatible con los modelos de amenaza.

Ajusta la vista y compártela

En la barra superior puedes filtrar por municipio (Sevilla, Caicedonia, Zarzal o Roldanillo) y cambiar entre la vista plana (2D) y la vista con relieve (3D). Cuando tengas el mapa como lo quieres, toca "Compartir vista": se copia un enlace que abre Vigía exactamente con las mismas capas, el mismo municipio y la misma zona del mapa.

Vigía en vista 3D con tres capas activas y la barra superior con el filtro de municipio y el botón Compartir vista
Nota técnica

El estado de la vista (capas, municipio, 2D/3D, zoom y centro) se refleja en la URL con los parámetros layers, municipio, is3D, zoom y center, y también se guarda en localStorage para recordarlo en la próxima visita. Un enlace compartido tiene prioridad sobre lo guardado.

Descubre cuánta gente vive en riesgo y dónde está el hidrante más cercano

Activa "Demografía" para ver cuántas personas viven en Sevilla, Caicedonia, Zarzal y Roldanillo, separadas por año, por pueblo o campo y por sexo, junto con el Índice de Vulnerabilidad Social (IVS) por manzana en el casco urbano. Activa "Hidrantes" y, con tu ubicación o tocando un punto del casco urbano de Sevilla, el mapa resalta el hidrante más cercano con la distancia y la ruta más corta por calles; las instituciones educativas, de salud y de gobierno cercanas aparecen como polígonos con la forma real de cada edificio.

Vigía con la capa de Demografía activa mostrando columnas 3D del Índice de Vulnerabilidad Social por manzana en Sevilla y sus indicadores en el panel derecho
Nota técnica

Los números de población vienen de las proyecciones del DANE (2019–2026). El IVS combina 4 dimensiones del censo (vivienda, servicios públicos, educación y trabajo) con el nivel de amenaza vigente de cada zona; en el casco urbano se calcula por manzana y en el campo se usa el promedio municipal, como una capa plana y opcional para no fingir una precisión que el dato no tiene. La ruta al hidrante se calcula con OSRM sobre la red vial real y las instituciones se dibujan siempre como polígonos para no confundirlas con los hidrantes ni con el radio de cobertura de 100/150 m.

Consulta una vereda y conoce la plataforma

Toca cualquier vereda del mapa para ver una ficha con su nombre, el municipio, la población estimada y la infraestructura crítica cercana. Con la capa de "Riesgo compuesto" activa, el color de cada vereda indica la amenaza más severa entre deslizamientos, inundaciones e incendios. Si en algún momento quieres un resumen de qué es Vigía y cómo se usa, el botón "i" de la barra superior abre la ventana "Acerca de", con los créditos y la versión beta.

Ventana "Acerca de Vigía" sobre el mapa, con la explicación de qué es la plataforma, cómo se usa, los créditos y el indicador de versión beta
Nota técnica

El nivel de riesgo compuesto es el mayor entre las 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. La ficha de cada vereda se arma con los mismos datos 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

Tema claro y oscuro

El ícono de sol/luna, en la esquina superior derecha, 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.

Acerca de Vigía

El botón con la letra "i", junto al tema, abre una ventana con una explicación breve de la plataforma, los créditos y la versión beta en curso. Desde ahí también puedes abrir esta documentación.

Uso con teclado y lectores de pantalla

Los controles interactivos tienen roles y etiquetas ARIA, se pueden recorrer con el teclado y las ventanas se cierran con Esc. Las regiones que se actualizan con datos en vivo usan aria-live 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
SevillaCaicedoniaZarzalRoldanillo
  • 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 veredas de los cuatro municipios, incluidos Zarzal y Roldanillo.
  • Población, escuelas, hospitales, farmacias e infraestructura crítica expuestas por nivel de amenaza (RED LabOT, Sevilla y Caicedonia), independiente del color del mapa.
  • 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.
Inundaciones
SevillaCaicedoniaZarzalRoldanillo
  • 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 89 veredas de los cuatro municipios, incluidos Zarzal y Roldanillo, la única capa de amenaza por inundación con esa cobertura.
  • Pronóstico de caudal en vivo de GEOGLOWS, evaluado contra períodos de retorno calculados localmente (ajuste de Gumbel) sobre el registro retrospectivo del tramo de río más cercano.
  • Superposición de tasa de precipitación en vivo (NASA GPM IMERG, actualizada cada ~30 minutos).
Incendios
SevillaCaicedoniaZarzalRoldanillo
  • Mapa de amenaza por vereda coloreado únicamente por un modelo propio: pendiente y cercanía a vías (reutilizadas del modelo de deslizamiento), recurrencia histórica de focos de las cuatro fuentes de NASA FIRMS y el Índice Meteorológico de Incendio (FWI) de hoy, calculado con las ecuaciones estándar del Sistema Canadiense de Índices Forestales de Incendio. Calculado en las ~89 veredas de los cuatro municipios, incluidos Zarzal y Roldanillo.
  • Índice de riesgo de incendio (FWI) en vivo de Copernicus GWIS/EFFIS, con selector de día de pronóstico.
  • Detecciones activas de incendio (satélites VIIRS y MODIS) de NASA FIRMS, con radio de búsqueda configurable.
Precipitación
SevillaCaicedoniaZarzalRoldanillo
  • Lluvia acumulada de los últimos 7 días con dato válido, por vereda, calculada a partir del punto diario de Open-Meteo (análisis ECMWF IFS/ERA5). Es la única capa de amenaza con la misma cobertura en Zarzal y Roldanillo 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.
Clima
SevillaCaicedoniaZarzalRoldanillo
  • 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.
  • 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. Cubre los cuatro municipios con el mismo detalle, incluidos Zarzal y Roldanillo.
  • No es una capa de amenaza y no entra en el riesgo compuesto: es información meteorológica de referencia.
Demografía
SevillaCaicedoniaZarzalRoldanillo
  • Población proyectada del DANE (2018–2042) por municipio, con desagregación urbano/rural y hombres/mujeres.
  • Cruce con el peor nivel de amenaza por deslizamiento registrado en cada municipio.
Hidrantes
Casco urbano de Sevilla
  • Geolocaliza al usuario (o un punto elegido manualmente en el mapa) y resalta el hidrante más cercano, con la distancia en línea recta y la ruta más corta por calles trazada con OSRM.
  • Instituciones educativas, de salud y de gobierno cercanas, señaladas como polígonos con su huella real (no puntos ni círculos), para diferenciarlas visualmente de los hidrantes.
  • Capa permanente, sin necesidad de activarla por separado.
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 expuestos por nivel de amenaza en cada panel. Cubre Sevilla y Caicedonia; Zarzal y Roldanillo no tienen 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, Roldanillo (~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, pues 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 por incendios forestales (zonificación oficial)

RED LabOT

ArcGIS FeatureServer

Polígonos de amenaza por incendio forestal, por vereda rural: digitalización estática del plan de uso del suelo (PBOT) 2014 de cada municipio, sin un modelo computacional detrás. Ya no se muestra en el mapa de incendios (ver el modelo propio, abajo, que la reemplaza como única fuente del color).

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 incendios forestales

Vigía (cálculo propio, sobre el Sistema Canadiense de Índices Forestales de Incendio)

Cálculo propio sobre APIs REST abiertas

Combina pendiente y cercanía a vías (reutilizadas del modelo propio de deslizamiento), recurrencia histórica de focos de NASA FIRMS (ver la ficha siguiente) y el Índice Meteorológico de Incendio (FWI) de hoy (ver la ficha siguiente), calculado en el centroide de cada vereda. Reemplaza a AmenazaIncendios como fuente del color del mapa de incendios y extiende la cobertura a los cuatro municipios, incluidos Zarzal y Roldanillo, que esa capa nunca cubrió. Ver la sección "Metodología" más abajo para el detalle completo, paso a paso.

Cobertura
Sevilla, Caicedonia, Zarzal, Roldanillo (~89 centroides de vereda)
Licencia / términos
N/A: calculado por la app a partir de fuentes abiertas
Actualización
Pendiente y vías reutilizadas del modelo de deslizamiento; recurrencia histórica cada 6 horas; FWI cada hora
Ver servicio
Recurrencia histórica de focos activos (VIIRS + MODIS)

NASA FIRMS (LANCE, EOSDIS)

API CSV (requiere clave gratuita)

Detecciones de las cuatro fuentes FIRMS (VIIRS_SNPP_NRT, VIIRS_NOAA20_NRT, VIIRS_NOAA21_NRT y MODIS_NRT, las mismas que la capa en vivo "Focos activos" ofrece) de los últimos 150 días, obtenidas paginando el mismo endpoint area/csv en bloques de 5 días por fuente (el límite de esta clave de mapa), y deduplicadas entre plataformas de la misma familia de sensor antes de contar. Usada como el factor de mayor peso (60% del factor estático) del modelo propio de amenaza por incendios: evidencia directa de dónde ha ardido antes, en vez de un indicio indirecto.

Cobertura
Global (recortada al área de estudio)
Licencia / términos
Datos públicos de la NASA
Actualización
La app cachea cada ventana de 5 días por 6 horas
Ver servicio
Índice Meteorológico de Incendio (FWI), calculado por esta app

Vigía (implementación propia del sistema del Servicio Forestal de Canadá)

Cálculo propio sobre la API de archivo histórico de Open-Meteo

Las ecuaciones estándar del Sistema Canadiense de Índices Forestales de Incendio (Van Wagner, 1987; Van Wagner y Pickett, 1985), las mismas detrás de la capa de pronóstico FWI de Copernicus GWIS/EFFIS ya disponible en el mapa, calculadas de forma independiente a partir de temperatura, humedad, viento y lluvia diaria de los últimos 60 días por centroide (archivo histórico de Open-Meteo), en vez de leídas de esa capa: su WMS es solo de teselas, sin consulta por punto (GetCapabilities la marca queryable="0").

Cobertura
Sevilla, Caicedonia, Zarzal, Roldanillo (~89 centroides de vereda)
Licencia / términos
N/A: calculado por la app a partir de datos abiertos
Actualización
Diaria, con 60 días de arranque por centroide; la app cachea 1 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 cuatro municipios, incluidos Zarzal y Roldanillo, 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, Roldanillo (89 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, Roldanillo
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, Roldanillo
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.

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 (precipitation_sum)

Open-Meteo

API REST (JSON)

Precipitación diaria puntual por análisis ECMWF IFS HRES (asimila observaciones reales) con reanálisis ERA5 más atrás: no es una lectura satelital directa. Consultada una vez por centroide de vereda para el acumulado de 7 días del mapa de precipitación, sumando días completos hasta ayer.

Cobertura
Global (recortada al área de estudio)
Licencia / términos
Uso no comercial gratuito, sin clave
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 Open-Meteo) 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. Se prefiere sobre NASA POWER, cuya 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.

Cobertura
Global (recortada al área de estudio; Sevilla, Caicedonia, Zarzal, Roldanillo)
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 y retroproyecciones de población municipal 2018–2042 (modelo cohorte-componente post-censo 2018). Publicado solo como un libro de cálculo nacional de ~930 MB sin API por municipio, así que las filas de Sevilla, Caicedonia, Zarzal y Roldanillo se extrajeron una vez y se versionan como JSON estático en el repositorio.

Cobertura
Sevilla, Caicedonia, Zarzal, Roldanillo
Licencia / términos
Datos abiertos del Estado colombiano
Actualización
Última publicación: 2025-07-30; 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" en los paneles de demografía y riesgo compuesto.

Cobertura
Sevilla, Caicedonia, Zarzal, Roldanillo
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, Roldanillo
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".

Cobertura
Sevilla, Caicedonia, Zarzal, Roldanillo
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, con 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/Roldanillo
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, con 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/Roldanillo
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, con 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/Roldanillo
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, Open-Meteo) y el puntaje de exposición sísmica (decaimiento espacial desde epicentros USGS/SGC) en un nivel compuesto (el mayor de los cinco, normalizado de 0 a 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, Roldanillo (~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 cuatro 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 cuatro 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, Zarzal y Roldanillo) 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ías, el terreno no cambia
Red vial (Overpass)
6 horas, mismo caché que el resto de capas de OpenStreetMap
Fallas geológicas (SGC)
30 días, la cartografía geológica no cambia
Inventario de movimientos en masa (SGC)
30 días, es un inventario histórico estático
Lluvia / disparador
1 hora, los 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 cuatro municipios, incluidos Zarzal y Roldanillo, 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 (89 en total entre Sevilla, Caicedonia, Zarzal y Roldanillo, 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 hora, mismo caché que la capa pública original
Hidrografía (quebradas y ríos)
30 días, el curso de un cauce cambia muy lentamente
Pendiente / planicie
reutilizada, es 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: modelo propio de amenaza por incendios forestales

Cálculo propio, no un índice oficial

El color del mapa de incendios ya no proviene de la zonificación oficial (PBOT 2014, `AmenazaIncendios`), a diferencia de las capas de zonificación que sí siguen aportando al modelo de deslizamiento y de inundación, esa capa es una digitalización estática de un plan de uso del suelo de 2014, sin ningún modelo computacional detrás que replicar. En su lugar, esta sección documenta el modelo propio que esta misma app calcula: pendiente y cercanía a vías (reutilizadas del modelo de deslizamiento), recurrencia histórica de NASA FIRMS y el Índice Meteorológico de Incendio (FWI) de hoy, calculado con las ecuaciones estándar del Sistema Canadiense de Índices Forestales de Incendio (Van Wagner, 1987), el mismo sistema detrás de la capa de pronóstico FWI de Copernicus GWIS/EFFIS ya disponible en el mapa, pero calculado aquí de forma independiente a partir de datos meteorológicos crudos.

1. Pendiente y cercanía a la vía más cercana (reutilizadas)

Entrada

Los mismos valores de pendiente y distancia a la vía más cercana ya calculados por el modelo de amenaza por deslizamiento (pasos 1 y 2 de esa metodología), en el mismo centroide.

Procesamiento

  • No se vuelve a consultar la API de elevación ni Overpass: se reutilizan directamente los resultados ya calculados para ese centroide.
  • pendiente_score = min(1, pendiente° / 45), mismo tope de 45° que el modelo de deslizamiento: terreno más empinado propaga el fuego más rápido.
  • vía_score = max(0, 1 − distancia_km / 1), mismo radio de influencia de 1 km. La mayoría de los incendios forestales en Colombia son de origen humano (quemas agrícolas, fuego escapado), así que la cercanía a una vía es un indicio real de riesgo de ignición, no solo de propagación.
2. Recurrencia histórica de incendios

Entrada

Detecciones activas de las cuatro fuentes FIRMS de NASA (VIIRS_SNPP_NRT, VIIRS_NOAA20_NRT, VIIRS_NOAA21_NRT y MODIS_NRT, las mismas que la capa en vivo "Focos activos" ofrece), paginadas hacia atrás en bloques de 5 días (el límite de la clave de este mapa) para cubrir una ventana de 150 días.

Procesamiento

  • Se pagina el endpoint area/csv de FIRMS con su parámetro de fecha final para cada una de las cuatro fuentes, retrocediendo en bloques de 5 días hasta cubrir 150 días, hasta 120 solicitudes (4 fuentes × ~30 bloques) con concurrencia limitada (8 a la vez) en vez de una sola consulta.
  • Detecciones repetidas de plataformas VIIRS distintas sobre el mismo punto y día se deduplican antes de contar, para no inflar la recurrencia por cobertura multisatélite de un mismo incendio.
  • Para cada centroide se cuentan las detecciones dentro de 2 km, en toda la ventana de 150 días.
  • El conteo se convierte a un puntaje 0–1 que satura en 3 detecciones o más: recurrencia_score = min(1, focos / 3).

Es evidencia directa de dónde ha ardido antes, no un indicio geomorfológico indirecto como los otros dos factores estáticos, por eso recibe el mayor peso del factor estático (60%), el mismo rol que cumple el inventario histórico de movimientos en masa en el modelo de deslizamiento.

3. Factor estático combinado

Entrada

Los tres puntajes anteriores.

Procesamiento

  • Promedio ponderado: factor_estático = (pendiente_score × 0.25 + vía_score × 0.15 + recurrencia_score × 0.6) / peso_total.
  • Si alguno de los tres factores no se pudo calcular para una vereda, el peso se renormaliza sobre los que sí estén disponibles.
4. Índice Meteorológico de Incendio (FWI) de hoy

Entrada

Temperatura máxima, humedad relativa mínima, viento máximo y lluvia diaria de los últimos 60 días por centroide, de la API de archivo histórico de Open-Meteo (misma fuente que el disparador de lluvia del modelo de deslizamiento).

Procesamiento

  • Se calculan los tres códigos de humedad de combustible del Sistema Canadiense de Índices Forestales de Incendio (Van Wagner, 1987) día por día, en orden, arrancando desde los valores estándar de primavera del Servicio Forestal de Canadá (FFMC=85, DMC=6, DC=15): el Código de Humedad de Combustibles Finos (FFMC), el Código de Humedad de la Hojarasca (DMC) y el Código de Sequía (DC), cada uno depende recursivamente del valor del día anterior.
  • 60 días de "arranque" antes de leer el valor de hoy, necesarios para que el DC (el código de decaimiento más lento) converja desde su valor inicial arbitrario, ya que este sistema no publica un valor de arranque propio para el trópico ecuatorial.
  • Con los códigos de hoy ya calculados, se obtiene el Índice de Propagación Inicial (ISI, de FFMC y viento) y el Índice de Combustible Disponible (BUI, de DMC y DC), y con ambos el Índice Meteorológico de Incendio (FWI) final, las mismas ecuaciones, con los mismos números de ecuación y las mismas constantes, que la implementación de referencia en R del Servicio Forestal de Canadá (paquete cffdrs).
  • El FWI se normaliza a un puntaje 0–1 que satura en FWI = 30, el límite de la clase "Extremo" del sistema original de Van Wagner: fwi_score = min(1, FWI / 30).

Es la misma familia de ecuaciones detrás de la capa de pronóstico FWI de Copernicus GWIS/EFFIS ya disponible como superposición en este mapa, pero esa capa WMS no permite extraer un valor por punto (su GetCapabilities la marca queryable="0", la misma limitación que ya tiene su capa de cobertura del suelo), así que este factor calcula las mismas ecuaciones de forma independiente a partir de datos meteorológicos crudos, en vez de leer el resultado de GWIS.

5. Puntaje final y nivel de amenaza

Entrada

El factor estático (paso 3) y el FWI de hoy (paso 4).

Procesamiento

  • Puntaje final = (factor_estático × 0.6 + fwi_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 mismo vocabulario de 4 niveles que ya usaba la capa oficial AmenazaIncendios (Muy bajo < 0.25, Bajo < 0.5, Medio < 0.75, Alto ≥ 0.75) y a los mismos tokens de color, sin introducir un quinto nivel ni nuevas variables CSS.
  • Se calcula una sola vez por centroide de vereda (~89 en total entre Sevilla, Caicedonia, Zarzal y Roldanillo) al resolver /api/veredas.

Si absolutamente ningún factor resolvió para una vereda, el resultado es nulo en todos los campos, nunca un puntaje inventado.

Caché por factor

Pendiente / vía (reutilizadas)
reutilizada, mismo caché ya pagado por el modelo de deslizamiento
Recurrencia histórica (NASA FIRMS)
6 horas, una ventana pasada de detecciones no cambia una vez publicada
Meteorología / FWI
1 hora, los días más recientes se revisan con nuevas observaciones

Qué no es este modelo

  • No es una calibración validada contra incendios ocurridos en la zona, los pesos y umbrales (0.25/0.15/0.6, 0.6/0.4, 45°, 1 km, 2 km, 3 detecciones, FWI = 30, 60 días de arranque) son elegidos por criterio propio siguiendo la misma estructura de factor estático + disparador dinámico que el modelo de deslizamiento, no ajustados con datos locales de incendios ocurridos.
  • Las ecuaciones del FWI en sí no son una invención de esta app, son el sistema estándar publicado por el Servicio Forestal de Canadá (Van Wagner, 1987), transcritas ecuación por ecuación desde la implementación de referencia en R (paquete cffdrs). Lo que sí es propio de esta app es calcularlas aquí, en vez de leerlas de la capa WMS de GWIS/EFFIS (que no permite extraer un valor por punto), y los 60 días de arranque elegidos para esta latitud ecuatorial, para los que el sistema no publica un valor de referencia.
  • La ventana de recurrencia histórica (150 días, las cuatro fuentes FIRMS) es una muestra de detecciones activas recientes, no un catálogo completo de todo incendio ocurrido alguna vez en la zona, un incendio anterior a esa ventana, o demasiado pequeño/breve para cualquiera de los sensores satelitales de FIRMS, no cuenta hacia este factor.
  • Se calcula en el centroide de cada vereda, no en una grilla densa, un solo valor de FWI y un solo conteo de recurrencia representan a toda la vereda.

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 (modelo propio), 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, incendios forestales y sismología (cada uno con su propio puntaje 0–1 continuo) y precipitación (solo con un nivel de 4 categorías, sin puntaje continuo propio).

Procesamiento

  • Deslizamientos, inundaciones e incendios: se reutiliza directamente el puntaje 0–1 ya calculado por cada modelo propio, nunca se recalcula.
  • 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 directamente desde aggregateVeredas() (lib/veredas/aggregate.ts), que ya calcula el modelo propio de incendios junto con los de deslizamiento e inundación, no hace falta un cruce aparte contra ninguna capa oficial.
  • Precipitación reutiliza /api/precipitacion/amenaza en su modo histórico de 7 días con Open-Meteo, 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
reutilizada, mismo caché que cada modelo individual (vía aggregateVeredas)
Incendios forestales (cruce por centroide)
1 hora, mismo caché que la capa AmenazaIncendios original
Precipitación (Open-Meteo, 7 días)
3 horas, mismo caché que /api/precipitacion/amenaza
Sismología (USGS en vivo / SGC histórico)
5 min / 1 día, mismo 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.
  • Precipitación no tiene 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), a diferencia de deslizamientos, inundaciones e incendios, que sí aportan una medida continua nativa de su propio modelo.

Marco teórico

De la "gestión del riesgo" a la transformación estructural. Esta sección explica por qué el panel de Demografía habla de vulnerabilidad social en vez de desastres naturales, y qué implica esa diferencia para leer el Índice de Vulnerabilidad Social (IVS) que calcula esta plataforma.

1. Crítica a la categoría "desastre natural"

La categoría "desastre natural" naturaliza lo que en realidad es producto histórico: presenta como inevitable una pérdida que resulta de decisiones concretas sobre dónde se permite construir, qué vivienda se ofrece a quién y qué servicios públicos se mantienen durante décadas. También individualiza la responsabilidad: culpa a quien "vive en un lugar peligroso" en vez de preguntar por qué vive ahí. Esta plataforma no predice desastres naturales porque, en ese sentido, no existen: existen fenómenos naturales una crecida, un sismo, un deslizamiento, y existen condiciones sociales previas que convierten ese fenómeno en catástrofe para una población específica y no para otra.

2. Riesgo como decisión, no como fenómeno

La teoría de sistemas de Niklas Luhmann distingue riesgo de peligro: el riesgo es contingencia atribuible a una decisión; el peligro es contingencia del entorno. Quien "decide" producir el daño no es la crecida ni el sismo, sino quienes permiten asentamientos en zonas expuestas sin infraestructura adecuada, no garantizan vivienda digna para la población de menores ingresos, o mantienen servicios públicos precarios durante años. Un IVS alto en Sevilla, Caicedonia, Zarzal o Roldanillo no describe un "riesgo natural" de ese lugar: describe el resultado acumulado de decisiones (o de su ausencia) sobre ese lugar.

3. Vulnerabilidad como relación social, no como atributo

La vulnerabilidad no es un atributo inherente de una persona o de un lugar: resulta de relaciones de producción que concentran la tierra buena en pocas manos y empujan a otros hacia laderas inestables, que mercantilizan la vivienda hasta volver inaccesible el suelo seguro, y que precarizan el trabajo hasta volver imposible invertir en mejorar una casa. Un mismo aguacero (tesis) sobre una misma ladera no produce el mismo resultado en dos hogares con vulnerabilidad social distinta (antítesis), lo que llamamos "desastre" es esa exposición diferencial a la pérdida, no una síntesis natural.

4. Qué implica esto para decidir

El IVS por sí solo no prioriza nada, cruzado con el riesgo físico compuesto que ya calcula esta plataforma, sí señala dónde invertir primero. Cuatro frentes concretos, en orden decreciente de urgencia cuando el IVS y el riesgo físico coinciden en un mismo lugar:

  • Municipios con IVS combinado alto. Donde el IVS coincide con un riesgo compuesto alto o muy alto: inversión pública extraordinaria en infraestructura básica, mejoramiento integral de vivienda y regularización de tenencia de la tierra, antes que reasentamiento forzoso.
  • Control urbano preventivo. En manzanas o veredas donde la exposición física ya es alta, restringir nuevos asentamientos sin infraestructura adecuada y exigir estándares de construcción realistas para la capacidad económica local.
  • Universalización de servicios. Acueducto y alcantarillado como derecho, no como mercancía, es la dimensión con mayor peso individual (25%) en el IVS precisamente porque su ausencia es la más directamente atribuible a decisión pública, no a geografía.
  • Cobertura educativa y dependencia económica. Donde Educación o Trabajo dominan el IVS de un municipio, la respuesta no es un mapa: es transporte escolar subsidiado y programas de formalización laboral, el dato solo señala dónde falta esa inversión.

5. Límites de este índice

Ningún índice cuantitativo captura la totalidad de una experiencia vivida. Los datos del IVS provienen del Censo Nacional de Población y Vivienda 2018 del DANE, tienen un rezago de varios años y no incluyen la dimensión de Salud, que esta plataforma excluye explícitamente en vez de inventarla, por falta de un dato municipal 2018 confiable para estos 4 municipios (ver la explicación completa en el panel de Demografía). Georeferenciar la vulnerabilidad puede estigmatizar un territorio si se usa sin este contexto. El compromiso de esta plataforma es que el dato se use para exigir transformación de condiciones, no para etiquetar poblaciones como "en riesgo", la vulnerabilidad mide ausencia de derechos, no ausencia de capacidad humana.

Referencias teóricas

  • Luhmann, N. (1993). Risk: A Sociological Theory. Walter de Gruyter.
  • Wisner, B., Blaikie, P., Cannon, T. y Davis, I. (2004). At Risk: Natural Hazards, People's Vulnerability and Disasters (2.ª ed.). Routledge.
  • Maskovsky, J. (2001). Beyond Disaster Relief: Toward an Anthropology of Emergency. Journal of Latin American and Caribbean Anthropology.

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

MapLibre GL, vía react-map-gl, importado dinámicamente con next/dynamic({ ssr: false }) para evitar que el renderizado en servidor choque con las dependencias de window/document del motor de mapas. Un único lienzo con capas combinables (hasta tres a la vez) y vista 3D: cada capa aporta fuentes GeoJSON, capas de símbolos/círculos, teselas vectoriales y overlays raster o WMS según la forma de su fuente, todo compuesto en un único WebGL canvas.

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.

Estado compartible de la vista

El estado del mapa (capas activas, municipio, vista 2D/3D, zoom y centro) se serializa en la URL con los parámetros layers, municipio, is3D, zoom y center, y se guarda además en localStorage (lib/laboratorio/layers.ts). Así "Compartir vista" produce un enlace reproducible, y una visita sin enlace ni estado guardado abre con la capa de Riesgo compuesto. La documentación abre en una pestaña normal del navegador porque es contenido extenso pensado para desplazarse, imprimirse o guardarse como marcador.

Exportación a PDF

Los botones "Exportar como PDF" de los reportes de Riesgo compuesto y Demografía usan html2canvas-pro para capturar el panel 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
24
  • 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)
  • react-map-gl
  • 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
3
  • @mapbox/vector-tile
  • maplibre-gl
  • pbf
Apache-2.0
2
  • class-variance-authority
  • typescript
ISC
1
  • lucide-react
MPL-2.0
1
  • @vercel/analytics
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.