es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conjunto de datos E-OBS – Problemas de computación

Estoy intentando calcular algunos índices climáticos utilizando los datos diarios de E-OBS y requiere ciertos cálculos. Estoy utilizando el paquete xarray para eso. Sin embargo, estoy obteniendo el siguiente mensaje de error:

Archivo "C:\Users\filip\anaconda3\envs\gis\lib\site-packages\xarray\backends\netCDF4_.py", línea 486, en prepare_variable
    nc4_var = self.ds.createVariable(
  Archivo "netCDF4\_netCDF4.pyx", línea 2768, en netCDF4._netCDF4.Dataset.createVariable
  Archivo "netCDF4\_netCDF4.pyx", línea 3857, en netCDF4._netCDF4.Variable.__init__
  Archivo "netCDF4\_netCDF4.pyx", línea 1887, en netCDF4._netCDF4._ensure_nc_success
RuntimeError: NetCDF: Argumento inválido

Un ejemplo mínimo reproducible sería:

import xarray as xr

prec = 'D:/inputs/eobs/rr_ens_mean_0.1deg_reg_v24.0e.nc'
ds_p = xr.open_dataset(prec)
pp = ds_p.resample({'time': 'YS'}).sum(min_count=1, keep_attrs=True)
pp_mean = pp.mean('time', keep_attrs=True)


temp = 'D:/inputs/eobs/tg_ens_mean_0.1deg_reg_v24.0e.nc'
ds_t = xr.open_dataset(temp)
tp = ds_t.resample({'time': 'YS'}).mean(keep_attrs=True)
tp_mean = tp.mean('time', keep_attrs=True)

ind = (pp_mean['rr'] / tp_mean['tg']) * 10
ind.to_netcdf('D:/outputs/eobs/ind.nc')

¿Podrías intentar y ver si obtienes el mismo mensaje de error? ¿Estoy haciendo algo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, no está claro de inmediato qué es lo que está causando el mensaje de error. Sin embargo, parece que hay un problema relacionado con la creación de una variable NetCDF.

    Si estás obteniendo el mismo mensaje de error, hay algunas cosas que podrías intentar:

    1. Verifica que las rutas de archivo para prec y temp sean correctas y que los archivos existan en esas ubicaciones.
    2. Verifica que los paquetes xarray y netCDF4 estén actualizados y sean compatibles entre sí.
    3. Intenta ejecutar el código sin la línea que guarda el resultado en un archivo NetCDF (ind.to_netcdf('D:/outputs/eobs/ind.nc')) para ver si el error ocurre durante la computación o solo durante la creación del archivo.
    4. Intenta agregar un manejo de errores más específico para obtener más información sobre el error (por ejemplo, utilizando bloques try y except).

    Sin más información sobre los datos y las bibliotecas subyacentes, es difícil diagnosticar el problema de manera más precisa.

Comments are closed.