Eu estou tentando mosaico várias varreduras em único grande raster em R. Usando script que postou em /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Mas, recebi uma mensagem de aviso e uma mensagem de erro.
rasters1 <- list.files("F:\\MOD15A2_LAI_1km\\MOD15A2_LAI_2009",
pattern = "mod15a2.a2009001.*.005.*.img$",
full.names = TRUE, recursive = TRUE)
mos1 <-mosaic(rasters1, fun=mean)
Ele estava relatando erro como abaixo
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Então eu tentei outra versão.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Mas aqui alguma mensagem de aviso como abaixo
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
Ignorei a mensagem e continuei
mos2 <- do.call(mosaic, rasters1.mosaicargs)
mas aqui mesmo erro mencionado como acima
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Respostas:
O problema aqui é que mosaic e do.call estão esperando um objeto raster na lista e não apenas nomes de caracteres da raster que estão contidos no vetor "rasters1". Na verdade, você está pedindo para mosaico um nome em um vetor e não um objeto raster.
fonte
Apenas uma pequena variação sobre o tema. Você pode evitar a criação de uma lista em branco e o loop for ...
... com um comando lapply .
fonte