J'essaie de mosaïquer plusieurs rasters en un seul gros raster dans R. Utilisation d'un script publié dans /programming/15287807/how-can-i-create-raster-mosaic-using-list-of-rasters Mais, j'ai reçu un message d'avertissement et un message d'erreur.
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)
Il signalait une erreur comme ci-dessous
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extent’ for signature ‘"character"’
J'ai ensuite essayé une autre version.
rasters1.mosaicargs <- rasters1
rasters1.mosaicargs$fun <- mean
Mais voici un message d'avertissement comme ci-dessous
Warning message:
In rasters1.mosaicargs$fun <- mean : Coercing LHS to a list
J'ai ignoré le message puis j'ai continué
mos2 <- do.call(mosaic, rasters1.mosaicargs)
mais ici même erreur mentionnée comme ci-dessus
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"character", "character"’
Réponses:
Le problème ici est que mosaic et do.call attendent un objet raster dans la liste et pas seulement les noms de caractères du raster contenu dans le vecteur "rasters1". Vous demandez en effet de mosaïquer un nom dans un vecteur et non un objet raster.
la source
Juste une petite variation sur le thème. Vous pouvez éviter la création d'une liste vierge et de la boucle for ...
... avec une commande lapply .
la source