Я пытаюсь сделать некоторые пространственные обобщенные линейные смешанные модели для данных площадных единиц с помощью пакета CARBayes. Как часть этого, мне нужно идентифицировать соседей многоугольника в список соседей, используя spdep::poly2nb
.
Шейп-файл, который у меня есть в NSW, находится здесь: Dropbox с шейп-файлом
Существует свободно доступная широкая версия для Австралии по адресу: ABS.gov.au но я только после NSW.
library(spdep)
Library(sf)
Library(sp)
Library(lwgeom)
p <- read_sf("NSW_POA_arc.shp")
p.nb <- poly2nb(p)
coords <- st_coordinates(st_centroid(st_geometry(p))) # this seems to miss some polygons
plot(st_geometry(p), border="grey")
plot(xx, coords, pch = 19, cex = 0.4, add=TRUE)
По какой-то причине poly2nb
не признает, что некоторые из полигонов соседи друг к другу. Я пытался использовать функцию snap
, но она работает только на snap = 0.0001
. Это также добавляет связи с не соседями.
xx <- poly2nb(p, snap = 0.0001)
plot(st_geometry(p), border="grey")
plot(xx, coords, pch = 19, cex = 0.4, add=TRUE)
Я не уверен, что это проблема топологии, но lwgeom::st_is_valid
говорит, что полигоны действительны.
Любые идеи были бы потрясающими. Я очень новичок в написании этих вопросов должным образом, поэтому любые отзывы приветствуются. Большое спасибо