通过时间维度堆叠栅格数据

3
我想知道如何在 R 中通过时间维度堆叠不同的光栅数据集。
具体来说,我有一组包含每月雨水数据的 ncdf 文件。我想通过时间维度合并这些数据集,以便获得一个唯一的数据集,但带有时间维度。为此,我将这些数据集堆叠起来,所以我的 nlayers 是不同时期的不同层。我希望将这些 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 (行数, 列数, 单元格数, 层数) 分辨率 : 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

但是我想把它放在时间维度而不是层数维度: data@layers

输出结果: 3个维度: 时间 大小:1 * 是无限制的 * 单位: hours since 1998-4-1 0 经度 大小:27 单位: degrees_east 长名称: Longitude 纬度 大小:22 单位: degrees_north 长名称: Latitude

这里我们可以看到我的时间维度仍然是大小为1。

我既有概念问题又有代码问题,所以任何建议和解释都会有所帮助。

数据文件可以在以下链接中获取: link

非常感谢,

附注: 我是一名经济学学生,对空间分析和地理学一无所知。我对R、Matlab和Python都有中级的了解。如果有人对这些程序有答案,也可以帮助我。

这是我在社区提出的第一个问题,所以请原谅我的错误。


感谢您的回答,我理解了,很抱歉。我在github上创建了一个存储库链接,其中包含我使用的数据,因为我不知道如何为此案例生成随机示例数据。存储库还说明了如何从原始来源下载数据。一旦下载到工作目录中,我认为使用先前的代码行应该可以工作。我使用RNetCDF、raster库,但现在不确定它们是否必要。 - Albert Rodríguez
1个回答

0

很遗憾,您的数据文件链接已经失效,所以我无法自行测试,但使用Python的一种解决方案可能是:

from netCDF4 import MFDataset
import glob

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接