いくつかのラスタモザイクを作成する必要があります。私は64ビットWindowsコンピュータ上でパッケージラスタバージョン2.0-31を使用しています。私は可能性のあるすべてのブログを通して宿題をチェックし、この質問を一部の同僚に依頼したが、解決策を見つけることはできないと思う。ラスタのリストを使用して、ラスタモザイクを作成するにはどうすればよいですか?
問題は、グリッドがラスタオブジェクトにリストされている場合にモザイクを作成できないことです。私はthis exampleを見つけましたが、適用することはできますが、私は奇妙なエラーメッセージが表示されます。以下の例では、私の問題を表しています。
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)
これは私が取得エラーです:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"list", "missing"’
私もhereで示唆された機能を試してみましたが、どちらか動作しませんでした。
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)
これはエラーメッセージです:
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
ありがとう!この例でうまくいく。これは、ラスタモザイクのリストを使ってfuctionを使う方法です。<-do.call(mosaic、rasters) – LuluPor
@LuluPor上記の 'setMethod(....)'コードを最初に呼び出すと、 doは元の 'mos < - モザイク(rasters1、fun = mean)'を呼び出します。 – fmark
はい、すごくうれしくありがとう!私は必要なモザイクを持っています。 – LuluPor