Ho bisogno di creare diversi mosaici raster. Sto usando Package raster versione 2.0-31 su un computer Windows a 64 bit. Credo di aver fatto i miei compiti controllando tutti i possibili blog e facendo questa domanda ad alcuni colleghi, ma ancora non riesco a trovare una soluzione.Come posso creare un mosaico raster usando l'elenco dei raster?
Il problema è che non riesco a creare un mosaico se le mie griglie sono elencate in un oggetto raster. Ho trovato this example che avrei potuto applicare, ma non, ricevo uno strano messaggio di errore. L'esempio che segue rappresenta il mio problema:
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)
Questo è l'errore che ottengo:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"list", "missing"’
Ho provato anche la funzione suggerito nel here, ma non ha funzionato neanche.
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)
Questo è il messaggio di errore:
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
Grazie! Questo funziona bene con l'esempio. E questo sarebbe il modo di usare la funzione con l'elenco dei mosaici raster <-do.call (mosaic, raster) – LuluPor
@LuluPor Se per prima cosa chiamate il codice 'setMethod (....)', tutto ciò di cui avete bisogno fai è chiamare il tuo originale 'mos <- mosaic (raster1, fun = mean)'. – fmark
Sì, funziona benissimo, grazie! Ho i mosaici di cui avevo bisogno. – LuluPor