Integración y Arquitectura Completa
Ahora que conoces cada fuente de datos, aprenderemos cómo integrarlas en un sistema robusto y completo.
Arquitectura del Sistema
Integrador de Datos - Concepto
Datos que Debe Manejar tu Integrador
Estructura de datos integrados que tu aplicación debe combinar:
| Fuente | Datos Clave | Campos Importantes |
|---|---|---|
| TEMPO | NO₂, O₃, HCHO (columna) | Valor, quality_flag, timestamp, disponibilidad |
| OpenAQ | PM2.5, PM10 (superficie) | Valor, número de estaciones, distancia, timestamp |
| Weather | Condiciones meteorológicas | Temperatura, viento (velocidad/dirección), humedad, presión |
| FIRMS | Incendios activos | Cantidad, distancia más cercana, FRP total, nivel de impacto |
Estrategia de Integración
Pasos conceptuales para integrar todas las fuentes:
- Fetch paralelo: Consultar todas las APIs simultáneamente para reducir latencia total
- Manejo de fallbacks: Si TEMPO no disponible (noche, nubes), usar solo fuentes terrestres
- Filtrado de calidad: Descartar datos con quality_flag > 1 o timestamps muy antiguos
- Normalización: Convertir todas las unidades a formato consistente
- Retornar estructura unificada: Un solo objeto con todos los datos organizados por fuente
Optimizaciones clave:
- Hacer requests en paralelo (no secuenciales) → ahorra 3-4 segundos
- Cachear resultados por 60 minutos para TEMPO, 10-30 min para OpenAQ
- Verificar cobertura TEMPO antes de consultar (evita requests innecesarios)
- Implementar timeouts (5-10 segundos máximo por fuente)
Motor de Análisis - Componentes Clave
Qué Debe Hacer tu Motor de Análisis
Funcionalidades principales que debe incluir:
| Componente | Qué Hace | Inputs | Outputs |
|---|---|---|---|
| Calculador AQI | Calcula AQI para cada contaminante (PM2.5, O₃, NO₂) | Concentraciones | Valores AQI (0-500) |
| Identificador de Factores | Detecta qué está causando contaminación | Datos integrados | Lista de factores (incendios, viento, T°) |
| Generador de Alertas | Crea recomendaciones de salud | AQI + factores | Mensajes para población general y sensibles |
| Motor de Pronóstico | Predice evolución próximas horas | Meteorología + tendencias | Pronóstico 2h y 6h |
Factores Contribuyentes a Identificar
Variables a analizar para explicar niveles de contaminación:
| Factor | Cómo Detectarlo | Severidad | Mensaje Típico |
|---|---|---|---|
| Incendios activos | FIRMS count > 0 y distancia < 100km | Alta si FRP > 500MW | "X incendio(s) a Y km - humo detectado" |
| Viento débil | wind_speed < 2 m/s | Moderada | "Viento débil - acumulación de contaminantes" |
| Formación de O₃ | T° > 30°C + hora 12-18h | Alta | "Condiciones ideales para ozono - evitar ejercicio" |
| HCHO elevado | TEMPO HCHO > 3×10¹⁶ | Alta | "Humo o emisiones industriales detectadas" |
| NO₂ elevado | TEMPO NO₂ > 8×10¹⁵ | Moderada | "Tráfico intenso o actividad industrial" |
Generación de Pronósticos
Reglas simples para predecir evolución:
| Condición | Pronóstico 2h | Pronóstico 6h | Tendencia |
|---|---|---|---|
| T° > 28°C + mediodía | "O₃ continuará aumentando" | "O₃ descenderá al atardecer" | Empeorando → Mejorando |
| Incendios cercanos | "Humo puede desplazarse" | "Depende de dirección del viento" | Empeorando |
| Viento < 2 m/s | "Acumulación continúa" | "Poca mejora esperada" | Empeorando |
| Viento > 5 m/s | "Dispersión activa" | "Mejoría esperada" | Mejorando |
| Hora 16-20h + O₃ alto | "O₃ comenzará a bajar" | "Mejoría gradual" | Mejorando |
Para calcular AQI de cada contaminante, necesitas:
- Breakpoints EPA oficiales (tablas de conversión concentración → AQI)
- Fórmula lineal de interpolación entre breakpoints
- Referencias: EPA AQI Calculator - Herramienta oficial
El AQI final de tu app = máximo AQI entre todos los contaminantes medidos.
Flujo del Sistema Completo
Secuencia de operaciones de tu aplicación:
- Usuario solicita datos → Proporciona lat/lon
- Fetch datos integrados → Consultar TEMPO + OpenAQ + Weather + FIRMS en paralelo
- Validar y filtrar → Descartar datos de baja calidad
- Calcular AQI → Para cada contaminante disponible
- Identificar factores → Analizar qué está causando los niveles actuales
- Generar pronóstico → Predecir evolución basado en meteorología
- Crear recomendaciones → Mensajes específicos según AQI y factores
- Retornar respuesta → Estructura unificada con todos los resultados
Ejemplo de Respuesta Final
Qué debe contener la respuesta de tu API:
| Sección | Contenido | Ejemplo |
|---|---|---|
| Ubicación y tiempo | Coordenadas, timestamp | "CDMX, 2025-10-02 14:00" |
| AQI general | Valor, nivel, color, contaminante dominante | "AQI 85 - Moderado - PM2.5" |
| Contaminantes individuales | Valor y AQI de cada uno | "PM2.5: 28 μg/m³ (AQI 85)" |
| Factores contribuyentes | Lista con severidad y descripción | "Viento débil (Moderado)" |
| Recomendaciones salud | General, sensibles, actividades | "Limitar ejercicio prolongado" |
| Pronóstico | 2h, 6h, tendencia | "Mejorará con viento esperado" |
Casos de Uso Prácticos
Caso 1: Sistema de Alertas de Incendios
Lógica de alerta a implementar:
| Condición | Acción | Mensaje Típico |
|---|---|---|
| Incendios detectados + HCHO alto | Alerta SEVERA | "🔥 Incendio a X km - Humo confirmado por TEMPO - Permanezca en interiores" |
| Incendios detectados + PM2.5 alto | Alerta ALTA | "🔥 Incendio a X km - PM2.5 elevado - Evite actividades al aire libre" |
| Solo incendios (sin datos calidad aire) | Alerta MEDIA | "🔥 Incendio detectado a X km - Monitoree calidad del aire" |
| Viento hacia población | Agregar contexto | "Viento desde incendio - riesgo de humo en próximas horas" |
Variables a monitorear:
- FIRMS: count > 0, distance < 50 km, FRP > 200 MW
- TEMPO: HCHO > 3×10¹⁶ confirma humo
- OpenAQ: PM2.5 > 55 confirma impacto en superficie
- Weather: wind_direction indica si humo viene hacia ubicación
Caso 2: Dashboard en Tiempo Real
Componentes esenciales del dashboard:
| Componente | Datos a Mostrar | Actualización |
|---|---|---|
| AQI actual | Valor numérico + color + nivel | Cada 30-60 min |
| Gráfica 24h | Tendencia histórica de AQI | Al cargar + cada hora |
| Mapa | Overlay de NO₂/O₃ de TEMPO | Cada hora (8-22h) |
| Alertas activas | Lista de condiciones adversas | En tiempo real |
| Recomendaciones | Acciones específicas según contexto | Cada consulta |
| Pronóstico | Evolución esperada 2-6h | Cada consulta |
Reglas para generar recomendaciones:
- AQI > 150 → "Evite actividad prolongada al aire libre"
- Tendencia empeorando → "Cierre ventanas en próximas horas"
- Viento < 2 m/s → "Evite ejercicio - condiciones de acumulación"
- Incendios cercanos → "Permanezca en interiores si es posible"
Resumen del Módulo 3: Datos Complementarios
Has completado el módulo sobre integración de fuentes complementarias. Ahora sabes:
Lección 1: Por Qué y Qué Fuentes Usar
- ✅ Limitaciones de TEMPO (PM2.5, superficie, nocturno)
- ✅ Las 3 fuentes esenciales: OpenAQ, Weather, FIRMS
- ✅ Cuándo usar cada fuente (matriz de decisión)
- ✅ Complementariedad y validación cruzada
- ✅ Stack recomendado para el Challenge
Lección 2: APIs y Acceso a Datos
- ✅ OpenAQ API v3 - PM2.5 y validación
- ✅ Weather APIs - Open-Meteo, OpenWeather
- ✅ FIRMS API - Detección de incendios
- ✅ Código TypeScript práctico para cada API
- ✅ Cliente unificado reutilizable
Lección 3: Integración y Arquitectura Completa
- ✅ Arquitectura de integración multi-fuente
- ✅ Motor de análisis avanzado (AQI, pronósticos)
- ✅ Generación de alertas inteligentes
- ✅ Casos de uso prácticos completos
- ✅ Sistema end-to-end funcional
Habilidades Adquiridas
Puedes:
- 🎯 Integrar TEMPO con OpenAQ, Weather y FIRMS
- 🎯 Calcular AQI multi-contaminante
- 🎯 Generar pronósticos basados en meteorología
- 🎯 Identificar y explicar factores contribuyentes
- 🎯 Crear alertas contextuales inteligentes
- 🎯 Validar datos entre fuentes
- 🎯 Diseñar arquitectura escalable
Stack Tecnológico Recomendado
Componentes sugeridos para tu aplicación:
| Capa | Opciones Recomendadas | Por Qué |
|---|---|---|
| Fuentes de datos | TEMPO + OpenAQ + Weather + FIRMS | Core del challenge |
| Backend runtime | Node.js, Deno, o Bun | Ecosistema maduro JavaScript |
| Framework backend | Express, Fastify, Hono | APIs REST simples |
| Caching | Redis o In-memory | Performance crítico |
| Frontend | React, Next.js, Vue | Ecosistema robusto |
| Mapas | Leaflet o Mapbox | Visualización geoespacial |
| Gráficas | Recharts, Chart.js | Series temporales |
| Deployment | Vercel, Netlify, Cloudflare | Serverless + escalable |
| Database (opcional) | PostgreSQL, MongoDB | Solo si guardas históricos |
Checklist Final del Módulo
Antes de pasar al siguiente módulo, asegúrate de:
- Entender qué fuente usar para cada necesidad (PM2.5 → OpenAQ, Contexto → Weather, etc.)
- Saber acceder a OpenAQ, Weather y FIRMS APIs
- Poder integrar múltiples fuentes en un solo sistema
- Calcular AQI para PM2.5, O₃ y NO₂
- Generar pronósticos simples basados en meteorología
- Identificar factores contribuyentes (incendios, viento, temperatura)
- Crear recomendaciones de salud contextuales
Próximos Pasos
En el Módulo 4 (siguiente), aprenderemos:
- Cómo acceder específicamente a TEMPO (CMR, ArcGIS ImageServer)
- Autenticación con Earthdata
- Rate limits y mejores prácticas
- Playground interactivo con APIs
- Ejemplos avanzados de consultas
Estás listo para construir una aplicación completa que integre TEMPO con datos complementarios y genere insights accionables para mejorar la salud pública.