当前位置:首页 > 后端开发 > 正文内容

地舆探测器R言语完成:geodetector

邻居的猫1个月前 (12-09)后端开发1451

  本文介绍根据R言语中的geodetector包,根据多张栅格图画数据,完结地舆勘探器Geodetector)操作的详细办法。

  需求阐明的是,在R言语中进行地舆勘探器操作,能够别离经过geodetector包、GD包等2个包完结。其间,geodetector包是地舆勘探器模型的原作者团队新近开发的,其需求确保输入的自变量数据现已悉数为类别数据;而GD包则是别的一位学者开发的,其能够主动完结自变量数据的最优离散化办法选取与履行——即咱们能够直接把自变量带入这一包中,无需额定进行数据的离散化。本文介绍的是根据前者,即geodetector包完结地舆勘探器的详细操作;根据后者的办法,咱们将在后期的博客中介绍。此外,假如期望根据Excel完结地舆勘探器,咱们能够参阅地舆勘探器Geodetector下载、运用、成果剖析办法这篇文章。

1 包的装备与导入

  首要,咱们能够先到geodetector包在R言语中的官方网站,大致了解一下该包的扼要介绍、开发团队、其他依靠包等基本信息;如下图所示。

image

  随后,咱们开端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)操作的完好流程。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=228

分享给朋友:

“地舆探测器R言语完成:geodetector” 的相关文章

DP学习总结

DP学习总结

动态规划是一种经过把原问题分解为相对简略的子问题的办法求解复杂问题的办法。 -----OI Wiki 例.1-最大子段和 剖析 DP四步 ⑴界说状况 界说\(dp_i\)表明以\(i\)结束的最大子段和 ⑵剖析答案 答案即\({\max}^{i\in[1,n]}_{dp_i}\) ⑶剖析方程...

Flutter/Dart第14天:Dart类详解

Flutter/Dart第14天:Dart类详解

Dart官方文档:https://dart.dev/language/classes 重要阐明:本博客依据Dart官网文档,但并不是简略的对官网进行翻译,在掩盖中心功用状况下,我会依据个人研制经历,参加自己的一些扩展问题和场景验证。 Dart类 Dart言语依据类和Mixin承继,是一门面向目标言语...

Flutter/Dart第12天:Dart操控流详解

Flutter/Dart第12天:Dart操控流详解

Dart操控流主要由循环和分支组成: Dart官方文档-循环:https://dart.dev/language/loops Dart官方文档-分支:https://dart.dev/language/branches 重要说明:本博客依据Dart官网文档,但并不是简略的对官网进行翻译,在掩盖中心功...

go翻译成中文,从基础到实践

Go 是一种编程语言,中文译名为“Go语言”或“戈语言”。Go语言由Google开发,旨在提高编程效率和软件的可维护性。它是一种静态类型、编译型语言,具有简洁、高效、并发性强的特点。Go语言入门指南:从基础到实践Go语言,也被称为Golang,是由Google开发的一种静态类型、编译型、并发型编程语...

php显示图片, 图片路径处理

php显示图片, 图片路径处理

在PHP中显示图片可以通过多种方式实现,下面我将介绍几种常见的方法:```html``` 2. 使用PHP读取图片并输出如果你想在PHP脚本中动态生成图片或者从数据库中读取图片并显示,你可以使用PHP的文件处理函数来读取图片文件的内容,然后输出它。这里有一个简单的例子:```php// 检查文件是否...

python随机数,功能与应用

python随机数,功能与应用

生成的随机浮点数是 0.626538175575775,它在0到1之间。如果您有其他关于随机数的生成或使用的问题,请随时告诉我!Python随机数生成器:功能与应用在编程中,随机数生成是一个常见的需求,Python 提供了多种方式来生成随机数。本文将介绍 Python 中随机数生成的基本概念、常用库...