Итак, у меня есть несколько вопросов, касающихся пакета растров в R. У меня есть растр с оценочной совокупностью в каждой точке сетки. У меня также есть шейп-файл с полигонами областей. Я хочу узнать координаты района с самой высокой плотностью населения в каждом регионе. Предположим, что каждая окрестность представляет собой однородный квадрат 5 на 5 точек сетки.
Следующий игрушечный пример имитирует мою проблему.
library(raster)
library(maptools)
set.seed(123)
data(wrld_simpl)
wrld_simpl <- st_as_sf(wrld_simpl)
contr_c_am <- wrld_simpl %>%
filter(SUBREGION ==13) %>%
filter(FIPS != "MX") %>%
select(NAME)
# Create a raster of population (sorry for the bad example spatial distribution)
r <- raster(xmn=-180, xmx=180, ymn=-90, ymx=90, res=0.1)
values(r) <- runif(ncell(r), 0, 100)
# keep only raster around the region of interest
r_small <- crop(r, extent(contr_c_am))
plot(r_small)
plot(st_geometry(contr_c_am), add = T)
raster_contr_c_am <- rasterize(contr_c_am, r)
raster_contr_c_am - это сетка населения, а название региона сохраняется в качестве атрибута.
Каким-то образом мне нужно отфильтровать только точки сетки из одного региона и, возможно, использовать какую-то функцию, например, focal (), чтобы найти общую численность населения поблизости.
focal(raster_contr_c_am, matrix(1,5,5),sum, pad = T, padValue = 0)
Затем мне нужно найти, какую сетку точка имеет наибольшее значение в каждой области и сохраняет свои координаты.
Надеюсь, мое объяснение не слишком запутанное,
Спасибо за любую помощь!