我需要创建几个栅格马赛克。我在64位Windows计算机上使用Package raster version 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
谢谢!这个例子可以很好地工作。这将成为使用栅格列表的马赛克功能的方法<-do.call(mosaic,raster) – LuluPor 2013-03-12 00:21:03
@LuluPor如果您首先调用上面的'setMethod(....)'代码,您只需要do叫你原来的'mos < - 马赛克(rasters1,fun = mean)'。 – fmark 2013-03-13 01:27:08
是的,这很好,谢谢!我有我需要的马赛克。 – LuluPor 2013-03-15 01:52:10