地舆探测器R言语完成:geodetector
本文介绍根据R言语中的geodetector
包,根据多张栅格图画数据,完结地舆勘探器(Geodetector)操作的详细办法。
需求阐明的是,在R言语中进行地舆勘探器操作,能够别离经过geodetector
包、GD
包等2
个包完结。其间,geodetector
包是地舆勘探器模型的原作者团队新近开发的,其需求确保输入的自变量数据现已悉数为类别数据;而GD
包则是别的一位学者开发的,其能够主动完结自变量数据的最优离散化办法选取与履行——即咱们能够直接把自变量带入这一包中,无需额定进行数据的离散化。本文介绍的是根据前者,即geodetector
包完结地舆勘探器的详细操作;根据后者的办法,咱们将在后期的博客中介绍。此外,假如期望根据Excel完结地舆勘探器,咱们能够参阅地舆勘探器Geodetector下载、运用、成果剖析办法这篇文章。
1 包的装备与导入
首要,咱们能够先到geodetector
包在R言语中的官方网站,大致了解一下该包的扼要介绍、开发团队、其他依靠包等基本信息;如下图所示。
随后,咱们开端geodetector
包的下载与装置。输入如下所示的代码,即可开端包的下载与装置进程。
install.packages("geodetector")
输入代码后,按下回车
键,运转代码;如下图所示。
随后,将主动下载并装备geodetector
包;此外,在装置geodetector
包时,会主动将其所需依靠的其他包(假如在此之前没有装备过)都同时装备好,十分便利。
接下来,输入如下的代码,将geodetector
包导入。
library(geodetector)
此刻,在RStudio右下方的“Packages”中,能够看到geodetector
包处于选中的状况,标明其现已装备成功,且完结导入。
2 栅格数据读取与预处理
接下来,咱们首要根据根据R言语的raster包读取遥感印象中说到的办法,读取栅格数据。因为咱们是要根据栅格数据完结地舆勘探器的剖析,因而很显然是需求批量导入多张栅格数据的。
读取栅格数据结束后,咱们经过如下代码,根据getValues()
函数,从本来的RasterStack
格局的数据中,将栅格数据的像元数值提取出来;随后,根据View()
函数显示出这一变量。
tif_file_all_matrix <- getValues(tif_file_all)
View(tif_file_all_matrix)
运转上述代码,将在RStudio的左上方看到变量tif_file_all_matrix
的数据状况,如下图所示。能够看到,此刻tif_file_all_matrix
变量是一个3
列、6377265
行的矩阵(Matrix
)数据;其间,每一列表明每一个图层的数据,每一行则是每一个图层在同一空间方位上各自像元的数值。此外,每一列的称号即为其所对应的图层的称号。
从上图能够看出,每一列数据中都有许多无效值(NA值),即本来栅格图画中的无效值(NoData值);因为在后期的地舆勘探器剖析进程中,呈现无效值会影响咱们剖析的成果,因而咱们需求经过na.omit()
函数将无效值去除。na.omit()
是一个十分便利的函数,其能够将Matrix
数据中存在NA值的行直接去除(只需这一行中存在至少一个NA,就将这一行去除)。
tif_matrix = na.omit(tif_file_all_matrix)
View(tif_matrix)
随后,咱们再看得到的新变量,能够看到存在NA值的行都不复存在了;如下图所示。
接下来,因为geodetector
包完结地舆勘探器操作时,需求确保输入数据为数据框(Data Frames
)格局,因而咱们需求将Matrix
转为Data Frames
;经过as.data.frame()
函数即可完结这样的转化。
tif_frame <- as.data.frame(tif_matrix)
View(tif_frame)
运转上述代码,能够看到现已获取到Data Frames
格局的变量tif_frame
了;当然,从外观上看,其和Matrix
格局的变量tif_matrix
其实长得是相同的。
完结上述数据预处理操作,咱们即可开端地舆勘探器操作。需求留意的是,本文最初也说到了,根据geodetector
包完结地舆勘探器操作时,假如输入的自变量数据是接连数据,咱们需求手动将接连数据转为类别数据。这一过程能够经过ArcGIS的重分类等东西来完结,这儿就不再赘述。
3 地舆勘探器剖析
完结上述数据预处理操作,咱们即可开端地舆勘探器的各项详细操作。需求留意的是,本文首要对剖析的详细办法加以介绍;至于剖析成果的详细研读办法,咱们参阅文章地舆勘探器Geodetector下载、运用、成果剖析办法即可,咱们这儿只做简略的介绍。
3.1 分异及因子勘探
首要,咱们进行分异及因子勘探。在geodetector
包中,咱们能够根据factor_detector()
函数完结这一操作。其间,"A_LCCS0"
是本文中的因变量,"DEM_Reclass"
与"F_LCS0"
则是本文中的自变量;tif_frame
则是Data Frames
格局变量的称号。
在这儿需求留意,假如咱们只需求剖析一个自变量与因变量的影响联系,用下方榜首句代码所示的格局即可;假如需求剖析多个自变量与因变量的影响联系,则需求用下方第二句代码所示的格局,将多个自变量的称号经过c()
函数,组成一个向量(Vector
)格局的变量即可。
factor_detector("A_LCCS0", "F_LCS0", tif_frame)
factor_detector("A_LCCS0", c("DEM_Reclass", "F_LCS0"), tif_frame)
咱们首要以上述榜首句代码为例来运转,运转后稍等片刻(详细时长与数据量的巨细有关),将会得到如下所示的分异及因子勘探成果。
其次,再运转上述第二句代码,得到如下所示的成果。
能够看到,factor_detector()
函数将会给出每一个自变量关于因变量的q
值与p
值。
3.2 交互作用勘探
接下来,咱们履行交互作用勘探;这一操作经过interaction_detector()
函数来履行即可。因为交互作用勘探是需求对多个不同的自变量加以组合,所以很显然这一操作在只要一个自变量的状况下是没有办法履行的;因而咱们需求用前述第二种代码格局,即经过c()
函数,将多个自变量的称号组成一个向量(Vector
)格局的变量后加以履行。
interaction_detector("DEM_Reclass", c("F_LCS0", "K_NDVI"), tif_frame)
运转上述代码,稍等片刻后将呈现如下所示的成果。
能够看到,interaction_detector()
函数将会给出每一种自变量组合方法对应的q
值。可是这儿有一个问题——上述成果只能看到不同组合对应的q
值改变,可是好像看不出这种组合方法究竟归于非线性削弱、单因子非线性削弱、双因子增强、独立、非线性增强中的哪一种状况。
3.3 风险区勘探
接下来,咱们履行风险区勘探;这一操作经过risk_detector()
函数来完结即可,同样是具有一个自变量和多个自变量的状况。咱们这儿就直接以多个自变量的状况来展现代码与成果了。
risk_detector("A_LCCS0", c("DEM_Reclass", "F_LCS0"), tif_frame)
运转上述代码,稍等片刻后将呈现如下所示的成果。
能够看到,risk_detector()
函数首要将会给出每一种自变量的不同分级中,对应的因变量平均值——这儿自变量的分级指的便是重分类后其的每一个分类;其次,其将给出每一种自变量的分级与分级对应的平均值之间,是否具有明显性差异。
3.4 生态勘探
接下来,咱们履行生态勘探;这一操作经过ecological_detecto()
函数来完结即可。因为生态勘探是需求判别多个不同的自变量中,两两之间是否具有明显差异,所以很显然这一操作同样在只要一个自变量的状况下是没有办法履行的;因而咱们需求用前述第二种代码格局,即经过c()
函数,将多个自变量的称号组成一个向量(Vector
)格局的变量后加以履行。
ecological_detector("A_LCCS0", c("DEM_Reclass", "F_LCS0"), tif_frame)
运转上述代码,稍等片刻后将呈现如下所示的成果。
至此,咱们就完结了根据R言语中的geodetector
包,根据多张栅格图画数据,完结地舆勘探器(Geodetector)操作的完好流程。