1 votos

Error al intentar abrir un archivo NetCDF con xarray desde un cubo s3

Estoy intentando abrir un archivo .nc desde un bucket de S3 usando xarray, pero me da error. Este es el método que estoy usando:

import xarray as xr

aws_url = 's3://nasanex/NEX-GDDP/BCSD/rcp85/day/atmos/tasmax/r1i1p1/v1.0/tasmax_day_BCSD_rcp85_r1i1p1_inmcm4_2100.nc'
ds = xr.open_dataset(aws_url, engine='netcdf4')

el error que se lanza es

OSError: [Errno -128] NetCDF: Intento de utilizar una función que no estaba activada cuando se construyó el netCDF: b's3://nasanex/NEX-GDDP/BCSD/rcp85/day/atmos/tasmax/r1i1p1/v1.0/tasmax_day_BCSD_rcp85_r1i1p1_inmcm4_2100.nc'

Tengo netCDF 4.8.1 en mi mac. Además el Documentos de xarray dicen que los datos deben ser accesibles a través de una url s3 de este tipo.

3voto

aman jain Puntos 31

El problema es que el su netcdf el motor no puede leer este archivo ya que es inválido para este motor.

Para solucionarlo hay que instalar h5netcdf con pip o conda.

Además, los archivos de s3 no pueden ser leídos directamente a menos que sea archivo zarr . Debe utilizar s3fs para abrir el archivo y leerlo con xarray con h5netcdf como su motor.

!pip install s3fs h5netcdf --quiet

import s3fs 
import xarray as xr

fs = s3fs.S3FileSystem(anon=True)
aws_url = 's3://nasanex/NEX-GDDP/BCSD/rcp85/day/atmos/tasmax/r1i1p1/v1.0/tasmax_day_BCSD_rcp85_r1i1p1_inmcm4_2100.nc'

with fs.open(aws_url) as fileObj:
  ds = xr.open_dataset(fileObj, engine='h5netcdf')

Nota: Reinicie el tiempo de ejecución después de instalar esos paquetes.

Trabajando copia

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X