Интересно, как я могу определить , если у многоугольника есть открытый край или нет . Я считаю, что многоугольник не имеет открытого ребра, если он полностью окружен соседями.
Используя чудесное poly2nb(fc)
Я получаю обратно список соседей: но из этого списка я не знаю, сколько соседей должно быть, чтобы клетка была полностью окружена соседями? Вот ситуация:
Мой центральный полигон red
имеет в обоих случаях 3 соседа, но имеет открытый край (слева) или полностью окружен по соседям (справа). Если используется формат raster
и регистр ферзя , для полностью окруженной ячейки требуется 8 соседей. Если меньше, то это открытая ячейка. Но можно ли получить что-то похожее от объектов poly2nb(fc)
и nb
? Конечно, мои данные могут содержать осколки и разрывы между отдельными полигонами, поэтому я не хочу полностью полагаться на перекрывающиеся ребра или что-то еще.
Мои реальные данные доступны в dropbox или googleDrive
Пример кода r для вычисления количества соседей:
setwd("U:/Desktop/raw/myDir")
# Read input forest stand data
forest_fc = readOGR(getwd(),
layer = "forest_fc")
# continuity based neighbourhood:
# import whole
# shapefile, do not split it by one feature at time
nb <- poly2nb(forest_fc,
#row.names = forest_fc,
snap = 0) # snap to correct for the gaps/slivers
# store the number of neighbours by cell
forest_fc$nb_count<- card(nb)
plot(forest_fc,
col = "white",
border = "grey")
plot(nb,
coordinates(forest_fc),
add = T,
lwd = 2,
col = "black",
pch = 16,
cex = 0.5)
text(forest_fc, "nb_count", col = "red", cex = 1.2)
Как различить полностью окруженные многоугольники и многоугольники с открытым краем?