我需要创建几个光栅马赛克.我在64位Windows计算机上使用Package光栅版2.0-31.我相信我的作业通过所有可能的博客检查,并向一些同事提出这个问题,但仍然无法找到解决方案.
我遇到的问题是,如果我的网格列在栅格对象中,我就无法创建马赛克.我发现这个例子,虽然我可以申请,但不是,我得到一个奇怪的错误信息.以下示例代表我的问题:
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)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mosaic’ for signature ‘"list", "missing"’
Run Code Online (Sandbox Code Playgroud)
我也试过这里建议的功能,但也没有用.
fmerge <- function(rasters1, fun, ...){
ex <- raster(union(rasters1))
res(ex) <- res(rasters1[[1]]) …Run Code Online (Sandbox Code Playgroud) 我正在使用包中的mosaic函数,raster使用@RobertH 在此处建议的方法来合并长长的栅格列表(11,000个文件)。
rlist <- sapply(list_names)
rlist$fun <- mean
rlist$na.rm <- TRUE
x <- do.call(mosaic, rlist)
Run Code Online (Sandbox Code Playgroud)
您可能会想到,这最终会超出我的可用内存(在几台不同的计算机和计算群集上)。我的问题是:有没有办法减少mosaicor 的内存使用量do.call?我试着改变maxmemory的rasterOptions(),但是这似乎并没有帮助呢。以较小的批次处理栅格似乎有问题,因为栅格在空间上可能是分离的(即,顺序栅格文件可能位于彼此之间很远的位置)。在此先感谢您提供的任何帮助。