Ich versuche, mehrere Raster in R zu einem einzigen großen Raster zu mosaikieren. Verwenden Sie dazu ein Skript, das unter /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters veröffentlicht wurde Ich habe jedoch eine Warnmeldung und eine Fehlermeldung erhalten.
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)
Es wurde ein Fehler wie unten gemeldet
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Dann habe ich eine andere Version ausprobiert.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Aber hier eine Warnmeldung wie unten
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
Ich habe die Nachricht ignoriert und dann fortgefahren
mos2 <- do.call(mosaic, rasters1.mosaicargs)
aber hier der gleiche Fehler wie oben erwähnt
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Antworten:
Das Problem hierbei ist, dass Mosaik und do.call ein Rasterobjekt in der Liste erwarten und nicht nur Zeichennamen des Rasters, das im Vektor "rasters1" enthalten ist. Tatsächlich möchten Sie einen Namen in einem Vektor und nicht in einem Rasterobjekt mosaikieren.
quelle
Nur eine kleine Variation des Themas. Sie können die Erstellung einer leeren Liste und der for-Schleife vermeiden ...
... mit einem lapply Befehl.
quelle