前面几节已经将spdep定义空间关系和转换为空间权重矩阵的方法及原理给大家做了个简单的介绍,本章将spdep中的其他几种空间关系做一个简单介绍,就当资讯存档了。

除去触点连接和距离范围(上一节描述的,触点连接加上范围限制,能够设定在一定距离范围内的要素为临近)以外,还有几种经典的空间关系,比如k临近和自然临近。

因为空间要素的特征,触点连接仅在面要素和线要素之间存储,点要素之间是没有触点这种说法的——点与点之间,只存在两种关系:分离与重合。所以除了距离范围方法以外,K临近和自然临近这两种关系就有很大的作用了。

下面我们来看看K临近:

K临近的K,指的是在中心要素旁边,需要指定多少个要素作为我的临近要素,由近至远选择:

这种关系忽略了距离,不管千山万水,一定要找到指定的数量,所以特别适用于点要素和有岛和空洞的面状要素。下面我们用中国省会的点要素作为数据来演示k临近空间关系。

数据如下:

绘图脚本如下:

library("sp")
library("maptools")
library("spdep")path <- "E:\\workspace\\IDE\\Rworkspace\\空间分析\\空间权重矩阵\\china\\"#将中国的省级行政区划读取为ploygon,省会读取成point
cnData <- readShapePoly(paste(path,"CNPG_S.shp",sep =""))
ctData <- readShapePoints(paste(path,"city_SH.shp",sep =""))
#定义投影为wgs84
proj4string(cnData) <- "+proj=longlat +datum=WGS84"
proj4string(ctData) <- "+proj=longlat +datum=WGS84"
#定义唯一标识符,用行政区划的编码
IDs <- ctData@data$ADCODE99
#将名称转换为gbk编码
ctData$NAME <- iconv(ctData$NAME,"UTF-8","GBK")
plot(cnData,border="grey")
plot(ctData,pch=19,cex=1,col='red',add=T)
text(ctData@coords[,1],ctData@coords[,2]+1,labels = ctData$NAME)

设定K=3,首先定义临近关系:

然后查看北京的临近要素:

在knn对象下面,有个叫做nn的数组,就是临近关系信息,表示谁与谁临近。下面将这个knn对象,转换为nb对象:

NB对象的结构,前几节已经说明了,大家有兴趣直接回去翻。

定义完成之后,就可以直接将NB对象给转换为空间权重矩阵了:

绘制关系如下:

定义及绘图语句如下:

#定义k临近关系,k=3:
kn1 <- knearneigh(ctData, k=3)
w_kn1 <- knn2nb(kn1, row.names=IDs)
w_kn1_mat <- nb2listw(w_kn1)
plot(cnData,border="grey")
plot(ctData,pch=19,cex=1,col='red',add=T)
plot(w_kn1_mat,ctData@coords,add=T,col='blue')
text(ctData@coords[,1],ctData@coords[,2]+1,labels = ctData$NAME)
title("K临近,K=3")

下面定义多个不同的K,来看看:

定义完之后,如果还需要进行反距离权重设定,只需要继续计算距离然后设定glist参数即可,可以参考上一节内容。

当然,这个方法也能够直接给面要素做临近关系矩阵,但是它用的是面状要素的中心点,效果如下:

但是实际上来说,在面要素中,设定K临近本来就是不太合理的,你怎么知道一个面最后与多少个面临近呢?所以更多时候,K临近主要给点状要素使用,还有的情况就是以面中的关键点来做为K临近进行设定,然后把这个关系再交付给面,比如用省会城市作为K临近设定,然后把临近关系转移给面要素来作为面要素的空间关系。(这个方法很简单,只要数据结构学的比较过关的同学,三五分钟就写完了,我在讲完所有的空间关系之后,将给出示例代码)

K临近就先写到这里,下面做个简单总结:

1、在R语言里面,K临近主要给的点要素来用,如果要对面要素进行K临近设定,需要用面要素的中心点做设定,也就是说,在方法里面,设定的参数,空间要素一定是要面要素的。
2、K临近的设定相对比较死板,用的时候需要特别关注。
3、可以用K临近配合自定义空间关系和距离权重来使用。

下一节,讲spdep中最后一种预设的空间关系:自然临域。
(待续未完)

白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(4):K临近相关推荐

  1. moran指数 r语言_白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响...

    原标题:白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响 上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与Ar ...

  2. 二进制空间权重矩阵_白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵...

    原标题:白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵 中国古代就有"天圆地方"一说,所谓的"方"就是所谓的矩阵-- 在军事上面,最为讲究就是团体的力 ...

  3. 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2)

    上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与ArcGIS自定义空间权重矩阵一样,R语言的空间权重矩阵如果纯粹从零开始自定义生成,是非常麻烦的事情,所以我们一 ...

  4. 白话空间统计之二十五:空间权重矩阵(一)点数据的空间关系(1)

    空间分析的根基,来源于60年代Waldo R. Tobler教授"地理学第一定律"的"Tobler's First Law"(简称TFL),即为"Ev ...

  5. 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(5)完结篇:自然临近关系

    自然临近是R语言中spdep中内置的最后一种临近关系. 所谓的自然临近,指的是不进行任何的预设关系,通过其空间位置来判断是否属于相互临近,那么这个空间位置指的是什么呢?众所周知,在几何图形中,三角形是 ...

  6. raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)

    前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...

  7. raster | R语言中的空间栅格对象及其基本处理方法(Ⅱ):投影、属性提取

    library(raster) 投影 设置投影 在使用raster()函数创建栅格对象时,调用crs参数可以定义其投影.投影参数具有默认值: r <- raster() crs(r) ## CR ...

  8. raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样

    本篇示例数据: library(raster) # 2015年中国人口空间分布公里网格数据集 # 数据来源:https://www.resdc.cn/DOI/DOI.aspx?DOIid=32 pop ...

  9. raster | R语言中的空间栅格对象及其基本处理方法(Ⅲ):切片/掩膜、图层叠加...

    本篇介绍如下处理方法: 根据矢量数据的范围对栅格数据进行裁剪: 通过对栅格数据进行运算得到新的栅格对象,如通过人口和GDP的栅格数据得到人均GDP的栅格数据. 示例的栅格数据是2015年中国人口和GD ...

最新文章

  1. “聚沙成塔”——用大数据思维理解生命的复杂体系,数据之眼看显微镜下的复杂生命【数据故事计划二等奖】...
  2. 温故之 “快速排序”
  3. IDEA overwrite报错、languagelevel设置不生效问题
  4. LiveVideoStackCon 2018 注册通道即将关闭
  5. 【BootCDN】前端使用开源免费的 CDN 加速服务
  6. Swing应用程序中的CDI事件可将UI与事件处理分离
  7. Linux 实操 —— Linux 系统性能分析
  8. 横向的二级导航菜单,在多浏览器下可用
  9. zlib源码导读[转]
  10. react-native 解决“Could not get BatchedBridge...” 的问题
  11. W ndows7安装Hp1020,hp1020打印机驱动
  12. php漂浮广告代码,js 居中漂浮广告_广告代码
  13. Mian容器中Page分頁
  14. 操作系统系统概述——云计算
  15. python自走棋_GitHub - pumpkye/AutoChess: 自走棋战斗模拟器,搭配双方阵容然后模拟战斗,得到战斗结果,希望借此探索更加平衡的棋子设定...
  16. Linux | 第一篇——常见指令汇总【超全、超详细讲解】
  17. ap计算机sql,如何用sql实现AP
  18. 【杂记】nodejs导入jQuery的方法
  19. ANSYS有限元仿真:必备流程和知识(一)
  20. matlab 实现二值图像孔洞填充函数imfill()

热门文章

  1. LINUX串口驱动分析——发送数据
  2. 【高级篇 / FortiGate-VM】(6.4) ❀ 01. 下载 FortiGate VM 虚拟机文件 ❀ FortiGate 防火墙
  3. 数据库之查询数据记录
  4. 这6款必备的电脑管理软件,特别最后一款完胜Everything
  5. 报关和报检有什么区别丨汇信外贸软件
  6. Ext.grid.ColumnModel
  7. 敏捷,需要有人喊一声
  8. WordPress主题 Tob 自适应响应式小清新无限加载图片主题[更新v0.5]
  9. java 监控 native 内存_记一次java native memory增长问题的排查
  10. JQuery滚动条事件