Сделать мой растровый код R более эффективным? - PullRequest
0 голосов
/ 25 мая 2018

Может ли кто-нибудь помочь мне сделать мой код ниже более эффективным, пожалуйста?Поскольку наборы данных очень велики, каждый раз запуск секции извлечения (растр, полигон) происходит очень медленно.Я думаю, что они могут быть объединены, так что это делается только один раз, но я борюсь с тем, как это сделать.

result$mean   <- extract(raster, polygons, weights=T, na.rm=F, fun=mean)
result$cells  <- unlist(lapply(extract(raster, polygons, weights=T, na.rm=F), 
                        FUN = function(x)(length(x[,1]))))
results$zeros <- unlist(lapply(extract(raster, polygons, weights=T, na.rm=F), 
                        FUN = function(x)(sum(x[,1]==0))))

1 Ответ

0 голосов
/ 13 июня 2018

При работе с extract и SpatialPolygons вы можете использовать встроенное распараллеливание пакета raster.Как мы узнаем из ?raster::clusterR:

«Использование кластера происходит автоматически в следующих функциях: projectRaster, resample и extract при использовании полигонов».

Таким образом, вы можете значительно ускорить свой процесс, позвонив вначале

library(raster)
beginCluster()

.

Примечание: не забудьте закрыть кластер после завершения.

endCluster()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...