如何做地理探测器

2022-01-19  本文已影响0人  胡一坨

通过拓扑检查之后,怎么去处理拓扑错误呢?根据错误的类型,会有不同的处理方法。地理探测器使用,当将相关的因变量按照(一般是自然断点法)分级之后,需要将数据转换成渔网矢量。根据研究区的边界,运行创建渔网命令:

渔网命令的位置:ARCTOOLBOX --> 数据管理工具 --> feature class--> 创建渔网(create fishnet)(10.3版本arcgis),创建出来的渔网是长方形的,面积比研究区边界大,所以需要先将渔网的面状数据和点状数据均按照研究区边界进行剪裁,剪裁结果存储在非gdb的数据库中。(如果采用渔网生成的点数据,使用extract to Point工具将栅格转换为点。这为您提供了一个点网格,然后再join到渔网,生成每个网格的矢量面数据,但是这个方法有一个问题,那就是渔网和渔网点对应的编号会不一致,因而在join的过程中会出现错误。)下面介绍一种正确且迅速的方法。

那就是采用spatial analysis tool工具中的——》zonal——zonal statistic,直接将栅格数据根据你的矢量面数据进行统计,这样你将得到网格均被赋值的渔网。根据FID进行join,得到每个渔网因变量和自变量数据的一一对应关系,这一步之后如果你的数据超过30000多行,就没法使用EXCEL包的地理探测器,那就只能改变处理方法了。

比如说将渔网的分辨率降低,减少渔网的数量

第二种就是采用R语言包,R语言包先安装R语言环境,安装Rstudio,参照地理探测器的R实现_哔哩哔哩_bilibili,进行分析。

遇到的问题:第一是txt数据读取的时候,采用的语句是read.table("C:/Users/z/Documents/dxlsl数据.txt",header =TRUE,sep = "," )或者在rstudio中environment中有一个import dataset,可以直接将数据源导入,其读取语句是:dxlsl数据 <- read.csv("~/dxlsl数据.txt", header=FALSE)。

还有就是选择变量的时候如果要用2为步长进行提取?这个暂时还不知道

整体处理步骤:

1、》SL2000所有因素 <- read.csv("D:/胡梦甜/11南京所工作/12 大兴安岭项目/转移矩阵、专题图/SL2000所有因素.txt")#对txt数据进行读取;

》discitv <- c(4:9)#定义离散化分段数,从4到9依次尝试

》 discmethod <- c("equal","natural","quantile","geometric","sd")#定义分段方法,分别是自然断点,等距离。。。

》data.sl<- SL2000所有因素#将读取的数据赋予一个新的变量

》data.continuous <- data.sl[,c(4,16,20,24,28,32)]#将4,16,20,24,28,32的连续变量赋值给data.continuous 这个变量名

》data.continuous[1:3,]#查看前面三行(当不确定自己运算结果时,可以采用这种方式进行查看确认)

》odc1<-optidisc(MEAN ~.,data =data.continuous,discmethod,discitv)#计算各连续变量最优的分段数目和最优的分段点

》data.continuous1<-do.call(cbind,lapply(1:5,function(x)data.frame(cut(data.continuous[,-1][,x],unique(odc1[[x]]$itv),include.lowest=TRUE))))#其中1:5指的是选择的5个需要分段的连续变量,5个向量,这是将连续变量均分段并赋值给data.continuous

》data.sl[,c(16,20,24,28,32)]<-data.continuous1#将分段后的数据赋值给原始数据中相应的列

》g3<-gd(MEAN~.,data=data.sl[,c(4,8,12,16,20,24,28,32,36)])#计算各自变量的q值

》rm2 <- riskmean(MEAN~., data = data.sl[,c(4,8,12,16,20,24,28,32,36)])#进行风险检验

》gr2 <-gdrisk(MEAN~., data = data.sl[,c(4,8,12,16,20,24,28,32,36)])#进行风险探测,同一变量的不同分区对因变量的影响是否显著

》gi1 <-gdinteract(MEAN~., data = data.sl[,c(4,8,12,16,20,24,28,32,36)])#探测因子之间的共同作用相对于单因子作用时对土地利用变化的影响差异。

》gd3 <-gdeco(MEAN~., data = data.sl[,c(4,8,12,16,20,24,28,32,36)])#生态探测器,变量之间对Y的影响是否存在显著性差异

上一篇 下一篇

猜你喜欢

热点阅读