Если ваш растр выровнен должным образом (один и тот же ncol, nrow, экстент, происхождение, разрешение), вы можете попытаться определить «номера ячеек», которые нужно извлечь, просмотрев первый файл, а затем извлекая его на основе этих файлов.Это может ускорить обработку, поскольку растру не нужно вычислять, какие ячейки извлечь.Примерно так:
rast1 <- raster(rasters2014[1])
cells <- extract(rast1, poligon2, cellnumbers = TRUE, df = TRUE)[,"cells"]
ext <- list()
for (i in 1:length(rasters2014)){
a <- raster(rasters2014[i])
ext[[i]] <- as.vector(extract(a, cells, fun=mean, na.rm=TRUE, df=F))
}
Обратите внимание, что я также использую list
для хранения результатов, чтобы избежать "растущего" вектора, который обычно расточителен.
В качестве альтернативы, как предлагаетсяс помощью @qdread вы можете создать rasterStack, используя raster::stack(rasters2014, quick = TRUE)
и вызывать extract
поверх стека, чтобы избежать цикла for.Не знаю, что будет быстрее.
HTH