¿Qué es GRIB2?
GRIB — General Regularly-distributed Information in Binary (Información Binaria Regularmente Distribuida en General) — es el formato binario estándar utilizado por casi todos los grandes centros de predicción numérica del tiempo (PNT) para almacenar y distribuir datos meteorológicos en cuadrícula. Definido por la Organización Meteorológica Mundial (OMM) como FM 92 GRIB, es el formato en el que el ECMWF, la NOAA, el DWD (Alemania), la Met Office (Reino Unido) y Météo-France distribuyen las salidas de sus modelos operativos a los servicios meteorológicos de todo el mundo.
GRIB Edición 2 (GRIB2) — introducido en 2003 y ahora la versión dominante — añadió soporte para compresión JPEG2000 y PNG, opciones ampliadas de tipos de cuadrícula y un sistema de clasificación de productos más sistemático. La anterior Edición 1 de GRIB (GRIB1) sigue apareciendo en conjuntos de datos legados, pero está siendo eliminada gradualmente.
Por Qué GRIB2 en Lugar de NetCDF
Tanto GRIB2 como NetCDF-4 almacenan datos de arrays en cuadrícula con metadatos. La diferencia es operativa:
- GRIB2 está optimizado para la meteorología operativa: mensajes compactos de un solo campo que pueden extraerse eficientemente uno a la vez, soportando el streaming en tiempo real de datos de pronóstico
- NetCDF-4 está optimizado para el análisis científico: archivos autodescriptivos multivariables con metadatos CF ricos, mejor para archivos de ejecuciones largas y análisis multidimensionales complejos
- El ECMWF distribuye su salida de pronóstico HRES y ENS en GRIB2; el reanálisis ERA5 está disponible tanto en GRIB2 (vía MARS) como en NetCDF-4 (vía CDS)
Estructura del Mensaje GRIB2
Un archivo GRIB2 es una concatenación de mensajes independientes — un mensaje por campo meteorológico. Cada mensaje consta de nueve secciones:
| Sección | Nombre | Contenido |
|---|---|---|
| 0 | Indicador | Bytes mágicos "GRIB", número de edición (2), longitud total del mensaje |
| 1 | Identificación | Centro de origen, tiempo de referencia, significado del tiempo de referencia |
| 2 | Uso local | Datos específicos del centro (opcional) |
| 3 | Definición de cuadrícula | Tipo de cuadrícula, número de puntos, valores de coordenadas |
| 4 | Definición del producto | Parámetro, tipo de nivel, valor de nivel, paso de pronóstico |
| 5 | Representación de datos | Método de compactación (simple, JPEG2000, PNG, espectral) |
| 6 | Mapa de bits | Máscara opcional para puntos indefinidos/máscara tierra-mar |
| 7 | Datos | Valores de datos comprimidos |
| 8 | Fin | "7777" literal que termina el mensaje |
Una sola pasada GFS 00Z (pronóstico global a 384 horas a resolución de 0,25°) produce miles de mensajes GRIB2 — cada campo (temperatura, viento U, viento V, altura geopotencial) en cada nivel y cada paso de pronóstico es un mensaje separado añadido al archivo.
Trabajo con GRIB2 en Python
cfgrib (backend de xarray) es la interfaz de más alto nivel:
import xarray as xr
# Abrir un archivo GRIB2 como Dataset de xarray
ds = xr.open_dataset("gfs_0p25_2024031500.grib2",
engine="cfgrib",
backend_kwargs={"filter_by_keys": {"typeOfLevel": "isobaricInhPa",
"shortName": "t"}})
print(ds)
# Dimensiones: latitude (721), longitude (1440), isobaricInhPa (37)
# Temperatura a 500 hPa sobre Europa
t500 = ds["t"].sel(isobaricInhPa=500)
europa = t500.sel(latitude=slice(71, 35), longitude=slice(-10, 40))
print(f"T500 media sobre Europa: {float(europa.mean()):.2f} K")
eccodes-python (bajo nivel, acceso directo a todas las claves GRIB2):
import eccodes
# Iterar sobre todos los mensajes en un archivo GRIB2
with open("pronostico.grib2", "rb") as f:
while True:
msg = eccodes.codes_grib_new_from_file(f)
if msg is None:
break
nombre = eccodes.codes_get(msg, "name")
nivel = eccodes.codes_get(msg, "level")
paso = eccodes.codes_get(msg, "stepRange")
valores = eccodes.codes_get_values(msg) # array 1D de valores de cuadrícula
print(f"{nombre} nivel={nivel} paso={paso} min={valores.min():.2f} max={valores.max():.2f}")
eccodes.codes_release(msg)
CDO (Climate Data Operators) para el procesamiento de GRIB2:
# Convertir GRIB2 a NetCDF
cdo -f nc copy pronostico.grib2 pronostico.nc
# Extraer solo la temperatura a 2 metros
cdo select,shortName=2t pronostico.grib2 t2m.grib2
# Extraer un nivel de presión específico
cdo select,typeOfLevel=isobaricInhPa,level=500 pronostico.grib2 t500.grib2
# Reproyectar de 0,25° a 1°
cdo remapbil,r360x181 gfs_0p25.grib2 gfs_1grado.nc
Principales Productores de GRIB2
| Centro | Modelo | Resolución | Cobertura |
|---|---|---|---|
| ECMWF | IFS HRES | 0,1° (~9 km) | Global, 10 días |
| ECMWF | ENS (51 miembros) | 0,2° (~18 km) | Global, 15 días |
| NOAA | GFS | 0,25° (~25 km) | Global, 16 días |
| NOAA | NAM | 3 km | América del Norte |
| DWD | ICON-Global | 0,125° (~13 km) | Global |
| DWD | ICON-EU | 0,0625° (~7 km) | Europa |
| Met Office | UM Global | 0,1° | Global |
El HRES del ECMWF es ampliamente considerado el modelo PNT más preciso del mundo. Los datos crudos GRIB2 están disponibles gratuitamente para los servicios meteorológicos de los estados miembros de la OMM; un subconjunto está disponible públicamente a través de portales de datos abiertos.
Inspeccion de Archivos GRIB2
# wgrib2 — la principal herramienta de inspección GRIB2
wgrib2 gfs_0p25.grib2 | head -20
# Salida: mensaje:desplazamiento:fecha:shortName:nivel:paso
# 1:0:d=2024031500:TMP:2 m above ground:anl
# 2:523144:d=2024031500:UGRD:10 m above ground:anl
# Extraer un campo por grep y redirigir
wgrib2 gfs.grib2 -match ":TMP:500 mb:" -grib t500.grib2
# Crear un extracto pequeño para un cuadro delimitador (Europa)
wgrib2 gfs.grib2 -small_grib -10:40 35:70 europa_gfs.grib2
Tipos de Cuadrícula en GRIB2
Además de las cuadrículas lat/lon regulares, GRIB2 admite:
| Tipo de cuadrícula | Código | Caso de uso |
|---|---|---|
| Gaussiana regular | 4 | Modelos espectrales (ECMWF IFS) |
| Lambert conforme | 30 | Modelos de alta resolución de América del Norte (NAM, HRRR) |
| Polar estereográfica | 20 | Modelos árticos/antárticos |
| Vista espacial | 90 | Imágenes de satélites geoestacionarios (EUMETSAT) |
| Mercator | 10 | Modelos oceánicos |
| Lat/Lon rotada | 1 | Modelos de área limitada con rotación del polo ecuatorial |
La cuadrícula lat/lon rotada es especialmente común en los modelos regionales europeos — rotar el sistema de coordenadas para que el ecuador pase por el centro del dominio minimiza la distorsión de la cuadrícula.
Conversiones relacionadas
Conversiones frecuentes del catálogo: