空间相关分析(一) 空间权重矩阵

2023-05-16

        之前的博客分享了各行政区shp文件的制作方法,在拿到shp文件后就可以进行空间相关分析啦。今天来介绍一下相关理论的基础——空间权重矩阵的创建。

目录

        • 定义介绍
        • Geoda创建空间权重矩阵
        • Arcgis创建空间权重矩阵

定义介绍

        根据地理学第一定律"任何事物都是紧密相连的,只不过越相邻的事物连接更紧密"。而空间权重矩阵即可描述事物间的关联程度。根据类型,可分为邻接矩阵距离矩阵

  • 邻接矩阵
            根据空间相邻关系,相邻既可以是有共同边界又可以是有共同顶点。因此,可分为三种类型:Bishop邻接、Rock邻接、Queen邻接,分别如图(a),(b),©所示
    在这里插入图片描述
    图a中A与所有的B都是共顶点连接
    图b中A与所有的B都是共领边连接
    图c中A与所有的B既是共顶点连接又是共领边连接
    不难看出,Queen邻接是Bishop邻接和Rock邻接的结合。一般实际操作过程中,多数都是选Queen连接。根据连接方式,我们即可构建如下空间权重矩阵 W W W来反映区县间的邻接关系:
    W = [ w 11 w 12 … w 1 n w 21 w 22 … w 2 n ⋮ ⋮ ⋮ ⋮ w n 1 w n 2 … w n n ] W=\begin{bmatrix} w_{11} & w_{12} & \dots & w_{1n}\\ w_{21} & w_{22} & \dots & w_{2n} \\ \vdots & \vdots & \vdots & \vdots \\ w_{n1} & w_{n2} & \dots & w_{nn} \end{bmatrix} W=w11w21wn1w12w22wn2w1nw2nwnn
    其中, w i j = { 1 , 区县 i 与区县 j 相邻时 0 , 区县 i 与区县 j 不相邻时 w_{ij}=\begin{cases} 1, & \text{区县$\mathit{i}$与区县$\mathit{j}$相邻时} \\ 0, & \text{区县$\mathit{i}$与区县$\mathit{j}$不相邻时} \end{cases} wij={1,0,区县i与区县j相邻时区县i与区县j不相邻时
    特别说明:当 i = j i=\mathit{j} i=j 时,记 w i j = 0 w_{ij}=0 wij=0
    不难看出,矩阵W是个对称阵,即 W T = W W^T=W WT=W

  • 距离矩阵
            空间单元间除了相邻关系,还有可用距离进行描述。在空间计量经济学中,可分为狭义距离广义距离。狭义距离通常指两个区域的质心距离或者行政中心距离,构建方式如下:
    W = [ 0 1 d 1 , 2 … 1 d 1 , n 1 d 2 , 1 0 … 1 d 2 , n ⋮ ⋮ ⋮ ⋮ 1 d n , 1 1 d n , 2 … 0 ] W=\begin{bmatrix} 0 & \frac{1}{d_{1,2}} & \dots & \frac{1}{d_{1,n}}\\ \frac{1}{d_{2,1}} & 0 & \dots & \frac{1}{d_{2,n}} \\ \vdots & \vdots & \vdots & \vdots \\ \frac{1}{d_{n,1}} & \frac{1}{d_{n,2}} & \dots & 0 \end{bmatrix} W=0d2,11dn,11d1,210dn,21d1,n1d2,n10
    其中, d i j d_{ij} dij表示区域 i \mathit{i} i与区域 j \mathit{j} j之间质心距离(或者行政中心距离)。故距离越远,空间权重系数越小,空间相关性越差。

            广义距离则包括多种形式的虚拟距离,比如:经济距离。例如:在研究区域经济聚集现象时,很多情况下地理位置相邻并不能代表相关性相同。例如:浙江省、江苏省、安徽省三者相领接,但浙江省和江苏省的经济实力明显要高于安徽省,则我们可认为浙江与江苏经济距离更近,而安徽与浙江、江苏的经济距离较远,故前者的空间权重系数要较后者大,空间相关性更强。构建方式如下:
    W = [ 0 1 ∣ Y 1 − Y 2 ∣ … 1 ∣ Y 1 − Y n ∣ 1 ∣ Y 2 − Y 1 ∣ 0 … 1 ∣ Y 2 − Y n ∣ ⋮ ⋮ ⋮ ⋮ 1 ∣ Y n − Y 1 ∣ 1 ∣ Y n − Y 2 ∣ … 0 ] W=\begin{bmatrix} 0 & \frac{1}{|Y_{1}-Y_{2}|} & \dots & \frac{1}{|Y_{1}-Y_{n}|}\\ \frac{1}{|Y_{2}-Y_{1}|} & 0 & \dots & \frac{1}{|Y_{2}-Y_{n}|} \\ \vdots & \vdots & \vdots & \vdots \\ \frac{1}{|Y_{n}-Y_{1}|} & \frac{1}{|Y_{n}-Y_{2}|} & \dots & 0 \end{bmatrix} W=0Y2Y11YnY11Y1Y210YnY21Y1Yn1Y2Yn10
            其中, Y i Y_{i} Yi Y j Y_{j} Yj代表各区域的经济发展水平,则 ∣ Y i − Y j ∣ |Y_{i}-Y_{j}| YiYj则代表两者的经济距离。(一般文献里面用的比较多的是人均GDP来衡量地区发展水平,如果更深入地讨论的话可以使用主成分分析、层次分析、熵值法等方法构建综合经济指标体系),具体的构建方式可参考经济距离矩阵Python构建

Geoda创建空间权重矩阵

        理论说完了,开始实际操作吧。Geoda创建空间权重矩阵还是比较简单的,这里使用的是Geoda1.14中文版本,以重庆市为例:
工具——空间权重管理——创建——选择ID变量
!注意,这里的ID变量必须是一个ID对应一个区县
在这里插入图片描述
根据需要选择对应的连接方式即可。邻接型生成的是gal文件,距离型生成的是gwt文件。这里以Queen连接生成的gal数据格式说明:
在这里插入图片描述
第一行38代表重庆市区县总个数,500229是区县对应的ID,它有两个相邻区县,分别是500238500234;以此类推,500238有5个相邻的区县分别为500229,500234,500237,500235,500236。以地图的方式显示如下:
在这里插入图片描述
当然,gal这种数据格式定义的权重矩阵并不是前面定义所提到的 n ∗ n n*n nn形式的矩阵。我们可以用R进行转化,转化代码如下:

gal2mat <- function(gal, row.st = TRUE) {
  gal <- scan(gal, skip = 1)
  neighbors <- list()
  while(TRUE) {
    nb <- gal[2]
    if(nb != 0) {
      neighbors[[as.character(gal[1])]] <- as.character(gal[3:(2+nb)])
    } else {
      warning(paste("Unit", gal[1], "has no neighbor."))
      neighbors[[as.character(gal[1])]] <- 0
    }
    gal <- gal[-(1:(2+nb))]
    if(length(gal) == 0) break
  }
  n <- length(neighbors)
  swm <- matrix(0, n, n)
  dnames <- names(neighbors)
  dimnames(swm) <- list(dnames, dnames)
  for(i in dnames) {
    swm[i, neighbors[[i]]] <- 1
  }
  if(row.st) {
    swm <- apply(swm, 1, function(x) {
      if(sum(x) != 0) return(x/sum(x)) else {
        warning("The sum of row is 0.")
        return(x)
      }
    })
    swm <- t(swm)
  }
  return(swm)
}
library(spdep)
mynb <- read.gal("Export_Output.gal",override.id=TRUE)
spmat1 <- nb2mat(mynb, zero.policy=TRUE)
spmat2 <- gal2mat("Export_Output.gal",row.st=FALSE)
write.csv(spmat2, "spmat.csv")

在这里插入图片描述

Arcgis创建空间权重矩阵

Arcgis创建空间权重矩阵时,shp文件必须放在英文路径下,否则会报错!

ArcToolBox—空间统计工具—空间关系建模—生成空间权重矩阵
在这里插入图片描述
这里的CONTIGUITY_EDGES_ONLY、CONTIGUITY_EDGES_CORNERS对应的就是Rock连接和Queen连接。生成权重矩阵信息如下:

在这里插入图片描述
最终生成的是swm文件,还需要将其转化为表。

空间统计工具——工具——将空间权重矩阵转化为表

在这里插入图片描述
生成的表是dbf文件,先用excel打开查看数据情况
在这里插入图片描述
OBJECTID即是区县的代码,这里和gal文件表示邻接的方式有些区别。即代号为128的区县有两个领接的区县123和134。
同样可以使用R语言转为 n ∗ n n*n nn的矩阵,如下所示:

swm2mat <- function(dbf) {
  library(foreign)
  swm <- read.dbf(dbf)
  units <- as.character(unique(swm[,2]))
  n <- length(units)
  mat <- matrix(0, nr=n, nc=n)
  dimnames(mat) <- list(units, units)
  i <- as.character(swm[,2])
  j <- as.character(swm[,3])
  w <- swm[,4]
  Map(function(i,j,w) mat[i,j] <<- w, i, j, w)
  return(mat)
}
spmat <- swm2mat("province31_swm.dbf")

在这里插入图片描述
(最后吐槽一下,本来想写博客只是将自己学的知识整理一下。没想到论文检测的时候,居然检测到自己的博客,简直要吐血!!
在这里插入图片描述

参考文献:
1.漫谈空间权重矩阵W
2.将gal权重文件转成n-by-n矩阵
3.将swm权重文件转为n-by-n矩阵

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空间相关分析(一) 空间权重矩阵 的相关文章

  • Unexpected token o in JSON at position 1 at JSON.parse (<anonym>)

    今天在使用路由传递集合参数的时候 xff0c 接收时数据都成了object 使用JSON parse 方法报错 2 0 id 34 1081101908631875584 34 creator null operator null isDe
  • datetime与timestamp

    mysql数据库表示时间类型的数据分别是date datetime time timestamp和year date xff1a yyyy mm dd 格式表示的日期值 xff1b time xff1a hh mm ss 格式表示的时间值
  • [vue-i18n] Value of key '图标管理' is not a string!

    今天项目运行时报了很多vue i18n esm js a925 14 vue i18n Value of key 图标管理 is not a string 的错 xff1a 解决方案 xff1a 在项目的index js文件中修改配置 xf
  • 996,活着抑或死亡

    就在昨天 xff0c 2021年元旦假期的最后一天 xff0c 网传某大厂多多买菜的23岁小姑娘离开了这个世界 不久之前 xff0c 也有另一大厂的朋友因工作强度太大 xff0c 在字节跳动与心脏跳动中选择了后者 还有更戏剧化的新闻是刚因大
  • 2018年度总结

    2019新的一年到了 xff0c 又是一年到收获的季节 xff0c 在去年自己见证了师哥师姐的收获 xff0c 支付宝的出了自己的消费清单 xff0c 自己给自己一份2018年度成长清单 计算机 今年开始学习java xff0c 从开始的不
  • 模糊查询

    lt select id 61 34 findByUserIdMonthAttend 34 resultMap 61 34 BaseResultMap 34 gt SELECT lt include refid 61 34 Base Col
  • 字符串连接

    StringBuilder StringBuffer String三者区别 1 运行速度 xff0c 在这方面运行速度快慢为 xff1a StringBuilder gt StringBuffer gt String String最慢的原因
  • 集合

    Java集合类存放于 java util 包中 xff0c 是一个用来存放对象的容器 集合只能存放对象 比如你存一个 int 型数据 1放入集合中 xff0c 其实它是自动转换成 Integer 类后存入的 xff0c Java中每一种基本
  • 事务

    事务必须服从ISO IEC所制定的ACID原则 ACID是原子性 xff08 atomicity xff09 一致性 xff08 consistency xff09 隔离性 xff08 isolation xff09 和持久性 xff08
  • vue select 获取value和lable

    vue select控件在选择时需要把id和name两个值都获取到 xff0c 实现方案如下 xff1a select控件代码 lt FormItem label 61 34 物资类型 xff1a 34 prop 61 34 supplyT
  • vue中render函数子组件调用父组件方法

    父组件render函数内容 return h swichbutton swichbutton为子组件 props row params row valveState props声明给子组件传递的参数 xff0c 子组件通过以下方式接收 pr
  • Couldn't find preset "es2015" relative to directory

    修改 babelrc文件内容如下 xff0c 运行后报错 Module build failed Error Couldn t find preset es2015 relative to directory 34 presets 34 3
  • vue运行同时被localhost和ip地址访问

    在index js文件下修改host内容 xff0c localhost改为本机ip host 39 192 168 X XX 39 can be overwritten by process env HOST port 8080 can
  • AppData\Roaming\npm-cache\_logs

    npm install报如下错误 xff1a npm ERR code ELIFECYCLE npm ERR errno 1 npm ERR bhwechat 64 1 0 0 dev 96 webpack dev server inlin
  • 你和高手的差距,就在一念之间

    我一直做软件开发和技术管理工作 xff0c 虽然在做联合创始人期间也参与2B的市场销售运营等众多事情 xff0c 但2C的电商卖货这件事从未体验过 想起小学时学的小马过河的故事 xff0c 要想知道怎么做 xff0c 不能只听别人的说法 x
  • 动态IF语句拼接sql语句

    动态IF语句拼接sql语句 lt 列表 正式 非居民 gt lt select id 61 34 listFormatNodWeller 34 resultType 61 34 com jczb binhe oa model Nodwell
  • swagger基本注解

    与使用Swagger核心注释注释模型类以提供其他元数据相同 xff0c 可以注释控制器及其方法和方法参数 64 Api描述了整个控制器 64 ApiOperation用于方法级别的描述 64 ApiParam用于方法参数 64 RestCo
  • sql语句foreach

    lt 查询 新户水表信息 gt lt select id 61 34 getWaterMeterStartByMeterCodeNew 34 parameterType 61 34 com jczb binhe oa model Water
  • groupconcat函数

    比如select group concat name MySQL中group concat函数 语法如下 xff1a group concat DISTINCT 要连接的字段 Order BY ASC DESC 排序字段 Separator
  • echart百度地图取消点击事件

    在下载的nodemodule包中修改代码 var bmap 61 bmapModel bmap 61 new BMap Map bmapRoot enableMapClick false

随机推荐

  • JavaEE规范

    十三个规范为 xff1a JDBC xff08 java Database Connectivity xff09 xff1a JDBC API为访问不同的数据库提供了一种统一的途径 JNDI Java Name and Directory
  • Java反射

    什么时候用 Java程序中许多对象在运行时出现两种类型 xff1a 编译时类型和运行时类型 xff0c 例如Person p 61 New Student 这时生成的p变量的编译时类型为Person xff0c 运行时类型为Student
  • css3 animation 实现帧动画

    先上代码 xff1a lt DOCTYPE html gt lt html gt lt head gt lt title gt lt title gt lt style gt ani container width 125px height
  • 从原理到实战:vue中的provide/inject让你的代码更优美

    前言 关于 vue 中的 provide inject 这一主题 xff0c 它可以被看作是一种高级的依赖注入机制 xff0c 允许跨层级组件实现状态共享 xff0c 从而提高代码的可维护性和扩展性 在这篇文章中 xff0c 我将从原理到实
  • Struts2框架下使用Kindeditor上传图片

    之前的项目是用Spring的模式上传Kindeditor图片到服务器 xff0c 但是现在这个项目里面只有Struts2框架所以跟Spring不一样 xff0c 以下为代码 xff1a public Object fileUpload St
  • 8大话题,解惑企业数字化

    从IT到DT xff0c 从信息化到数字化 xff0c 这个观念已经毋庸置疑 xff0c 但是 xff0c 这条路却缺少参照 xff0c 暗夜前行 xff0c 全靠摸索 关于数字化 xff0c 肯定不是上马一些OA工具 购买一些营销工具就行
  • python爬取网易云音乐

    只需要吧这个id替换掉代码中的id就可以了 span class token comment http music 163 com song media outer url id 61 为网易云的下载连接更换id即可 span span c
  • linux环境下常用的查找命令find、which、grep

    文章目录 前言find命令格式具体示例 locate命令格式具体示例 whereis命令格式具体示例 which命令格式具体示例 grep命令格式具体示例 总结 前言 查找是运维工作的很重要的一部分 xff0c 不管是文件查找 xff0c
  • 网络编程学习(9)/ FTP项目(3) ——目录切换、目录查看功能

    网络编程学习 xff08 9 xff09 FTP项目 xff08 3 xff09 目录切换 目录查看功能 调用功能函数以及对参数数量进行判断客户端 96 server 文件夹下 FTPClient py 96 状态码的变化服务端 96 li
  • [入门] 用java输出一个HelloWorld并运行

    你好 陌生人 今天是我第一次写博客 内容与知识等方面都不成熟 请见谅 如何在java里运行一个HelloWorld文本 首先 创建一个记事本 取名为HelloWorld 后缀名为java 然后打开记事本输入 public class Hel
  • 标识符与数据类型

    标识符 Java 语言中 xff0c 对各种变量 方法和类等要素命名时使用的字符序列称为标识符 Java 标识符有如下命名规则 xff1a 标识符由字母 下划线 美元符 或数字组成 标识符应以字母 下划线 美元符开头 Java 标识符大小写
  • 线程运行的几个状态

    1 创建状态 New 创建一个新的线程对象 已经有了空间和其他资源 2 就绪状态 Runnable 属于等待状态或可运行状态 若其他线程调用了该对象start 方法 从而启动线程 处于就绪状态的线程 等待cpu的使用权限执行 3 阻塞状态
  • Javaweb转发

    概念 请求转发 xff1a request getRequestDispatcher 要转发的URL地址 forward request response 是一次请求 xff0c 转发后请求对象会保存 xff0c 但是它的地址不会发生变化
  • Javaweb重定向

    概念 首先向客户浏览器发送一个http请求 当服务器接收后发送一个响应状态码302 对应一个新的浏览器地址 新的浏览器地址发现有一个302响应状态码 跳转到对应地址 可以这样理解 浏览器要访问oneServlet 可是oneServlet搬
  • 面试题总结(一)

    1 char型变量中能不能存贮一个中文汉字 为什么 char型变量是用来存储Unicode编码的字符的 xff0c unicode编码字符集中包含了汉字 xff0c 所以 xff0c char型变量中当然可以存储汉字啦 不过 xff0c 如
  • SSM整合

    什么是ssm 通常指的是spring springmvc和mabatis 1 xff09 Spring Spring 是一个开源框架 xff0c Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架 xff0c 由 Rod
  • 在这个艰难的环境下,我裸辞了

    2022年 xff0c 疫情期间 xff0c 工作了22年的我 xff0c 从软件研发管理的相关工作中 xff0c 辞职创业 xff0c 开启我的独立咨询顾问生涯 很多人不解和迷惑 xff0c 也有朋友关切的询问我的近况 xff0c 就差用
  • 反射的简要

    什么是反射 Java反射机制是在运行状态中 xff0c 对于任意一个类 xff0c 都能够知道这个类的所有属性和方法 xff0c 对于任意一个对象 xff0c 都能够调用它的任意一个方法和属性 xff0c 这种动态获取的信息以及动态调用对象
  • Lenovo system X3650 M5安装Windows Server 2008 R2简易教程

    目标 xff1a 在Lenovo System X3650上安装Windows Server 2008 R2 xff08 建议安装windows server 2012 R2 xff09 准备工具 U盘和空白光盘 xff0c DVD刻录机
  • 空间相关分析(一) 空间权重矩阵

    之前的博客分享了各行政区shp文件的制作方法 xff0c 在拿到shp文件后就可以进行空间相关分析啦 今天来介绍一下相关理论的基础 空间权重矩阵的创建 目录 定义介绍Geoda创建空间权重矩阵Arcgis创建空间权重矩阵 定义介绍 根据地理