TEMPO

TEMPO ArcGIS ImageServer - Acceso Eficiente

ArcGIS ImageServer es la forma recomendada de acceder a datos TEMPO para aplicaciones web, sin necesidad de descargar archivos NetCDF completos.

¿Por Qué Usar ImageServer?

Imagina que quieres saber el nivel de NO₂ en Ciudad de México ahora mismo. Tienes dos opciones:

ImageServer = Perfecto para Apps Web

Ventajas clave:

  • Sin descargas - Consultas HTTP directas como cualquier API REST
  • Rápido - Respuestas en milisegundos
  • Escalable - Soporta miles de usuarios simultáneos
  • Flexible - Extrae píxeles individuales, áreas, o renderiza mapas completos
  • Sin procesamiento - NASA hace el trabajo pesado del lado del servidor

Ideal para: Dashboards, apps móviles, visualizaciones en tiempo real

Entendiendo el Servicio

URLs Base

Cada producto TEMPO tiene su propio servicio ImageServer:

Base: https://gis.earthdata.nasa.gov/image/rest/services NO₂: /C3685896708-LARC_CLOUD/TEMPO_NO2_L3_V04.../ImageServer O₃: /C3685896625-LARC_CLOUD/TEMPO_O3TOT_L3_V04.../ImageServer HCHO: /C3685897141-LARC_CLOUD/TEMPO_HCHO_L3_V04.../ImageServer

Explorar servicios disponibles: Earthdata GIS Portal - Navega todos los servicios de imágenes TEMPO disponibles

Estructura del Servicio

Cada servicio ImageServer proporciona metadatos y operaciones:

RecursoQué Te DaURL
Info del servicioDescripción, cobertura temporal, bandas disponibles/ImageServer?f=json
IdentifyExtraer valor de un píxel específico/ImageServer/identify
ExportImageRenderizar mapa como imagen PNG/JPG/ImageServer/exportImage
GetSamplesExtraer múltiples píxeles en una llamada/ImageServer/getSamples

Operación Principal: Identify

Qué hace: Extrae el valor de un píxel específico dado lat/lon.

Parámetros Clave

ParámetroQué esEjemplo
geometryCoordenadas geográficas{"x": -99.1332, "y": 19.4326}
geometryTypeTipo de geometría"esriGeometryPoint"
mosaicRuleQué hacer si hay múltiples imágenes{"mosaicMethod": "esriMosaicCenter"}
returnGeometry¿Devolver geometría?false (no la necesitas)
fFormato de respuesta"json"

Ejemplo Conceptual

1// Concepto de alto nivel - NO código completo
2async function obtenerNO2EnPunto(lat, lon) {
3  // 1. Construir URL del servicio
4  const url = SERVICIO_TEMPO_NO2 + '/identify';
5
6  // 2. Preparar parámetros
7  const params = {
8    geometry: { x: lon, y: lat },
9    geometryType: 'point',
10    formato: 'json'
11  };
12
13  // 3. Hacer request
14  const respuesta = await fetch(url + '?' + parametrosAString(params));
15  const datos = await respuesta.json();
16
17  // 4. Extraer valor
18  return {
19    no2: datos.value,
20    unidad: 'molec/cm²',
21    timestamp: Date.now()
22  };
23}
24

Respuesta Típica

1{
2  "value": 5.2e15,
3  "location": {
4    "x": -99.1332,
5    "y": 19.4326
6  },
7  "name": "TEMPO_NO2_TROPOSPHERIC",
8  "properties": {
9    "AcquisitionDate": "2025-10-02T14:00:00Z",
10    "QualityFlag": 0
11  }
12}
13
Variables Clave a Considerar

Al implementar Identify:

  • Quality Flag: Filtra valores con flag > 1 (baja calidad)
  • Valores nulos: Maneja casos donde value es null (sin datos)
  • Unidades: NO₂/HCHO en molec/cm², O₃ en DU (Dobson Units)
  • Timestamp: Usa AcquisitionDate para saber cuándo fue la medición
  • Cobertura de nubes: Si cloud_fraction > 0.7, datos poco confiables

Operación 2: ExportImage - Renderizar Mapas

Qué hace: Genera una imagen PNG/JPG del producto TEMPO sobre un área geográfica.

Cuándo Usarla

  • Mostrar mapa de NO₂ sobre México en tu dashboard
  • Overlay de contaminación en mapa interactivo (Leaflet, Mapbox)
  • Generar visualizaciones para reportes

Parámetros Principales

ParámetroQué esValor Típico
bboxÁrea geográfica (west, south, east, north)-118,14,-86,33 (México)
sizeDimensiones de imagen en píxeles800,600
formatFormato de imagenpng o jpg
fFormato de respuestaimage (devuelve imagen directamente)

Concepto de Uso

