Archivos NetCDF: Datos Científicos en Array para Clima y Oceanografía
NetCDF (Network Common Data Form) es el formato de archivo dominante para datos científicos en array a gran escala, particularmente en ciencias atmosféricas, oceanografía, investigación climática, hidrología y geofísica. Desarrollado por Unidata (parte de UCAR) a partir de 1988, NetCDF fue diseñado para almacenar datos multidimensionales en array — como temperatura, presión, salinidad o velocidad del viento medidos en miles de puntos de cuadrícula a lo largo del tiempo — en un formato autodescriptivo, portable y escalable. Un único archivo NetCDF puede describir terabytes de salida de modelos climáticos, incluir un conjunto de datos completo con sistemas de coordenadas adjuntos y seguir siendo legible en cualquier plataforma décadas después.
Qué Hace Diferente a NetCDF
Autodescriptivo
Cada archivo NetCDF lleva su propia documentación. Las variables tienen nombres (temperatura_aire, salinidad_superficie_mar), unidades (K, psu), descripciones largas, indicadores de valores perdidos y atributos de metadatos estándar:
netcdf temperatura_2024 {
dimensions:
tiempo = UNLIMITED ;
lat = 180 ;
lon = 360 ;
niv = 27 ;
variables:
float tiempo(tiempo) ;
tiempo:units = "hours since 2024-01-01 00:00:00" ;
tiempo:calendar = "gregorian" ;
float temperatura_aire(tiempo, niv, lat, lon) ;
temperatura_aire:units = "K" ;
temperatura_aire:long_name = "Temperatura del Aire" ;
temperatura_aire:missing_value = -9999.f ;
}
Consciente de Coordenadas
Las coordenadas NetCDF no son solo enteros — llevan significado físico. Un punto de cuadrícula en el índice [42, 73] se mapea a la latitud 42°N y longitud 73°E. Las coordenadas temporales llevan información del calendario. Los niveles de presión llevan unidades.
Binario Portable
Los archivos NetCDF son binarios, no texto plano, pero son completamente independientes de la plataforma. El orden de bytes, la representación en punto flotante y los tipos de datos están normalizados.
Soporta Conjuntos de Datos Enormes
La dimensión UNLIMITED en el ejemplo anterior significa que el eje temporal puede crecer indefinidamente. NetCDF4 (basado en HDF5) soporta troceado y compresión, permitiendo acceso eficiente a cualquier fragmento de un conjunto de datos de terabytes.
Versiones de NetCDF
NetCDF Clásico (NetCDF-3): El formato original. Estructura simple, ampliamente soportado. Límite de tamaño de archivo de 2 GB (desplazamiento de 32 bits) o 4 GB (clásico de 64 bits). Sin compresión.
NetCDF-4: Basado en el contenedor HDF5. Elimina los límites de tamaño, añade grupos, soporta troceado, múltiples algoritmos de compresión (zlib, szip) y compresión por variable. La mayoría de los nuevos conjuntos de datos científicos usan NetCDF-4.
Lectura y Escritura de NetCDF
Python (xarray + netCDF4)
xarray es el estándar de facto para trabajar con NetCDF en Python:
import xarray as xr
# Abrir un archivo NetCDF
ds = xr.open_dataset('temperatura_2024.nc')
# Seleccionar un subconjunto espacial
europa = ds.sel(lat=slice(35, 70), lon=slice(-10, 40))
# Seleccionar un nivel de presión específico y tiempo
T_500hPa_ene = ds['temperatura_aire'].sel(
niv=500.0,
tiempo=slice('2024-01-01', '2024-01-31')
)
# Calcular media mensual
media_mensual = ds['temperatura_aire'].resample(tiempo='1ME').mean()
# Guardar en un nuevo archivo NetCDF
media_mensual.to_netcdf('media_mensual_temp.nc')
R (paquete ncdf4)
library(ncdf4)
nc <- nc_open("datos.nc")
temp <- ncvar_get(nc, "temperatura_aire")
lat <- ncvar_get(nc, "lat")
nc_close(nc)
Herramientas de Línea de Comandos
ncdump (incluido con la instalación de NetCDF): Convierte NetCDF a texto CDL legible:
ncdump -h datos.nc # solo cabecera
ncdump -v lat,lon datos.nc # cabecera + variables específicas
NCO (NetCDF Operators):
ncwa -a tiempo datos.nc media_tiempo.nc # media en el tiempo
ncra *.nc media_anual.nc # media de múltiples archivos
ncks -v temperatura_aire datos.nc solo_temp.nc # extraer una variable
ncrcat Ene.nc Feb.nc Mar.nc T1.nc # concatenar archivos
CDO (Climate Data Operators):
cdo monmean datos.nc medias_mensuales.nc # medias mensuales
cdo sellevel,500 datos.nc 500hPa.nc # extraer nivel de presión
cdo remapbil,r1440x720 datos.nc salida.nc # reinterpolación a 0,25°
Convenciones CF
Las Convenciones CF (Climate and Forecast) definen nombres de variables, unidades y sistemas de coordenadas estandarizados para archivos NetCDF en ciencias climáticas y terrestres. Los archivos compatibles con CF usan:
- Atributos
standard_namede la tabla de nombres estándar CF unitssiguiendo las convenciones UDUNITS2- Atributos del sistema de coordenadas (tipo de proyección,
grid_mapping_name)
NetCDF vs. HDF5 vs. Zarr
| Característica | NetCDF Clásico | NetCDF-4 (HDF5) | Zarr |
|---|---|---|---|
| Compresión | ❌ | ✅ zlib/szip | ✅ Muchos códecs |
| Nativo en la nube | ❌ | Parcial | ✅ Nativo |
| Grupos | ❌ | ✅ | ✅ |
| Troceado | ❌ | ✅ | ✅ |
| Convenciones CF | ✅ | ✅ | Parcial |
Zarr está ganando terreno para datos científicos nativos en la nube, pero NetCDF sigue siendo el estándar para archivado, salida de modelos e intercambio de datos en ciencias atmosféricas.
Conversiones relacionadas
Conversiones frecuentes del catálogo: