我正在处理大型光栅堆栈,并需要重新采样和裁剪它们。 我读取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中这个过程如此缓慢,是否有方法可以加速处理?(我使用了snow包进行并行处理,但那也没有帮助)。这些是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
gdal_translate()
,通过其-tr
参数设置分辨率,并通过其-r
参数设置所需的重采样算法。不确定它如何处理RasterStack
,但应该可以很好地处理RasterLayer
(或猜测是磁盘上的*.tif*
文件)。 - Josh O'Brien