Ich muss mehrere Rastermosaiken erstellen. Ich verwende die Paket-Raster-Version 2.0-31 auf einem 64-Bit-Windows-Computer. Ich glaube, ich habe meine Hausaufgaben gemacht, habe alle möglichen Blogs durchgesehen und diese Frage an einige Kollegen gestellt, kann aber immer noch keine Lösung finden.Wie kann ich ein Raster-Mosaik mit einer Liste von Rastern erstellen?
Das Problem, das ich habe, ist, dass ich kein Mosaik erstellen kann, wenn meine Raster in einem Raster-Objekt aufgeführt sind. Ich habe this example gefunden, dass ich zwar anwenden konnte, aber nicht, ich bekomme eine seltsame Fehlermeldung. Das Beispiel stellt unter meinem Problem:
r <- raster()
r1 <- crop(r, extent(-10, 10, -10, 10))
r2 <- crop(r, extent(0, 20, 0, 20))
r3 <- crop(r, extent(10, 30, 10, 30))
r1[] <- 1:ncell(r1)
r2[] <- 1:ncell(r2)
r3[] <- 1:ncell(r3)
rasters1 <- list(r1, r2, r3)
mos <- mosaic(rasters1,fun=mean)
Dies ist der Fehler, den ich bekommen:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"list", "missing"’
Ich habe auch versucht, die Funktion in here vorgeschlagen, aber hat nicht funktioniert.
fmerge <- function(rasters1, fun, ...){
ex <- raster(union(rasters1))
res(ex) <- res(rasters1[[1]])
for(i in 1:length(rasters1))
rasters[[i]] <- merge(rasters1[[i]], ex)
rasters <- stack(rasters1)
fun(rasters1, ...)
}
rfm <- fmerge(rasters1, mean, na.rm=T)
Dies ist die Fehlermeldung:
Error in raster(union(rasters1)) :
error in evaluating the argument 'x' in selecting a method for function 'raster': Error in as.vector(y) : argument "y" is missing, with no default
Vielen Dank! Das funktioniert gut mit dem Beispiel. Und das wäre der Weg, um die Funktion mit der Liste der Raster Mosaik <-do.call (Mosaik, Raster) zu verwenden – LuluPor
@LuluPor Wenn Sie zuerst den 'setMethod (....)' Code oben aufrufen, alles, was Sie brauchen Rufen Sie Ihr ursprüngliches 'mos <- mosaic (rasters1, fun = mean)' an. – fmark
Ja, das funktioniert super, danke! Ich habe die Mosaiken, die ich brauchte. – LuluPor