Xarray / Dask: Calcula la temperatura más alta para cada coordenada.
Tengo un archivo GRIB de 17 GB que contiene datos de temperatura (t2m) para cada hora del año 2020. Las dimensiones del conjunto de datos son longitude
, latitude
y time
.
Mi objetivo es calcular la temperatura más alta para cada coordenada (lon, lat) en los datos durante todo el año. Puedo cargar el archivo correctamente utilizando Xarray, aunque lleva de 4 a 5 minutos:
import xarray as xr
xarray_dataset = xr.open_dataset('cds/2020_hourly_t2m.grib', engine='cfgrib')
Pero llamar a xarray.Dataset.max()
hace que la sesión de Google Colab se bloquee. Probablemente esto se deba a que requiere más memoria de la disponible.
Por lo tanto, probablemente necesite usar Dask para cargar los datos en fragmentos y realizar cálculos en esos fragmentos y luego agregar los resultados. Soy nuevo en Dask y estoy teniendo dificultades para leer archivos de conjunto de datos climáticos utilizando las API de Dask.Array en fragmentos. He probado con dask.array.from_array( xarray_dataset.to_array() )
pero esto también bloquea la sesión.
Mi pregunta es: ¿cómo debo leer este archivo GRIB de 17GB en fragmentos utilizando Dask y calcular la temperatura máxima para todo el año para cada par lon, lat en el conjunto de datos?
davy.ai
Para leer el archivo GRIB de 17 GB en fragmentos utilizando Dask, puedes usar
dask.delayed
y la bibliotecadask_grib
para cargar y fragmentar los datos. Aquí tienes los pasos que puedes seguir:dask_grib
:dask_grib
:El array resultante
result
contendrá la temperatura máxima para cada par lon,lat durante todo el año.