为了继续我的研究,我从 CMIP 网站下载了 NCAR 数据集,包括 tasmax、tasmin、pr 和 rsds 变量。但是,尽管可以获得看起来错误的结果,但我无法使用 R 代码正确读取这些数据集。NCAR 数据集似乎与其他 CMIP 数据集有很大不同,我的 R 代码可以在其中顺利运行。这是我的 R 代码: library(ncdf4) library(raster) library(sp)
# read ncdf file
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] # Remember timelike dim is always the LAST dimension!
lat=nc$dim$ncol$vals
lon=nc$dim$ncol$vals
r<-list()
for (i in 1:nt) {
start <- rep(1,ndims) # begin with start=(1,1,...,1)
start[ndims] <- i # change to start=(1,1,...,i) to read timestep i
count <- varsize # begin with count=(nx,ny,...,nt), reads entire var
count[ndims] <- 1 # change to count=(nx,ny,...,1) to read 1 tstep
dt=matrix(ncvar_get(nc, v, start = start, count = count),nrow = 1247,ncol=624,byrow=TRUE)
# convert to raster
r[i]<-raster(dt)
}
# create layer stack with time dimension
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)
下面是这个 nc 文件的数据格式以及与其他可以正确读取的 nc 文件的比较。
dimensions (NCAR file):
nbnd = 2;
grid_corners = 5;
ncol = 777602;
time = UNLIMITED; // (432 currently)
dimensions (other nc file):
axis_nbounds = 2;
lat = 360;
lon = 720;
time = UNLIMITED; // (120 currently)
我该如何解决这个问题?