我正在處理大型光柵堆棧,我需要重新採樣並剪輯它們。 我讀的TIFF文件列表,並創建堆棧:如何提高處理大型柵格堆棧的R處理速度?
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函數來加速柵格操作(https://cran.r-project.org/web/packages/gdalUtils/index.html )。在這裏,我可能使用['gdal_translate()'](http://www.gdal.org/gdal_translate.html),通過它的'-tr'參數設置分辨率,並通過'-r'參數設置所需的重採樣算法。不知道它如何處理'RasterStack',但它應該處理'RasterLayer's(或者,我猜,'* .tif *'磁盤上的文件)就好了。 –
確保您使用最新版本的光柵,因爲'resample'的速度最近有了很大提高(可能還不夠)。如果您顯示節目和r以便我們可以看到正在發生的事情,我也會很有幫助。對於多核,你可以嘗試beginCluster等 – RobertH
@ JoshO'Brien謝謝,我會嘗試gdal,但光柵會更方便。 –