1// Idea conceptual
2function generarMapaNO2SobreMexico() {
3  // 1. Definir área de interés
4  const bbox = {
5    west: -118, south: 14,
6    east: -86, north: 33
7  };
8
9  // 2. Construir URL
10  const url = SERVICIO_TEMPO_NO2 + '/exportImage';
11  const params = {
12    bbox: `${bbox.west},${bbox.south},${bbox.east},${bbox.north}`,
13    size: '1024,768',
14    format: 'png'
15  };
16
17  // 3. Usar URL directamente en <img> o mapa
18  return url + '?' + convertirParams(params);
19}
20
21// Uso en HTML/React
22<img src={urlImagenTEMPO} alt="NO₂ sobre México" />
23
Integración con Mapas Web

Para Leaflet/Mapbox:

  1. Genera URL con exportImage
  2. Crea ImageOverlay con esa URL
  3. Establece bounds (coordenadas geográficas del bbox)
  4. Ajusta opacidad (~0.6) para ver mapa base

Resultado: Capa de TEMPO sobre tu mapa interactivo que se actualiza cada hora.

Ejemplo: TEMPO ArcGIS Map Viewer - Ve cómo se visualizan los datos

Filtrado Temporal con MosaicRule

Problema: ImageServer puede tener datos de múltiples días/horas. ¿Cómo obtienes datos de un momento específico?

Solución: mosaicRule con cláusula where.

Ejemplo de Filtro Temporal

1// Concepto: Obtener datos de una fecha específica
2const mosaicRule = {
3  mosaicMethod: 'esriMosaicCenter',
4  where: "AcquisitionDate >= '2025-10-02 00:00:00' AND AcquisitionDate <= '2025-10-02 23:59:59'"
5};
6

Métodos de mosaico comunes:

  • esriMosaicCenter: Usa imagen más cercana al centro del bbox
  • esriMosaicNorthwest: Prioriza esquina noroeste
  • esriMosaicAttribute: Ordena por atributo (ej. fecha más reciente)

Consideraciones Importantes

1. Sin Autenticación para Consultas

Buenas Noticias

ImageServer NO requiere autenticación para operaciones identify y exportImage.

Solo necesitas Earthdata token si:

  • Descargas archivos NetCDF completos
  • Accedes a productos restringidos
  • Necesitas rate limits más altos

Para el Challenge: Puedes usar ImageServer sin autenticación.

2. Rate Limits

Tipo de accesoRequests/segundoRecomendación
Sin autenticación~10 req/sSuficiente para MVP
Con Earthdata token~20-50 req/sPara apps en producción

Mitigación: Implementa caching (60 min) - los datos TEMPO se actualizan cada hora.

3. Valores Fuera de Rango

¿Qué hacer si no hay datos?

1// Concepto de manejo de errores
2async function obtenerDatosTEMPOConFallback(lat, lon) {
3  const resultado = await queryImageServer(lat, lon);
4
5  if (!resultado || resultado.value === null) {
6    // Posibles razones:
7    // - Fuera de cobertura TEMPO
8    // - Hora nocturna (TEMPO solo 8-22h)
9    // - Nubes muy densas
10    // - Error de servidor
11
12    return {
13      exito: false,
14      razon: 'Datos no disponibles',
15      sugerencia: 'Intenta con hora diferente o usa datos de OpenAQ'
16    };
17  }
18
19  return { exito: true, datos: resultado };
20}
21

4. Interpretación de Valores

ProductoUnidadValor TípicoValor Alto
NO₂molec/cm²2-8 × 10¹⁵> 1 × 10¹⁶
O₃ TotalDU (Dobson Units)250-350 DU> 400 DU
HCHOmolec/cm²5-15 × 10¹⁵> 3 × 10¹⁶
Importante: Columna vs Superficie

TEMPO mide columna vertical completa, no concentración a nivel del suelo.

  • Columna alta ≠ Necesariamente peligroso para salud
  • Necesitas OpenAQ para concentración superficial
  • Usa TEMPO para contexto espacial y temporal

Recursos para Aprender Más

Documentación oficial:

Herramientas interactivas:

Ejemplos prácticos:

Resumen: ImageServer vs CMR

AspectoImageServerCMR + NetCDF
Velocidad< 1 segundo5-10 minutos
FacilidadHTTP request simpleRequiere software especializado
Uso de datosSolo lo que necesitasDescarga todo (500+ MB)
Ideal paraApps web, dashboardsAnálisis científico offline
AutenticaciónNo requeridaRequerida para descarga
Recomendación para el Challenge

Usa ImageServer para tu app del NASA Space Apps Challenge:

  1. Más rápido para prototipos
  2. No requiere infraestructura compleja
  3. Escala mejor para usuarios reales
  4. Ideal para dashboards y visualizaciones

Usa CMR + NetCDF solo si:

  • Necesitas análisis científico profundo
  • Quieres procesar históricos completos
  • Desarrollas algoritmos personalizados

Próximos Pasos

En la siguiente lección aprenderás:

  • Autenticación con Earthdata (opcional pero útil)
  • Caching estratégico para optimizar performance
  • Manejo de errores y datos faltantes de forma robusta
  • Rate limiting y mejores prácticas
  • Arquitectura de producción para tu app

Estas prácticas convertirán tu prototipo en una aplicación profesional lista para usuarios reales.