R通过时间维度堆叠栅格数据
Posted
技术标签:
【中文标题】R通过时间维度堆叠栅格数据【英文标题】:R stack raster data through time dimension 【发布时间】:2018-04-30 05:44:03 【问题描述】:我想知道如何在 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)
输出: 类:光栅堆栈 尺寸: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 中拥有它,而是在时间维度上拥有它: 数据@层
输出: 3 个维度: time Size:1 *是无限的* 单位:自 1998 年 4 月 1 日以来的小时数 0 经度尺寸:27 单位:度_东 long_name:经度 纬度尺寸:22 单位:degrees_north long_name: 纬度
在这里我们可以看到我的时间维度仍然是 1。
我有概念问题和代码问题,所以任何建议解释都会有所帮助。
数据文件可以在以下位置获得: link
非常感谢,
PD: 我是经济学的学生,所以我对空间分析和地理一无所知。我在 R 和 Matlab 和 Python 方面都有中级知识。如果有人对这些程序有答案,它也可以帮助我。
这是我在社区中的第一个问题,非常抱歉我的错误。
【问题讨论】:
感谢您的回答,我明白了,对不起。我在 github link 中使用我使用的数据创建了一个存储库,因为我不知道如何为这种情况生成随机示例数据。在存储库中,还解释了如何从原始源下载数据。一旦下载到工作目录,我认为前面的代码行应该可以工作。我使用库 RNetCDF, raster 但我不确定现在是否需要它们。 【参考方案1】:不幸的是,指向您的数据文件的链接已失效,因此我无法自己进行测试,但使用 Python 的一种解决方案可能是:
from netCDF4 import MFDataset
import glob
ncfiles = glob.glob('*.nc', recursive=True)
data = MFDataset(ncfiles, aggdim='time')
将aggdim
参数设置为您的时间变量,它应该会创建您正在寻找的额外维度。 glob
对于读取文件夹中的多个ncdf文件非常有用,请确保将其设置为文件所在的目录。
【讨论】:
以上是关于R通过时间维度堆叠栅格数据的主要内容,如果未能解决你的问题,请参考以下文章