Próbuję utworzyć mozaikę kilku rastrów w jeden duży raster w R. Za pomocą skryptu opublikowanego w /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Ale otrzymałem komunikat ostrzegawczy i komunikat o błędzie.
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)
Zgłaszał błąd, jak poniżej
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Potem wypróbowałem inną wersję.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Ale tutaj jakiś komunikat ostrzegawczy, jak poniżej
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
Zignorowałem wiadomość, a następnie kontynuowałem
mos2 <- do.call(mosaic, rasters1.mosaicargs)
ale tutaj ten sam błąd wymieniony powyżej
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Odpowiedzi:
Problem polega na tym, że mozaika i do.call oczekują na liście obiektu rastrowego, a nie tylko nazw rastrowych zawartych w wektorze „rasters1”. W rzeczywistości pytasz o mozaikę nazwy w wektorze, a nie o obiekcie rastrowym.
źródło
Tylko niewielka odmiana na temat. Możesz uniknąć tworzenia pustej listy i pętli for ...
... z głupkowatym poleceniem.
źródło