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.

Cómo leer este archivo .nc (de NCAR)

Para continuar con mi estudio, descargué los conjuntos de datos de NCAR desde el sitio web de CMIP, incluyendo las variables tasmax, tasmin, pr y rsds. Sin embargo, no puedo leer correctamente estos conjuntos de datos usando los códigos de R, aunque se pueden obtener resultados incorrectos. Los conjuntos de datos de NCAR parecen ser muy diferentes de los demás conjuntos de datos de CMIP, en los cuales mis códigos de R pueden funcionar sin problemas.
Aquí están mis códigos de R:
library(ncdf4)
library(raster)
library(sp)

leer archivo ncdf

nc<-nc_open(‘D:/Study/Data/CMIP6/tasmax/tasmax_Amon_CESM1-CAM5-SE-HR_highres-future_r1i1p1f1_gn_201501-205012.nc’)
v <- nc$var[[1]]
varsize <- v$varsize
ndims <- v$ndims
nt <- varsize[ndims] # Recuerda que la dimensión temporal es siempre la ÚLTIMA dimensión
lat=nc$dim$ncol$vals
lon=nc$dim$ncol$vals
r<-list()
for (i in 1:nt) {
start <- rep(1,ndims) # comenzar con start=(1,1,…,1)
start[ndims] <- i # cambiar a start=(1,1,…,i) para leer el paso de tiempo i
count <- varsize # comenzar con count=(nx,ny,…,nt), lee la variable completa
count[ndims] <- 1 # cambiar a count=(nx,ny,…,1) para leer 1 paso de tiempo
dt=matrix(ncvar_get(nc, v, start = start, count = count),nrow = 1247,ncol=624,byrow=TRUE)

# convertir a raster
r[i]<-raster(dt)
}

crear pila de capas con dimensión temporal

r<-stack(r)
rt=t(r)

extent(rt)<-extent(c(range(lon), range(lat)))
crs(rt) <- “+proj=longlat”
writeRaster(rt,”D:/Study/Data/CMIP6/tasmax/tasmax_Amon_CESM1-CAM5-SE-HR_highres-
future_r1i1p1f1_gn_201501-205012.tif”,format=”GTiff”,overwrite=TRUE)

Los siguientes son el formato de datos de este archivo nc y la comparación con otro archivo nc que se puede leer correctamente.
dimensiones (archivo NCAR):
nbnd = 2;
grid_corners = 5;
ncol = 777602;
time = ILIMITADO; // (actualmente 432)

dimensiones (otro archivo nc):
axis_nbounds = 2;
lat = 360;
lon = 720;
time = ILIMITADO; // (actualmente 120)

¿Cómo puedo solucionar esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que los conjuntos de datos de NCAR tienen dimensiones diferentes a los otros archivos CMIP con los que has trabajado, lo que está causando errores en tu código de R. Específicamente, la dimensión ncol en el archivo de NCAR tiene un valor muy grande (777602), lo cual podría estar causando problemas con la asignación de memoria y la creación del objeto raster.

    Para solucionar esto, es posible que desees considerar reformatear los datos en el archivo de NCAR para que coincidan con las dimensiones de los otros archivos CMIP que has leído exitosamente con R. Esto podría implicar agregar o reducir los datos para disminuir la cantidad de celdas de cuadrícula en la dimensión ncol, o extraer un subconjunto de los datos basado en una región de interés específica.

    Alternativamente, puede ser útil explorar diferentes bibliotecas o funciones de R que sean más adecuadas para trabajar con conjuntos de datos climáticos grandes y complejos, como los del archivo de NCAR. Las bibliotecas ncdf4 y raster son opciones populares, pero podría haber otras opciones que ofrezcan un mejor rendimiento y funcionalidad.

    Finalmente, es posible que existan errores o inconsistencias en el propio archivo de NCAR que estén causando problemas con la lectura y procesamiento de los datos en R. En este caso, puede ser útil contactar al proveedor de datos o consultar con otros expertos en el campo para solucionar cualquier problema con los datos.

Comments are closed.