0

我正在为 SDM 类处理非常大的数据层,因此我最终将我的一些层分成一堆块以避免内存限制。这些块被写成 .grd 文件,现在我需要将它们读回 R 并合并在一起。一般来说,我对 R 编程非常陌生,因此我们将不胜感激。到目前为止我一直在尝试的看起来像这样:

merge.coarse=raster("coarseBlock1.grd")
for ("" in 2:nBlocks){
  merge.coarse=merge(merge.coarse,raster(paste("coarseBlock", ".grd", sep="")))
}

我的文件位于粗略块.grd 中,并从 1 到 nBlocks (259) 依次编号

任何反馈将不胜感激。

4

2 回答 2

1

在 R 中使用for循环通常很慢。此外,由于 R 将值传递给这些函数的方式mergerbindfor循环中使用和等函数会占用大量内存。

执行此任务的更有效方法是调用lapply(有关详细信息,请参阅本教程应用函数)将文件加载到 R 中。这将产生一个列表,然后可以使用该rbind函数折叠该列表:

rasters <- lapply(list.files(GRDFolder), FUN = raster)
merge.coarse <- do.call(rbind, rasters)
于 2013-11-04T18:57:33.467 回答
0

我对 .grd 文件不太熟悉,但这个整体过程至少应该让你朝着正确的方向前进。假设您所有的 .grd 文件(1 到 259)都存储在同一个文件夹(我将其称为 GRDFolder)中,那么您可以试试这个:

merge.coarse <- raster("coarseBlock1.grd")
for(filename in list.files(GRDFolder))
{
  temp <- raster(filename)
  merge.coarse <- rbind(merge.coarse, temp)
}
于 2013-11-04T18:44:25.320 回答