
Exploración de formatos climáticos: NetCDF y GRIB¶
📚 Descripción general¶
En este cuaderno aprenderás sobre los dos formatos de archivo más comunes en ciencias atmosféricas:
Formato NetCDF - Características, estructura y uso práctico
Formato GRIB - Ventajas para pronósticos meteorológicos
Lectura de archivos - Cómo abrir y explorar datos usando Xarray
Comparación - Cuándo usar cada formato en tu trabajo
Usaremos datos reales de temperatura superficial del mar (SST) para ejemplos prácticos.
✅ Requisitos previos¶
| Concepto | Importancia | Notas |
|---|---|---|
| Introducción a Xarray | Necesario | Lectura de datos multidimensionales |
| Introducción a NumPy | Necesario | Arrays multidimensionales |
| Conocimientos de meteorología | Útil | Variables atmosféricas |
⏱️ Tiempo estimado de aprendizaje:
📖 Lectura y ejecución: 20–25 minutos
✍️ Formato: interactivo, ejecuta el código a medida que avanzas
Librerías¶
Importamos las librerías necesarias para este cuaderno.
import xarray as xr
import matplotlib.pyplot as plt
import numpy as np1. Formato NetCDF¶
NetCDF (Network Common Data Form) es un formato de archivo binario auto-descriptivo ampliamente utilizado en las ciencias atmosféricas.

🔍 Características principales¶
Almacena datos multidimensionales (tiempo, latitud, longitud, nivel)
Permite metadatos descriptivos
Soporta estructuras jerárquicas (NetCDF-4)
✅ Ventajas¶
Fácil de explorar con
xarrayCompatible con muchas herramientas científicas
Ideal para almacenamiento a largo plazo
⚠️ Desventajas¶
Tamaño de archivo mayor comparado con GRIB
Puede ser más lento para acceso puntual
🔄 Versiones¶
Classic: estructura simple y universal
NetCDF-4: permite compresión y grupos jerárquicos
Consejos para trabajar con NetCDF¶
Usa
ds.sel()yds.isel()para filtrar por dimensiónVerifica unidades (
ds.attrs,ds.variable.attrs)Verifica el formato de fechas (
timeen UTC)
# Lectura de archivo NetCDF usando datos reales de SST
ds = xr.open_dataset('../data/sst.mnmean.nc')
print("Dataset cargado exitosamente:")
ds# Visualización de SST para un mes específico
ds['sst'].isel(time=0).plot(cmap='coolwarm', vmin=-2, vmax=30)
plt.title('Temperatura Superficial del Mar - NetCDF')
plt.show()
2. Formato GRIB¶
GRIB (GRIdded Binary) es un formato binario eficiente utilizado principalmente para pronósticos numéricos del tiempo.

🔍 Características principales¶
Datos almacenados como registros binarios con encabezados
Alta eficiencia en tamaño y lectura
Muy usado por servicios meteorológicos operativos
✅ Ventajas¶
Tamaño de archivo reducido
Acceso puntual eficiente
Ideal para distribución de pronósticos
⚠️ Desventajas¶
Menos intuitivo que NetCDF
Requiere herramientas específicas como
cfgrib
🔄 Versiones¶
GRIB1: formato más simple y aún en uso
GRIB2: admite más metadatos y compresión
Consejos para trabajar con GRIB¶
Usa
engine='cfgrib'con XarrayExplora claves con
filter_by_keyssi hay múltiples camposPresta atención al paso temporal (
step), tipo de nivel y superficie
# Ejemplo de lectura GRIB (requiere archivo GRIB y cfgrib instalado)
# ds_grib = xr.open_dataset('ruta/archivo.grib', engine='cfgrib')
# ds_grib
# Para este cuaderno, nos enfocamos en NetCDF que es más común para análisis científico.
# Los archivos GRIB se usan principalmente para pronósticos operativos.Práctica: Explorando datos NetCDF¶
Usa el dataset de SST que acabamos de cargar para completar estas tareas:
Tareas:
¿Cuántas dimensiones tiene el dataset?
¿Qué rango temporal cubre?
Extrae y grafica la SST promedio global para el primer año de datos
Pista: Usa .dims, .time, y .mean() para ayudarte.
# Tu código aquíSolución
# 1. Dimensiones
print("Dimensiones:", ds.dims)
# 2. Rango temporal
print(f"Desde: {ds.time.min().values}")
print(f"Hasta: {ds.time.max().values}")
# 3. SST promedio global para primer año
sst_primer_año = ds['sst'].isel(time=slice(0, 12)) # Primeros 12 meses
sst_promedio = sst_primer_año.mean(dim=['lat', 'lon'])
sst_promedio.plot()
plt.title('SST Promedio Global - Primer Año')
plt.ylabel('Temperatura (°C)')
plt.show()Comparación de formatos¶
| Aspecto | NetCDF | GRIB |
|---|---|---|
| Compresión | Opcional (NetCDF-4) | Alta (GRIB2) |
| Facilidad de uso | Más intuitivo | Requiere herramientas específicas |
| Propósito | Análisis científico | Distribución operativa |
| Estructura | Auto-descriptiva | Encabezados + binario |
| Ecosistema Python | Excelente (Xarray) | Bueno (cfgrib) |
Resumen¶
En este cuaderno aprendiste:
✅ Formato NetCDF: Auto-descriptivo, ideal para análisis científico, excelente integración con Xarray
✅ Formato GRIB: Eficiente y compacto, usado para pronósticos operativos
✅ Uso práctico: Cómo cargar y explorar archivos NetCDF con Xarray
✅ Comparación: NetCDF es más flexible para análisis, GRIB es óptimo para distribución de modelos
El manejo de estos formatos con Python te permite construir flujos de trabajo robustos para proyectos climáticos, energéticos y operativos.
¿Qué sigue?¶
Ahora que entiendes los formatos tradicionales NetCDF y GRIB, en el siguiente cuaderno explorarás formatos ARCO (Analysis-Ready Cloud-Optimized) como Zarr, que permiten acceso eficiente a grandes volúmenes de datos en la nube sin descargarlos completamente.
👉 Continúa con: Formatos ARCO y Zarr
📚 Recursos y Bibliografía¶
Earth Lab. (s.f.). Introduction to Climate Data in NetCDF Format. University of Colorado Boulder. https://
www .earthdatascience .org /courses /use -data -open -source -python /hierarchical -data -formats -hdf /intro -to -climate -data/ ECMWF. (2014). GRIB – NetCDF: Setting the Scene. https://
www .ecmwf .int /sites /default /files /elibrary /2014 /13706 -grib -netcdf -setting -scene .pdf UCAR Unidata. (s.f.). NetCDF Documentation. https://
www .unidata .ucar .edu /software /netcdf /docs/ ECMWF. (s.f.). GRIB API & ecCodes. https://
confluence .ecmwf .int /display /ECC