В моем примере:
#Packages
library(spatstat)
library(raster)
#Selection of ants data set
data(ants)
geo.form<-cbind(x=ants$x,y=ants$y)
#Definition of raster resolution - 10 units
ants.w<-as.owin(ants)
ext <- as(extent(c(ants.w$xrange,ants.w$yrange)), "SpatialPolygons")
ants.res<-rasterToPoints(raster(ext, resolution = 10), spatial = TRUE)
coordinates(ants.res) <- ~ x + y
# coerce to SpatialPixelsDataFrame
gridded(ants.res) <- TRUE
#Rasterize
antscount<- rasterize(geo.form, raster(ants.res), fun='count', background=0)
values(antscount)[values(antscount) > 0] = 1
#Vizualize
plot(antscount)
Теперь я хотел бы найти способ создать 1 (всего 9 пикселей) и 2 пикселя (всего 25 пикселей), окружающих соседство каждого пикселя (муравья) в изображении графика. Мне нужно, чтобы этот новый пиксель создания тоже имел значение 1.
Выбор соседних пикселей звучит просто, примерно так:
# For 1 pixel neighborhood
neigh1 <- matrix(1L, nrow=3, ncol=3); neigh1[2,2] <- 0L
ants1<-which(values(antscount)> 0)
cells<- xyFromCell(antscount, ants1)
e1<-adjacent(antscount, cells, directions=neigh1, pairs=FALSE)
ng_coords1 <- xyFromCell(antscount, e1)
# For 2 pixel neighborhood
neigh2 <- matrix(1L, nrow=5, ncol=5); neigh1[3,3] <- 0L
e2<-adjacent(antscount, cells , directions=neigh2, pairs=FALSE)
ng_coords5 <- xyFromCell(antscount, e2)
Проблема в том, что мои координаты ng_coords1 / ng_coords5 неверны и находятся только в верхней части растра antscount, несмотря на условие xyFromCell (antscount, ants1). Моя цель - новый растр присутствия муравьев с 8 и 24 пикселями, окружающий окрестности каждого пикселя (муравья) в исходном растре antscount. Пожалуйста, какие-нибудь идеи?


