Я хочу извлечь точное среднее значение растровых значений из экстента области, определенной многоугольником в r.Это работает, используя raster::extract
с опцией weights=TRUE
.Однако эта операция становится чрезмерно медленной при работе с большими растрами, и функция не распараллеливается, поэтому beginCluster() ... endCluster()
не ускоряет процесс.Мне нужно извлечь значения для ряда растров, примеры которых приведены здесь как r, r10 и r100.Есть ли способ ускорить это в r, или есть альтернативный способ сделать это в GDAL?
r <- raster(nrow=1000, ncol=1000, vals=sample(seq(0,0.8,0.01),1000000,replace=TRUE))
r10 <- aggregate(r, fact=10)
r100 <- aggregate(r, fact=100)
v = Polygons(list(Polygon(cbind(c(-100,100,80,-120), c(-70,0,70,0)))), ID = "a")
v = SpatialPolygons(list(v))
plot(r)
plot(r10)
plot(r100)
plot(v, add=T)
system.time({
precise.mean <- raster::extract(r100, v, method="simple",weights=T, normalizeWeights=T, fun=mean)
})
user system elapsed
0.251 0.000 0.253
> precise.mean
[,1]
[1,] 0.3994278
system.time({
precise.mean <- raster::extract(r10, v, method="simple",weights=T, normalizeWeights=T, fun=mean)
})
user system elapsed
7.447 0.000 7.446
precise.mean
[,1]
[1,] 0.3995429