TEMPO

TEMPO CMR API - Búsqueda y Descubrimiento

La CMR (Common Metadata Repository) es el catálogo oficial de NASA donde puedes buscar y descubrir qué datos TEMPO existen y dónde descargarlos.

¿Qué es CMR y Cuándo Usarla?

CMR = Biblioteca de NASA

Piensa en CMR como la biblioteca de NASA:

  • 📚 Catálogo: Lista todos los datasets disponibles (Collections)
  • 📖 Fichas bibliográficas: Metadatos de cada archivo (Granules)
  • 🔍 Sistema de búsqueda: Encuentra datos por fecha, ubicación, producto

CMR NO contiene los datos reales, solo información sobre dónde encontrarlos y descargarlos.

CMR vs ImageServer: Cuándo Usar Cada Uno

Necesitas...UsaPor qué
Valor de un píxel ahoraImageServerMás rápido (< 1s)
Mapa para visualizarImageServerNo requiere descarga
Saber qué archivos existenCMREs su propósito principal
Descargar NetCDF completoCMRTe da la URL de descarga
Análisis científico offlineCMR → NetCDFAcceso a todos los metadatos
Para el Challenge

La mayoría de apps usan ImageServer, no CMR.

Usa CMR solo si:

  • Necesitas descargar archivos completos para análisis offline
  • Quieres saber exactamente qué datos históricos existen
  • Desarrollas pipelines de procesamiento batch

Para dashboards web: Usa ImageServer (lección anterior).

Estructura: Collections y Granules

Collection (Colección)

Qué es: Un dataset completo (ej. "TEMPO NO₂ Versión 4").

Metadatos que proporciona:

  • Cobertura geográfica y temporal
  • Resolución espacial
  • Variables disponibles
  • Formato de archivos (NetCDF)
  • Versión del producto

Collection IDs importantes:

ProductoCollection ID V04Qué Mide
NO₂C3685896708-LARC_CLOUDColumna troposférica de dióxido de nitrógeno
O₃C3685896625-LARC_CLOUDColumna total de ozono
HCHOC3685897141-LARC_CLOUDColumna vertical de formaldehído
Siempre Usa V04

V04 es la versión más reciente (2024) con:

  • Mejor calibración
  • Algoritmos mejorados
  • Mayor precisión

Usa V03 solo para comparar con estudios históricos.

Granule (Granulo)

Qué es: Un archivo NetCDF individual que contiene datos de una hora específica.

Ejemplo: TEMPO_NO2_L2_V04_2025100214_001.nc

  • Producto: NO₂ L2
  • Versión: V04
  • Fecha/hora: 2025-10-02 a las 14:00 UTC
  • Archivo: 001

Metadatos que proporciona cada granule:

  • Tiempo de adquisición exacto
  • Bounding box geográfico
  • URL de descarga del archivo NetCDF
  • Tamaño del archivo
  • Checksum (para verificar integridad)

Cómo Buscar Datos con CMR

Endpoint Base

https://cmr.earthdata.nasa.gov/search/granules.json

Parámetros de Búsqueda Comunes

ParámetroQué HaceEjemplo
collection_concept_idFiltra por producto TEMPOC3685896708-LARC_CLOUD (NO₂)
temporalFiltra por rango de fechas2025-10-01T00:00:00Z,2025-10-02T23:59:59Z
bounding_boxFiltra por área geográfica-99.3,19.2,-98.9,19.6 (CDMX)
page_sizeCuántos resultados por página100 (máximo)
sort_keyCómo ordenar resultados-start_date (más recientes primero)

Ejemplo Conceptual: Buscar Datos de Hoy

1// Concepto - NO código completo
2async function buscarGranulesDeHoy(producto) {
3  // 1. Construir URL base
4  const url = 'https://cmr.earthdata.nasa.gov/search/granules.json';
5
6  // 2. Definir parámetros
7  const params = {
8    collection_concept_id: obtenerCollectionID(producto),
9    temporal: `${hoy_00:00},${hoy_23:59}`,
10    page_size: 100,
11    sort_key: '-start_date' // Más recientes primero
12  };
13
14  // 3. Hacer request
15  const respuesta = await fetch(url + '?' + construirQuery(params));
16  const datos = await respuesta.json();
17
18  // 4. Extraer información útil
19  return datos.feed.entry.map(granule => ({
20    hora: granule.time_start,
21    downloadURL: granule.links.find(l => l.rel === 'data').href,
22    tamaño: granule.granule_size
23  }));
24}
25

Respuesta Típica de CMR

1{
2  "feed": {
3    "entry": [
4      {
5        "id": "G12345678-LARC_CLOUD",
6        "title": "TEMPO_NO2_L2_V04_2025100214_001",
7        "time_start": "2025-10-02T14:00:00.000Z",
8        "time_end": "2025-10-02T15:00:00.000Z",
9        "links": [
10          {
11            "rel": "http://esipfed.org/ns/fedsearch/1.1/data#",
12            "href": "https://asdc.larc.nasa.gov/data/.../file.nc"
13          }
14        ],
15        "boxes": ["-168 14 -13 73"],
16        "granule_size": "523.4"
17      }
18    ]
19  }
20}
21

