Пожалуйста, всегда включайте некоторые примерные данные в минимальный автономный воспроизводимый пример. Скажем,
library(raster)
r <- raster(system.file("external/rlogo.grd", package="raster"))
d <- matrix(c(48, 48, 48, 53, 50, 46, 54, 70, 84, 85, 74, 84, 95, 85,
66, 42, 26, 4, 19, 17, 7, 14, 26, 29, 39, 45, 51, 56, 46, 38, 31,
22, 34, 60, 70, 73, 63, 46, 43, 28), ncol=2)
p <- SpatialPoints(d, proj4string=crs(r))
Простой рабочий процесс с точками p
и растром r
будет
b <- buffer(p, 10)
m <- mask(r, b)
ms <- cellStats(m, "sum")
rs <- cellStats(r, "sum")
ms/rs
#[1] 0.4965083
Или вы можете использовать terra
, чтобы сделать это go быстрее, вот так
library(terra)
r <- rast(system.file("ex/logo.tif", package="terra")) [[1]]
p <- vect(d, crs=crs(r))
b <- buffer(p, 10)
m <- mask(r, b)
ms <- global(m, "sum", na.rm=TRUE)
rs <- global(r, "sum")
ms/rs
Кстати, с пакетом raster
ваше утверждение о необходимости преобразования данных долгота / долгота неверно для extract
или buffer
. Напротив, с terra
вам нужно это сделать (чтобы исправить).