通过时间维度的R堆栈栅格数据

问题描述 投票:2回答:1

我想知道如何通过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的知识。如果有人对这些程序有答案,这也可能对我有帮助。

这是我在社区中遇到的第一个问题,对我的错误深表歉意。

r time stack raster dimension
1个回答
0
投票

不幸的是,指向您的数据文件的链接已死,所以我不能自己对其进行测试,但是使用Python的一种解决方案可能是:

from netCDF4 import MFDataset
import glob

ncfiles = glob.glob('*.nc', recursive=True)
data = MFDataset(ncfiles, aggdim='time')

aggdim参数设置为您的时间变量,它应该创建您要查找的附加维度。 glob对于读取一个文件夹中的多个ncdf文件非常有用,请确保将其设置为文件所在的目录。

© www.soinside.com 2019 - 2024. All rights reserved.