【发布时间】:2015-11-09 20:21:06
【问题描述】:
我正在处理大型光栅堆栈,我需要重新采样和剪辑它们。 我阅读了 Tiff 文件列表并创建了堆栈:
files <- list.files(path=".", pattern="tif", all.files=FALSE, full.names=TRUE)
s <- stack(files)
r <- raster("raster.tif")
s_re <- resample(s, r,method='bilinear')
e <- extent(-180, 180, -60, 90)
s_crop <- crop(s_re, e)
这个过程需要几天才能完成!但是,使用 ArcPy 和 python 会快得多。我的问题是:为什么 R 中的过程如此缓慢,是否有办法加快该过程? (我使用雪包进行并行处理,但这也无济于事)。
这些是r 和s 层:
> r
class : RasterLayer
dimensions : 3000, 7200, 21600000 (nrow, ncol, ncell)
resolution : 0.05, 0.05 (x, y)
extent : -180, 180, -59.99999, 90.00001 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
> s
class : RasterStack
dimensions : 2160, 4320, 9331200, 365 (nrow, ncol, ncell, nlayers)
resolution : 0.08333333, 0.08333333 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
【问题讨论】:
-
如果没有您的光栅文件,很难评论可能导致此问题的原因。也就是说,我偶尔会通过使用gdalUtils 包装的 GDAL 函数来加速光栅操作。在这里,我可能会使用
gdal_translate(),通过其-tr参数设置分辨率,并通过其-r参数设置所需的重采样算法。不确定它如何处理RasterStacks,但它应该可以处理RasterLayers(或者,我猜,*.tif*磁盘上的文件)就好了。 -
确保您使用最新版本的栅格,因为
resample的速度最近已经提高了很多(可能还不够)。如果您显示 show(s) 和 r,我也会很有帮助,以便我们可以看到发生了什么。对于多核,您可以尝试 beginCluster 等 -
@JoshO'Brien 谢谢,我会尝试 gdal,但光栅会更方便。
-
@RobertH 我使用的是光栅版本 2.4-20。我添加了 r 和 s 层的信息。谢谢!
标签: r parallel-processing raster snow