CopernicusLAC Panamá Hackathon - Reducción del riesgo de desastres
Desafío 2: Predecir y prepararse para futuros desastres
Equipo:
Dr. Jose Manuel Ramirez Zarate (Asesor)
Dr. Luis Antonio Gonzalez Uribe (Asesor)
Benggi Angel Vazquez Favila
Cesar Alejandro Gonzalez
Diego Zahid Carballo Ramirez
Diana Teresa Gonzalez Monge
Darik Alexis Sotelo Larios
Gibran Alonso Rendon Robles
Los desastres naturales representan una amenaza significativa para la sociedad, afectando a comunidades con pérdidas materiales y humanas. La rápida urbanización y los cambios climáticos incrementan la frecuencia e intensidad de eventos como inundaciones, incendios y tormentas. En respuesta a este desafío, hemos desarrollado una plataforma en línea, basada en la tecnología Copernicus, para predecir y prevenir desastres en áreas específicas. Esta plataforma permite el monitoreo y análisis de datos satelitales para alertar a las comunidades en tiempo real y proporcionar medidas preventivas para minimizar los daños.
Dr. José Manuel Ramírez Zarate (Asesor): Experto en análisis de datos geoespaciales y tiene una solida formación académica y amplia experiencia en el uso de tecnologías de satélites y tiene a su nombre varios artículos científicos que respaldan su conocimiento y experiencia.
Dr. Luis Antonio González Uribe (Asesor): Experto en el manejo de datos meteorológicos y tiene una sólida formación en ingeniería mecatrónica con un profundo conocimiento en la predicción y modelación de fenómenos naturales. Con varias patentes y artículos científicos a su nombre, su enfoque innovador en la aplicación de tecnologías avanzadas será esencial para mejorar la precisión y confiabilidad de los modelos de análisis utilizados en el proyecto.
Benggi Ángel Vázquez Favila: Especialista en programación y desarrollo de algoritmos de visión artificial, encargado de implementar modelos avanzados de análisis de imágenes para la detección y predicción de eventos naturales.
César Alejandro González: Responsable de la integración de la plataforma con Python utilizando un servidor Flask, asegurando una comunicación eficiente y segura entre el backend y la interfaz de usuario para el procesamiento de datos en tiempo real.
Diego Zahid Carballo Ramírez: Programador especializado en visión artificial, colabora en el desarrollo de soluciones para el análisis de datos geoespaciales, optimizando la precisión de los algoritmos predictivos y de monitoreo visual.
Gibran Alonso Rendon Robles: Programador enfocado en la implementación de la comunicación entre la página web y Python a través de un servidor Flask, permitiendo una arquitectura de datos flexible y escalable para la plataforma.
Diana Teresa Gonzalez Monge: Diseñadora web, responsable de la creación de una interfaz intuitiva y estética que facilite la experiencia del usuario. Aporta en la organización visual de la información y en el diseño adaptable a dispositivos.
Darik Alexis Sotelo Larios: Desarrollador web, encargado de la programación y estructuración de la página, asegurando la funcionalidad, accesibilidad y rendimiento de la plataforma.
Utilizamos una combinación de satélites de la Agencia Espacial Europea para recopilar datos ambientales que permitan realizar análisis detallados sobre desastres naturales. Los satélites clave en este proyecto son:
4.1. Sentinel-1
4.2. Sentinel-2
4.3. Sentinel-5P
Monitoreo de CO (Monóxido de Carbono): Facilita la detección temprana de incendios forestales al identificar niveles anormales de monóxido de carbono en áreas de vegetación densa.
¿Cuál de los 3 retos está resolviendo y cómo contribuye a resolver los problemas a los que se enfrentan la reducción del riesgo de desastres?
Nuestra plataforma responde al Desafío 2, que plantea la necesidad de predecir y prepararse ante futuros desastres naturales, proporcionando una solución innovadora basada en la tecnología satelital y el análisis avanzado de datos. La herramienta permite a los usuarios localizar y analizar desastres de forma accesible, a través de un sistema intuitivo que facilita la acción preventiva en zonas vulnerables y reduce el impacto de estos fenómenos en la población.
5.1. Localización y Monitoreo
Inicialmente, la plataforma cuenta con áreas geográficas predeterminadas para monitoreo intensivo, tales como Ensenada, B.C., México (México) y Río Grande do Sul (Brasil), regiones estratégicas seleccionadas por su vulnerabilidad a inundaciones, incendios forestales y otros eventos de gran impacto. En cada una de estas zonas, el sistema proporciona un análisis de datos en tiempo real que permite a los usuarios identificar y monitorear cambios en las condiciones climáticas y ambientales que pueden indicar la ocurrencia de desastres naturales.
5.2. Pagina y Análisis de Datos
La página se ha diseñado para ofrecer un menú donde los usuarios pueden seleccionar el tipo de desastre natural que desean monitorear, como inundaciones, incendios forestales o sequías. Al ingresar las coordenadas específicas de la zona de interés, el sistema genera un mapa interactivo que muestra la situación actual de la región y destaca las áreas en riesgo.
Actualmente, la plataforma proporciona análisis específicos para Ensenada, B.C., México, utilizando datos históricos y actuales que permiten detectar patrones de riesgo en tiempo real. Este enfoque está siendo ampliado para permitir que los usuarios seleccionen cualquier área del mundo, delimitando polígonos personalizados que definan las zonas de interés con un margen de error estimado entre 5% y 10%. Esta personalización es fundamental para la eficacia de las acciones preventivas, ya que permite focalizar los esfuerzos en áreas específicas y responder de manera proactiva a los desastres naturales.
5.3. Expansión del Alcance y Mejora Continua
En el futuro, planeamos incorporar más áreas predeterminadas y mejorar la precisión de los algoritmos de predicción, trabajando hacia un margen de error aún más bajo. La inclusión de nuevas capas de datos y el perfeccionamiento de modelos predictivos nos permitirá expandir la plataforma para cubrir una gama más amplia de fenómenos naturales y ofrecer recomendaciones adaptadas a la situación específica de cada región.
Al ofrecer un sistema intuitivo y técnicamente robusto, esta solución posiciona a los usuarios y autoridades locales en el centro de la prevención de desastres, promoviendo una respuesta rápida y eficaz que minimice las pérdidas y contribuya a la seguridad y resiliencia de las comunidades.
Figura 1: Sistema de búsqueda para consulta de desastres naturales
6.1. Inundaciones y Tormentas
En el análisis predictivo de desastres naturales, específicamente en la predicción de inundaciones, tornados y tormentas, presentamos una serie de gráficas basadas en datos recolectados durante los últimos cuatro años. Estos gráficos han sido diseñados para ofrecer una comprensión más profunda de las variables ambientales clave que pueden influir en la ocurrencia de estos eventos extremos.
La primera gráfica ilustra el comportamiento de la humedad en el océano y la intensidad de las olas. En este caso, el umbral de alerta se sitúa en los-10 decibeles; cuando el nivel de retrodispersión (medido en decibeles) supera este límite, se considera que existe una alta probabilidad de inundación. Este indicador resulta crítico, ya que refleja la cantidad de energía devuelta desde la superficie del mar, lo cual puede interpretarse como un aumento en la actividad oceánica y la humedad superficial, factores directamente asociados con eventos de inundación en zonas costeras y áreas cercanas.
La segunda gráfica muestra el comportamiento de la humedad del suelo, particularmente bajo la vegetación o áreas verdes. Aquí, se compara la retrodispersión en decibeles de la banda de radar VV con otros parámetros, lo que permite evaluar las variaciones en la humedad del suelo. Este análisis es útil para anticipar eventos como tormentas intensas o tornados, que pueden saturar el suelo y generar acumulación de agua. Al identificar patrones en la retrodispersión gamma VV, es posible predecir la probabilidad de fenómenos climáticos extremos que podrían derivar en inundaciones o desastres debido al exceso de agua.
Ambas gráficas proporcionan información valiosa para la evaluación de riesgos y permiten una interpretación detallada de los cambios en las condiciones ambientales que pueden contribuir a la predicción y prevención de desastres naturales. El análisis de estos datos en tiempo real y su comparación con patrones históricos representa una herramienta fundamental para la toma de decisiones y la implementación de medidas preventivas en zonas vulnerables, como demuestra la figura 2.
Figura 2: Gráfica de decibeles para VV y VH de Ensenada, B.C., México 2020 a 2024
Figura 3: Gráfica de decibeles para VV y VH de Río de Grande do Sul, Brasil 2020 a 2024
En la imagen satelital obtenida de Ensenada, B.C., México. (figura 4), y Rio de Grande do Sul, Brasil(figura 4) se visualiza una diferenciación temporal en la re presentación de agua estancada en el área. Las zonas sombreadas en rosa indican la acumulación de agua en distintos periodos entre 2016 y 2024. Esto permite observar las áreas con tendencia a retener agua a lo largo del tiempo, lo cual resulta útil para evaluar patrones de inundación recurrente o la persistencia de áreas de encharcamiento.
Por otro lado, la zona azul refleja el estado actual, correspondiente a la fecha de captura del 12 de octubre de 2024 para Ensenada y del 24 de octubre de 2024 para Río Grande do Sul, proporcionando una referencia precisa del nivel y la distribución del agua en el presente. Esta comparación visual facilita el análisis de los cambios en la cobertura de agua y permite evaluar el impacto de posibles eventos climáticos o de infraestructura en la región. Estas observaciones son de gran relevancia para la planificación urbana, la gestión de recursos hídricos y la implementación de medidas preventivas frente a riesgos de inundación.
Figura 4: Comparación de estancamiento de agua (2016-2024 y actualidad) en Ensenada, B.C., México
Figura 5: Comparación de estancamiento de agua (2016-2024 y actualidad) en Río de Grande do Sul, Brasil
En la figura 6 y 7 se muestra los mapas de las calles a evitar en una inundación en las ciudades que nosotros analizamos. Utilizando visión artificial detectamos los patrones o columnas de los bordes usando algoritmo canny junto con el desenfoque gaussiano para poder detectar los callejones que a simple vista no se lograrían detectar. Con la finalidad de poder dar Alerta a las personas que zonas evitar previo a una inundación.
Figura 6: Gráfico de zonas de escape disponibles en Ensenada, B. C., México
Figura 7: Gráfico de zonas de escape disponibles en Río de Grande do Sul, Brasil
La gráfica mostrada en la figura 8 es utilizada para la predicción de incendios, nos muestra el estado del aire, monitoreando el riesgo en la concentración del monóxido de carbono con un nivel de preocupación a partir de los 0.5 mol/m2 y una alerta al llegar al 0.1 mol/m2
Figura 8: Gráfica de estado de aire
Usando el sátelite sentinel-5P se obtuvo la diferencia de monóxido de carbono en el ambiente donde la mayor intensidad de color representa una concentración elevada de CO, indicando que un bioma esta ardiendo y que la calidad de la atmósfera esta siendo afectada por la oxidación de metano, efecto secundario del monóxido de carbono, como se muestra en la figura 9.
Figura 9: Gráfico de intensidad de monóxido de carbono (CO) en mol/m2
7.1. Inundaciones y Tormentas
7.1.1. Código para comparación
El código realiza un análisis detallado de imágenes para detectar y visualizar áreas de agua estancada y vegetación en una región, utilizando índices de vegetación (NDVI) y de agua (NDWI). Se procesan imágenes estáticas y GIFs para identificar áreas de interés, y se utiliza el color azul para resaltar zonas de vegetación y el color rosa para zonas de agua. El código emplea hilos para optimizar el procesamiento simultáneo de los GIFs y superpone los resultados en una imagen de fondo para una mejor visualización.
Preparación de la imagen de fondo y de entrada:
Carga una imagen de fondo y las imágenes de NDVI y NDWI, verificando que ambas coincidan en tamaño. Si las dimensiones son distintas, el código se detiene para evitar errores.
Detección en imágenes estáticas:
Estas áreas resaltadas en azul representan zonas de vegetación y agua detectadas en las imágenes estáticas.
Procesamiento de los GIFs en paralelo:
Utilizando hilos para optimizar el rendimiento, el código procesa los GIFs de NDVI y NDWI, cuadro por cuadro, y destaca áreas similares a las imágenes estáticas.
Visualización en tiempo real:
A medida que se procesan los cuadros de los GIFs y se detectan las áreas, el código crea una mezcla entre la imagen de fondo y la máscara de color rosa, que contiene las áreas de interés de los GIFs. Esto permite que las áreas detectadas en cada cuadro del GIF se vean superpuestas en la imagen de fondo en tiempo real, destacadas en rosa y azul.
7.1.2. Código para gráfica de predicción
Este código implementa una predicción lineal de series temporales mediante modelos LSTM (Long Short-Term Memory) para datos VV y VH obtenidos de imágenes de radar Sentinel-1, permitiendo proyectar valores futuros con un rango de error mínimo.
Carga y preprocesamiento de datos:
La función cargar datos permite leer cualquier archivo CSV que contenga fechas y valores promedio (e.g., VV o VH). Convierte la columna de fechas en índice de tipo fecha y utiliza interpolación lineal para rellenar cualquier valor faltante en la columna de interés. Este preprocesamiento asegura la continuidad de los datos para que el modelo pueda entrenarse con precisión.
Creación de secuencias temporales:
Create sequences organiza los datos en secuencias de longitud fija (sequence length). Esto estructura los datos de manera que el modelo LSTM pueda capturar patrones a través de ventanas de tiempo, lo que facilita la predicción de valores futuros.
Predicción de valores futuros:
La función predict future genera predicciones al recorrer cada secuencia hasta n\_futuros pasos hacia adelante. Para cada predicción, el modelo utiliza la secuencia más reciente como entrada, y la ajusta en cada iteración para generar una nueva predicción, expandiendo así el horizonte de pronóstico.
Procesamiento y entrenamiento del modelo:
La función principal procesar entrenar predecir inicia cargando y escalando los datos VV y VH usando MinMaxScaler. Luego, crea secuencias temporales y etiquetas para ambos conjuntos de datos. Cada modelo LSTM está diseñado con dos capas de LSTM y una capa de dropout para reducir el sobre-ajuste. Se entrena por separado para los datos de VV y VH, ajustando el número de épocas y el tamaño del batch para optimizar la precisión.
Proyección de valores futuros y desnormalización:
Para proyectar valores futuros, se emplean las secuencias finales de datos escalados para los conjuntos VV y VH. Las predicciones generadas se desescalan para traducir los valores de vuelta a su escala original, facilitando la interpretación de los resultados en términos de las unidades originales.
Visualización de resultados:
El código finaliza graficando los datos históricos y las predicciones para VV y VH en una disposición de dos sub gráficas. Las líneas azules y verdes representan el comportamiento histórico, mientras que las predicciones futuras aparecen en rojo. Esta visualización ayuda a interpretar las tendencias y permite evaluar visualmente la precisión de las predicciones en relación con los datos históricos.
7.1.3. Código para rutas de escape
Este código utiliza técnicas de procesamiento de imágenes para identificar y resaltar calles en una imagen, aplicando detección de bordes con el algoritmo de Canny junto con un desenfoque gaussiano para mejorar la precisión en áreas complejas.
Carga y preparación de la imagen:
La función detectar calles comienza cargando una imagen de la ruta especificada. Si la imagen no se carga correctamente, muestra un mensaje de error y se detiene para evitar errores posteriores.
Conversión a escala de grises:
Para simplificar el análisis, convierte la imagen a escala de grises. Esto permite al algoritmo Canny enfocarse en la detección de bordes sin distracciones de color, optimizando así la precisión en las áreas de interés (calles).
Aplicación de desenfoque gaussiano:
A continuación, aplica un filtro de desenfoque gaussiano con un tamaño de kernel de 7x7. Esta técnica suaviza la imagen y reduce el ruido de fondo, permitiendo que el algoritmo de detección de bordes se enfoque en los contornos significativos y minimice los falsos positivos.
Detección de bordes con el algoritmo de Canny:
El algoritmo Canny se emplea con umbrales bajos y altos de 50 y 150, respectivamente, para identificar bordes claros y nítidos en la imagen. Estos bordes representan las zonas de transición en las calles, generando un mapa inicial de bordes en la imagen.
Engrosamiento de los bordes:
Para hacer los bordes más visibles, el código aplica una operación de dilatación con un kernel de 5x5. Esto engrosa los contornos detectados, permitiendo que las calles se distingan mejor en el resultado final.
Creación de una máscara para resaltar las calles:
Con los bordes engrosados, crea una máscara de la misma forma que la imagen original y pinta de verde las áreas correspondientes a los bordes. Esto sirve como una capa de superposición para indicar visualmente las calles detectadas.
Combinación de la imagen y la máscara:
La imagen original se mezcla con la máscara usando un peso de 0.8 para la imagen y 0.2 para la máscara, generando un resultado donde las calles aparecen resaltadas en verde sobre la imagen de fondo.
Visualización del resultado
Finalmente, muestra la imagen con las calles resaltadas en una ventana de visualización bajo el título "Zonas con posible peligro".
7.1.4. Código para búsqueda por coordenadas
En este código usamos en forma de interacción la API de sentinel hub para encontrar en el polígono o en este caso las coordenadas ya predilectas, una capa de NDWI para después procesar y transformar en gif con las fechas que se selecciona por anterioridad usando lenguaje evascript puesto en python.
7.2. Incedios
7.2.1 Código para Incendios
Este código detecta áreas potenciales de incendio en un GIF mediante la identificación de colores característicos de altas temperaturas, como amarillo, rojo y naranja, utilizando técnicas de procesamiento de imágenes y detección de contornos en OpenCV. El objetivo es alertar sobre un posible incendio inminente basándose en la presencia y tamaño de estas áreas, mostrando una advertencia visual al usuario y calculando un riesgo relativo promedio para su almacenamiento en un archivo de texto.
Configuración inicial:
Se importa el módulo OpenCV (cv2) para el procesamiento de imágenes y numpy para el manejo de matrices. También se utiliza tkinter para mostrar un mensaje de advertencia si se detecta un posible incendio.
Mostrar una alerta de advertencia:
La función show warning genera un cuadro emergente con el mensaje "¡Incendio inminente detectado!" utilizando tkinter. Este cuadro se muestra una sola vez por sesión de análisis, ayudando a alertar al usuario de manera visual y en tiempo real si se detecta un área de calor significativa en el GIF.
Analizar Gif:
La función principal detect fire se encarga de cargar el GIF y analizar cada cuadro para detectar colores característicos de fuego o calor.
Definición de rangos de color en HSV:
Los colores de interés (amarillo, rojo vivo y naranja) se representan en el espacio de color HSV, y se definen umbrales específicos para cada uno:
Análisis de cada cuadro del GIF:
La función entra en un ciclo donde lee cada cuadro del GIF, aplicando un retraso de 1 segundo entre cada uno para simular la inspección de fotogramas en tiempo real.
Conversión a espacio de color HSV:
Para cada cuadro, se convierte la imagen al espacio de color HSV usando cv2.cvtColor, lo que permite trabajar con umbrales de color de manera más precisa.
Creación y combinación de máscaras de Para detectar las áreas con los colores objetivo, se crean máscaras binarias de cada color usando cv2.inRange, donde los píxeles dentro de los rangos definidos se establecen como "blancos" en la máscara. Luego, estas máscaras se combinan en una sola (combined mask) para identificar todas las áreas potenciales de calor en el cuadro.
Detección de contornos y cálculo de áreas:
Mediante cv2.findContours, el código encuentra los contornos de las áreas detectadas en combined mask. Filtra las áreas pequeñas (inferiores a 400 píxeles) para evitar detecciones falsas.
Generación de la advertencia:
Si se encuentra un contorno con un área significativa y aún no se ha mostrado la advertencia, se activa el cuadro de advertencia show warning.
Dibujo de rectángulos y datos en el cuadro:
Se dibujan rectángulos alrededor de los contornos detectados, resaltando visualmente las áreas de calor. También se agrega información sobre el ancho, alto y área de cada contorno en el cuadro.
Cálculo y almacenamiento del riesgo relativo:
Una vez completado el análisis de todos los cuadros, el código calcula el promedio de las áreas detectadas. Este valor representa el nivel de riesgo relativo basado en el tamaño de las áreas de calor detectadas en la imagen.
8.1. Presupuesto y Gastos Para asegurar la operatividad y el mantenimiento de la plataforma, hemos calculado los siguientes gastos anuales:
Esto da un presupuesto anual estimado entre $1,000 y $2,000 USD para cubrir estos costos, asegurando el mejor rendimiento y confiabilidad para los usuarios.
Para el lanzamiento inicial, se requiere una inversión inicial de $500 a $800 USD destinada a la fase de prueba y desarrollo del prototipo de la página, validando funcionalidad, accesibilidad y capacidad de respuesta del sistema bajo diferentes condiciones de uso.
8.2. Modelo de Ingresos
Se proyectan dos niveles de suscripción para acceder a la plataforma:
8.3. Punto de Equilibrio
Para recuperar la inversión inicial, se ha estimado que necesitamos alcanzar al menos 28 suscriptores premium y 10 suscriptores básicos en el primer año de operación. Con esta base de usuarios, la plataforma cubriría sus costos iniciales y comenzaría a generar un margen de utilidad para financiar mejoras adicionales y expandir sus capacidades.
8.4. Potencial de Escalabilidad y Expansión
La plataforma podrá expandirse mediante alianzas estratégicas con instituciones educativas, empresas de seguros y agencias gubernamentales interesadas en la gestión de riesgos. A través de estos canales, se puede ampliar la gama de usuarios y explorar paquetes empresariales que incluyan análisis avanzados y personalización de datos, aumentando así las fuentes de ingresos.
8.5. Descripción de Paquetes