Как создать линейное убывание расстояния (1-0) в пространственном многоугольнике в R? - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь нанести на карту спокойствие вокруг промышленных зон. Спокойствие должно быть «0» в пределах промышленных зон, линейно увеличиваясь до «1» в пределах буфера в 450 м от промышленных зон. Есть ли простой способ отобразить это линейное уменьшение?

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

x_coord <- c(16,  17,  24, 22, 16)
y_coord <- c(59, 55, 55, 61, 59)
xym <- cbind(x_coord, y_coord)

library(sp)
sps = SpatialPolygons(list(Polygons(list(Polygon(xym)),1)))
proj4string(sps) = CRS("+proj=longlat +datum=WGS84 +no_defs     +ellps=WGS84 +towgs84=0,0,0")
plot(sps)

b <- buffer(sps, width = 4)
e <- erase(b,sps)
plot(e, add=T, col="red") # here I choose 4m instead of 450m buffer width

ext <- extent(10,70,10,70)
r <- raster(ext, res=0.25) # here I choose 0.25m instead of 25m   resolution
e <- rasterize(e, r)

Я хотел бы иметь растр "e" со значениями, которые линейно увеличиваются от 0 до 1 (от внутреннего к внешнему). Благодарю за любую помощь или совет!

1 Ответ

1 голос
/ 06 июня 2019

Возможно, что-то вроде этого

library(raster)
x_coord <- c(16,  17,  24, 22, 16)
y_coord <- c(59, 55, 55, 61, 59)
xym <- cbind(x_coord, y_coord)
sps <- spPolygons(xym, crs="+proj=longlat +datum=WGS84")
b <- buffer(sps, width = 4)

ext <- extent(10,40,40,70)
r <- raster(ext, res=0.25)
e <- rasterize(sps, r)
d <- distance(e)
x <- mask(d, b)
z <- x / maxValue(x)

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