Разлагающийся буфер вокруг точек - PullRequest
0 голосов
/ 09 мая 2019

У меня есть растр, который представляет собой серию разрозненных мест обитания.Каждый участок среды обитания имеет значение 1. Все остальные ячейки в растре устанавливаются как NA.Я хотел бы применить буфер вокруг точек, как если бы вы использовали raster::buffer, но мне нужна дополнительная функциональность.

Я бы хотел, чтобы буфер "разрушался" по мере удаления от патча.Так что, если патч = 1 и буфер установлен, скажем, на 3 карты, я бы хотел, чтобы буфер уменьшился до нуля к моменту времени, когда карты = 3.Если два патча находятся достаточно близко друг к другу, так что их буферы перекрываются, мне нужно применить некоторую функцию для определения значения в перекрывающихся ячейках (например, сумма, среднее, первое, последнее и т. Д.).

Я включилниже некоторый код, который иллюстрирует ожидаемый результат.Поскольку я не могу найти какое-либо решение в Интернете (в поисках «уменьшающихся буферов» или «разрушающихся буферов»), я не могу предоставить больше кода, чтобы помочь, извините.

focal = raster(nrow=5, ncol=5, crs=NA, xmn=0, xmx=5, ymn=0, ymx=5)
focal[] = c(0.33,NA,NA,NA,0.33,
            0.66,0.33,NA,0.33,0.66,
            1,0.66,0.33,0.66,1,
            0.66,0.33,NA,0.33,0.66,
            0.33,NA,NA,NA,0.33)
plot(focal)

1 Ответ

1 голос
/ 10 мая 2019

Я думаю, вы ищете комбинацию distance и buffer, например:

Пример данных

library(raster)
r <- raster(nrow=10, ncol=10, crs="+proj=utm +zone=1", xmn=0, xmx=5, ymn=0, ymx=5)
r[c(39,52)] <- 1

Решение

d <- distance(r)
b <- buffer(r, 1.5)
m <- mask(d, b)

Дисплей

plot(m)
text(m, digits=1)

buffer and distance

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