Información clave:

  • time_start: Cuándo fue la observación
  • links[].href: URL para descargar el NetCDF
  • boxes: Cobertura geográfica [west south east north]
  • granule_size: Tamaño en MB

Casos de Uso de CMR

1. Descubrir Qué Datos Históricos Existen

Pregunta: "¿Tiene NASA datos TEMPO del 15 de julio 2024?"

1// Búsqueda conceptual
2buscarEnCMR({
3  producto: 'NO2',
4  fecha: '2024-07-15'
5});
6
7// Resultado: Lista de granules disponibles ese día
8// Cada hora de 8 AM a 10 PM = ~14 granules
9

2. Obtener URLs de Descarga

Caso: Quieres descargar archivos NetCDF para procesar offline.

1// Concepto
2const granules = await buscarEnCMR({ producto: 'NO2', fecha: 'hoy' });
3
4granules.forEach(g => {
5  console.log(`Hora: ${g.hora}`);
6  console.log(`Descargar: ${g.downloadURL}`);
7  console.log(`Tamaño: ${g.tamaño} MB`);
8});
9

3. Verificar Última Observación Disponible

Caso: Saber si hay datos nuevos.

1// Concepto
2async function obtenerUltimaObservacion(producto) {
3  const granules = await buscarEnCMR({
4    producto,
5    ordenar: 'más-reciente-primero',
6    limite: 1
7  });
8
9  return granules[0]; // El más reciente
10}
11

Limitaciones y Consideraciones

CMR NO es Para Tiempo Real

Limitaciones de CMR:

  • ❌ NO extrae valores de píxeles directamente
  • ❌ NO renderiza mapas
  • ❌ Latencia ~6-12 horas (tiempo que tarda NASA en publicar)
  • ❌ Requiere descargar archivos completos (500+ MB)

Para tiempo real: Usa ImageServer (lección anterior).

Latencia de Datos

Tipo de ProductoDisponibilidad en CMR
Near Real-Time (NRT)6-12 horas después de observación
Standard1-3 días (mejor calibración)
Re-procesadoMeses después (con algoritmos mejorados)

Implicación: Si necesitas datos de "ahora mismo", CMR no es la mejor opción.

Recursos para Explorar CMR

Herramientas de búsqueda visual:

  • 🔍 Earthdata Search - Interfaz gráfica para buscar datos TEMPO sin escribir código
  • 🗺️ Worldview - Visualiza datos TEMPO en mapa global interactivo

Documentación:

Explorar colecciones:

Descarga de Archivos NetCDF

Si decides descargar archivos completos, necesitarás:

1. Cuenta Earthdata

Regístrate gratis: https://urs.earthdata.nasa.gov

2. Autenticación

Opción A: Usar .netrc file (recomendado para scripts) Opción B: Usar token de autenticación en headers

3. Software para Procesar NetCDF

LenguajeBibliotecaUso
Pythonxarray, netCDF4Análisis científico
Rncdf4, rasterAnálisis estadístico
JavaScriptnetcdfjsApps web (raro)

Ejemplo Conceptual de Descarga

1# Concepto en Python - NO código completo
2import xarray as xr
3
4# 1. Obtener URL de CMR
5url_netcdf = obtener_url_desde_cmr(producto='NO2', hora='2025-10-02T14:00')
6
7# 2. Descargar y abrir con xarray
8ds = xr.open_dataset(url_netcdf)
9
10# 3. Explorar variables
11print(ds.variables)
12# Output: ['NO2_vertical_column', 'latitude', 'longitude', 'quality_flag', ...]
13
14# 4. Extraer dato en lat/lon específico
15no2_value = ds.NO2_vertical_column.sel(
16    latitude=19.43,
17    longitude=-99.13,
18    method='nearest'
19)
20
21print(f"NO₂: {no2_value.values} molec/cm²")
22
NetCDF es Complejo

Procesar NetCDF requiere:

  • Conocimiento de formatos científicos
  • Bibliotecas especializadas
  • Manejo de multidimensionalidad (lat, lon, time, nivel)
  • Procesamiento de metadatos complejos

Recomendación: Solo usa NetCDF si realmente lo necesitas. Para la mayoría de apps, ImageServer es suficiente y mucho más simple.

Resumen: CMR vs ImageServer

AspectoCMRImageServer
PropósitoBuscar y descargar archivosConsultar valores directamente
RespuestaURLs de descarga + metadatosValores de datos (JSON)
VelocidadLento (descargas grandes)Rápido (< 1 segundo)
Uso típicoInvestigación científicaApps web/móvil
ComplejidadAlta (requiere procesar NetCDF)Baja (HTTP + JSON)
Mejor paraAnálisis offline completoDashboards tiempo real
Recomendación Final

Para NASA Space Apps Challenge:

  • ✅ Usa ImageServer para tu app (lección anterior)
  • 📚 Usa CMR solo si necesitas explorar qué datos existen o descargar archivos completos para análisis

El 95% de las apps ganadoras usan ImageServer, no CMR + NetCDF.

Próximos Pasos

En la siguiente lección aprenderás:

  • Autenticación con Earthdata (para descargas NetCDF)
  • Mejores prácticas de caching y performance
  • Manejo de errores robusto
  • Rate limiting para no exceder límites
  • Arquitectura de producción escalable

Estas técnicas asegurarán que tu app sea rápida, confiable y profesional.