扑上有位网友发起了一个很有意思的话题,《湖北是唯一一个到各省区最多只要跨过两个省的省份吗?》这在地理里是个多阶空间邻接矩阵的问题。我觉得这个问题可以作为学习R语言中spdep
包的入门吧。顺手解决了一下。中国地图的矢量数据是我从高德上抓取的。先画一个中国地图
library(pacman)
p_load(tidyverse,sf,spdep,tmap)
tm_shape(china_province)+tm_polygons()
用的包主要是以上这么几个。画图的话也可以用ggplot2
。
所谓空间邻接矩阵,也就是记录地理实体之间空间邻接关系的矩阵。比如江苏与安徽有着共同的省界,那就记录为1,这种直接相邻的1阶空间相邻。而江苏与湖北之间隔了一个安徽,这就是2阶空间相邻了。(广义上说,这一类矩阵应该叫空间距离矩阵。邻接关系可以看做是拓扑学意义上的距离吧(好像是)。而构建空间距离矩阵是开展空降计量经济学等空间分析的基础。)下面回到问题本身。我们如果用空间邻接关系的语言来重新描述一下这个问题,那就是湖北是中国唯一的其1+2+3阶空间邻接矩阵就包含了中国所有省份的省份吗?果然就不说人话了,哈哈。
下面,我们首先构建所有省份的1阶空间邻接矩阵。
china_nb=poly2nb(as(china_province,'Spatial'),queen=F,