我有一个很大的形状文件,包含大约180.000 250m ^ 2个多边形。 我想创建一个空间权重矩阵(女王连续性)。 因此,如果它是邻居,则为1,否则为0。 但是,有几个没有任何邻居(岛屿)的多边形。
对于那些没有直接邻居的单位,我如何估算最近的邻居?
(使用sf或sp程序包-在R中)
............................................... ...........................
使用数据样本并将其绘制出来,它看起来像:
然后我可以使用以下代码创建W-Matrix:
Create NB List
sample_queen_nb <- poly2nb(sp.sample, row.names=sp.sample$ID, queen=T)
# Create Weights/list
sample_W.list.queen <- nb2listw(sample_queen_nb, style="W", zero.policy = TRUE)
# Create Matrix
sample_W.queen <- listw2mat(sample_W.list.queen)
并通过绘制对其进行检查:
# Plot ShpPolygons
plot(sp.sample)
# plot weightsmatrix to see connectivity
plot(sample_queen_nb, coords, add=TRUE, col="green", cex=0.5)
得到这个:
如您所见-有一个未连接的孤岛。我想为这个岛格单元估算附近的单位。我该怎么办?
答案 0 :(得分:0)
这就是我创建样本数据集的意思:
x*ya
首先让我们检查一下我们是否断开了区域:
uy + 0.5
这是一个函数,它使用一组区域,计算相同的邻接关系,然后,如果存在没有邻居的区域,它将找到最近的邻居并将其添加到邻接对象中:
x = 0x1.8000000000000p-1
y = 0x1.4000000000000p+0
ya = 0x1.3fffffffffff6p+0
x*y = 0x0.f000000000000p+0 (denormalised)
x*ya - 0x0.ffffffffffff8p+8 (denormalised)
让我们测试一下。
> library(spdep);example(columbus)
> sp.sample = columbus[c(1:5,10,23),]
> plot(sp.sample)