Potrzebuję stworzyć kilka mozaik rastrowych. Korzystam z pakietu raster w wersji 2.0-31 na komputerze z 64-bitowym systemem Windows. Uważam, że wykonałem zadanie domowe sprawdzając wszystkie możliwe blogi i zadając to pytanie niektórym kolegom, ale wciąż nie mogę znaleźć rozwiązania.Jak utworzyć mozaikę rastrową za pomocą listy rastrów?
Problem polega na tym, że nie mogę utworzyć mozaiki, jeśli moje siatki są wymienione w obiekcie rastrowym. Znalazłem this example, że chociaż mógłbym zastosować, ale nie, dostaję dziwny komunikat o błędzie. Poniższy przykład przedstawia mój 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)
Jest to błąd otrzymuję:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"list", "missing"’
Próbowałem też funkcję sugerowanego w here, ale nie działa.
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)
To jest komunikat o błędzie:
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
Dzięki! To dobrze działa na przykładzie. I to byłby sposób użycia funkcji z listą mozaiki rastrów <-do.call (mozaika, rastry) – LuluPor
@LuluPor Jeśli najpierw zadzwonisz powyżej 'setMethod (...)', wszystko czego potrzebujesz zrób twoją oryginalną 'mos <- mosaic (rasters1, fun = mean)'. – fmark
Tak, to działa świetnie, dzięki! Mam mozaiki, których potrzebowałem. – LuluPor