Saya mencoba membuat mosaik beberapa raster menjadi raster besar tunggal di R. Menggunakan skrip yang diposting di /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Tapi, saya telah menerima pesan peringatan dan pesan kesalahan.
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)
Itu melaporkan kesalahan seperti di bawah ini
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
Lalu saya mencoba versi lain.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Namun di sini beberapa pesan peringatan seperti di bawah ini
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
Saya telah mengabaikan pesan itu kemudian melanjutkan
mos2 <- do.call(mosaic, rasters1.mosaicargs)
tapi di sini kesalahan yang sama disebutkan di atas
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Jawaban:
Masalahnya di sini adalah bahwa mosaik dan do.call mengharapkan objek raster dalam daftar dan bukan hanya nama karakter raster yang terkandung dalam vektor "raster1". Anda, pada dasarnya, meminta untuk membuat mosaik nama dalam vektor dan bukan objek raster.
sumber
Hanya sedikit variasi pada tema. Anda dapat menghindari pembuatan daftar kosong dan untuk ...
... dengan perintah lapply .
sumber