我想知道如何通过R中的时间维度堆叠不同的栅格数据集。
具体:
我有一组ncdf文件,每个文件包含每月的降雨数据。我想通过时间维度合并这些数据集,以便拥有一个唯一的但具有时间维度的数据集。为此,我堆叠了这些数据集,因此我的nlayer处于不同的时间段。我想将此nlayers传递到时间维度,所以如果现在我有3个nlayers,我希望有3个时间段。
nc0298<- stack("3a12.19980201.7.nc", varname="sfcr") #Rain in 02/1998
nc0398<- stack("3a12.19980301.7.nc", varname="sfcr") #Rain in 03/1998
nc0498<- stack("3a12.19980401.7.nc", varname="sfcr")
data <- raster::stack(nc0298, nc0398, nc0498)
print(data)
输出:类:RasterStack尺寸:22、27、594、3(nrow,ncol,ncell,nlayers)分辨率:0.5,0.5(x,y)范围:2,15.5,3.5,14.5(xmin,xmax,ymin,ymax)协调。参考:+ proj = longlat + datum = WGS84 + ellps = WGS84 + towgs84 = 0,0,0名称:surface.rain.mm.hr..1,surface.rain.mm.hr..2,surface.rain.mm.hr..3
但是我不想在nlayers中使用它,而是希望在时间维度上:data @ layers
输出:3个维度:时间大小:1 *是无限制*单位:自1998-4-1以来的小时0经度大小:27单位:度东long_name:经度纬度:22单位:度_北long_name:纬度
在这里我们可以看到我的时间维度仍然是1号。
我既有概念上的问题,也有代码上的问题,所以任何建议的解释都会有所帮助。
数据文件可在以下位置获得:link
非常感谢,
PD:我是经济学专业的学生,所以我对空间分析和地理知识一无所知。我具有R的中级知识,还具有Matlab和Python的知识。如果有人对这些程序有答案,这也可能对我有帮助。
这是我在社区中遇到的第一个问题,对我的错误深表歉意。
不幸的是,指向您的数据文件的链接已死,所以我不能自己对其进行测试,但是使用Python的一种解决方案可能是:
from netCDF4 import MFDataset
import glob
ncfiles = glob.glob('*.nc', recursive=True)
data = MFDataset(ncfiles, aggdim='time')
将aggdim
参数设置为您的时间变量,它应该创建您要查找的附加维度。 glob
对于读取一个文件夹中的多个ncdf文件非常有用,请确保将其设置为文件所在的目录。