我一直在尝试找到一种节省时间的方法来合并 R 中的多个光栅图像。这些是来自乞力马扎罗山南部地区的相邻 ASTER 场景,我的目标是将它们放在一起以获得一张大图像。
这是我到目前为止得到的(对象“ast14dmo”代表 RasterLayer 对象列表):
# Loop through single ASTER scenes
for (i in seq(ast14dmo.sd)) {
if (i == 1) {
# Merge current with subsequent scene
ast14dmo.sd.mrg <- merge(ast14dmo.sd[[i]], ast14dmo.sd[[i+1]], tolerance = 1)
} else if (i > 1 && i < length(ast14dmo.sd)) {
tmp.mrg <- merge(ast14dmo.sd[[i]], ast14dmo.sd[[i+1]], tolerance = 1)
ast14dmo.sd.mrg <- merge(ast14dmo.sd.mrg, tmp.mrg, tolerance = 1)
} else {
# Save merged image
writeRaster(ast14dmo.sd.mrg, paste(path.mrg, "/AST14DMO_sd_", z, "m_mrg", sep = ""), format = "GTiff", overwrite = TRUE)
}
}
正如您肯定猜到的那样,代码有效。但是,考虑到每个单个栅格对象大约 70 mb 大,合并需要很长时间。我也尝试过 Reduce 和 do.call,但失败了,因为我无法传递绕过光栅文件不同来源的参数“容差”。
有人知道如何加快速度吗?