Я пытаюсь объединить некоторые многоканальные спутниковые изображения в R (к сожалению, я не могу поделиться ими из-за проблем с авторским правом).Они имеют одинаковый размер и разрешение с небольшим перекрытием между ними.Когда я импортирую каждое изображение по отдельности и объединяю их, проблем не возникает:
library(raster)
raster1 <- brick("path/multi-band-raster1")
raster2 <- brick("path/multi-band-raster2")
raster3 <- brick("path/multi-band-raster3")
raster4 <- brick("path/multi-band-raster4")
raster5 <- brick("path/multi-band-raster5")
merged_scene <- merge(raster1, raster2, raster3, raster4, raster5)
Однако я стремлюсь сделать свой код максимально гибким, чтобы я мог повторно применять его к различным наборам изображений.Для этого я загружаю растры в виде списка, а затем использую функцию do.call()
, чтобы функция merge
принимала все аргументы, представляющие растровые блоки в списке:
folder <- paste0(getwd(),"/Images-folder/")
list.filenames <- list.files(folder, pattern=".tif$", full.names=FALSE)
list.data <- list()
for (i in 1:length(list.filenames)){
list.data[[i]] <- brick(paste0(folder,list.filenames[i]))
}
names(list.data) <- list.filenames
merged_scene <- do.call(merge, list.data)
Однако, когда язапустите это, я получаю:
Error in as.data.frame(x) : argument "x" is missing, with no default
Пожалуйста, дайте мне знать, если вы видите, где я ошибся.Большое спасибо.