Я пытался найти эффективный по времени способ объединить несколько растровых изображений в 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 МБ. Я также пробовал Reduce и do.call, но это не удалось, так как я не мог передать аргумент «толерантность», который позволяет обойти различное происхождение растровых файлов.
Кто-нибудь знает, как ускорить процесс?