如何估算空间权重矩阵的缺失邻居(皇后连续性)

时间:2019-07-30 10:09:13

标签: r matrix spatial imputation neighbours

我有一个很大的形状文件,包含大约180.000 250m ^ 2个多边形。 我想创建一个空间权重矩阵(女王连续性)。 因此,如果它是邻居,则为1,否则为0。 但是,有几个没有任何邻居(岛屿)的多边形。

对于那些没有直接邻居的单位,我如何估算最近的邻居?

(使用sf或sp程序包-在R中)

............................................... ...........................

使用数据样本并将其绘制出来,它看起来像:

sample shape file

然后我可以使用以下代码创建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) 

得到这个:

Connectivity Matrix

如您所见-有一个未连接的孤岛。我想为这个岛格单元估算附近的单位。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这就是我创建样本数据集的意思:

x*ya

首先让我们检查一下我们是否断开了区域:

uy + 0.5

enter image description here

这是一个函数,它使用一组区域,计算相同的邻接关系,然后,如果存在没有邻居的区域,它将找到最近的邻居并将其添加到邻接对象中:

 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)

enter image description here