暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用R语言进行空间信息挖掘:以气候变化数据回归分析为例

极思客栈 2021-08-17
4127

近二十年发生的多重极端气候,引发了对全球气候变化的广泛关注。在下面的示例中,我们将在ArcGIS环境下使用R语言以及R库,基于降尺度方法(Downscaling)对气候数据进行趋势研究分析,通过建立回归模型和时间序列预测气候变化趋势。为了管理R语言库,需要为项目创建一个独立的Conda环境。Conda是一个广泛用于R和python的环境管理器。通过创建针对独立工程项目的环境,我们能够控制所使用到的库和软件的版本而不需要改变本机已安装软件的版本。

在ArcGIS Pro中,可以创建和管理包含ArcGIS的Conda环境。首先本文中将在ArcGIS Pro中创建一个新的Conda环境,并安装所需要的库。下面来简单介绍一下arcgisbinding的安装过程。





01


准备分析环境


配置Conda 和RStudio 环境需要安装的内容如下:

  • o    ArcGIS Pro 2.0以上

  • o    Jupyter Notebook

  • o    Python

  • o    R-ArcGIS bridge

  • o    R


安装arcgisbinding 


安装arcgisbinding 最简便的途径是在本机中安装R和RStudio,并在ArcGIS pro中进行下载安装。在ArcGIS pro中,选择options选项卡,并选择Geoprocessing选项。在R-ArcGIS Support下方选择本机的R版本。选择install from the internet:


查看arcgisbinding版本号为1.0.1.244, 选择确定。



安装完成后可以看到已安装arcgisbinding的版本。




打开本机的RStudio,查看R版本。


输入代码测试安装是否成功,并查看ArcGISPro产品是否已安装:




上图显示arcgisbinding安装完成,可以开始在RStudio使用。

 

在ArcGIS Pro中使用arcgisbinding,需要在设置中,克隆ArcGIS Pro的环境:

1.   首先创建一个文件夹命名为arcgipro-py3-clone1

2.   启动ArcGIS Pro,本教程使用的是ArcGIS Pro 2.7

3.   选择设置>python选项,打开python Package Manager,ArcGIS Pro中默认的Conda环境是arcgispro-py3,这个环境是不可编辑的。因此需要克隆此环境,并安装所有需要的包。选择环境设置,并克隆arcgispro-py3:







02


 建立回归模型



ArcGIS平台能够支持Jupyter notebooks,从而帮助我们更好地建立模型范式,分享和扩展空间分析。Arcgisbinding作为一个R扩展包,能够将空间数据从ArcGIS平台迁移到R生态系统,这一功能对于空间数据在R中的统计和分析十分便利。下面将使用GCM(General Circulation Models)数据进行分析和预测未来的气候变化趋势。


模型建立之前,需要对预测变量进行回归分析,并选定一个目标变量(观测站记录的气温或降水),安装python库和R库之后,分析预测变量之间的关系,通过探索性回归模型的方法来建立变量和气候观测站记录的数据之间的关系。本文中我们将选用克里金插值方法来对平均气温和降水进行插值计算,选择Empirical Bayesian Kriging方法,对月平均气温进行差值计算:



克里金差值完成后的预览:



查看模型拟合程度:


EBK差值计算的月平均气温:



EBK差值计算后的月平均降水:







03


 回归分析



首先我们将分析和预测研究数据之间的关系,接着将观测到的结果用来创建复杂的解释数据分析,包括进行线性回归,地理加权回归来分析变量与预测值的关系。后面我们会使用更加复杂的模型,例如随机森林分类回归来探索GCM变量与观测到的温度之间的关系。


下面我们来建立一个使用R来计算大气环流模式 (GCM)的回归模型。来分析GCM变量与观测到的气温之间的关系。主要用到了数据源有:CGM气候数据和US_climate数据。


  • 查看包含CGM数据的矢量文件:当前的字段包括GCM变量获取的观测时间,包括美国248个城市的气象观测站,共记录47191条数据。每个气象观测站的表格包括了从2005到2010不同日期的多条观测数据。

  • 查看属性表:属性表包含32个GCM气候变量,可以用来创建温度模型,下表包含了每一个变量的解释。下一步,我们将使用回归矩阵来观察是否存在变量之间的多重共线性。首先我们创建一个线性回归模型,这一模型需要明确与目标变量线性相关的预测变量,而这一预测变量与其他预测变量非线性相关。

CGM变量属性表

变量名称

描述

ccb

对流云底层气压 (Pa)

cct

对流云顶层气压 (Pa)

ci

发生对流的时间

clivi

冰水含量 (kg m-2)

clt

总云量 (%)

clwvi

凝结水含量 (kg m-2)

evspsbl

蒸发量 (kg m-2 s-1)

hfls

地表向上潜热通量 (W m-2)

hfss

地表向上感热通量 (W m-2)

huss

近表面比湿

pr

降水 (kg m-2 s-1)

prsn

降雪通量 (kg m-2 s-1)

prw

水汽含量 (kg m-2)

ps

地表气压 (Pa)

rlds

地表向下长波辐射通量 (W m-2)

rldscs

晴空地表向下长波辐射通量 (W m-2)

rlus

地表向上长波辐射通量 (W m-2)

rlut

大气顶层向外长波辐射通量 (W m-2)

rlutcs

晴空大气顶层向外长波辐射通量 (W m-2)

rsds

地表向下短波辐射通量 (W m-2)

rsdscs

晴空地表向下短波辐射通量 (W m-2)

rsdt

大气顶层入射短波辐射通量 (W m-2)

rsus

地表向上短波辐射通量 (W m-2)

rsuscs

晴空地表向上短波辐射通量 (W m-2)

sbl

地表冰雪升华通量 (kg m-2 s-1)

sfcWind

风日平均近地表风速 (m s-1)

tasmax

每日最高近地表气温 (K)

tasmin

每日最低近地表气温 (K)

tas

近地表气温 (K)

tauu

向东的地表向下风应力 (Pa)

tauv

向北的地表向下风应力 (Pa)

ts

地表温度 (K)


US_climate矢量数据包括了月平均温度(T_MONTH)以及平均降水量(P_MONTH)。展示2006年起美国248个城市的长期气候数据。




提示:

气候模型的模拟过程,通常使用数字模型(例如GCM总循环模型)来代表大气、海洋、冰层以及地表的物理循环进程。数学模型是当今使用最广泛的模拟全球气候系统的模型工具,包括了对温室气体的浓度计算等方面。较为简单的区域模型也被用来进行全球或局部地区的气候预测,GCMs与区域模型相结合,具有提供地理和物理学连续性估计某区域的环境变化的潜力,在影响预计上发挥着至关重要的作用。CGM数据一般是由NetCDF格式存储的。



在ArcGIS Pro中使用R脚本工具执行分析


GIS用户可以创建R脚本工具并直接在ArcGIS Pro中作为地理处理工具运行,也可以将R脚本在模型中使用。也可以在python中调用R脚本,获取输入的参数变量,这一操作和其他的地理处理工具相同。这一功能让使用者能够自定义R脚本的运行参数,但无需具备R语言的相关知识。


arcgisbinding 包括一些设计和自定义脚本工具的方法,这些功能包括:

  • oarc.env()

  • oarc.progress_label()

  • oarc.progress_pos()


arc.env 函数


使用ArcGIS时,用户能够使用地理处理环境设定来自定义项目环境,包括设置输出坐标系,设置处理范围,设置随机seed。如果用户预先设置了一些环境变量,这些环境变量将会影响对R工具的使用。Arc.env()函数能够获取本地ArcGIS的地理处理工具环境设定,并检查设置。当使用脚本工具的时候,使用arc.env()函数能够将地理处理工具环境保存在 env变量中。在确定之前,可以检查工具输入的设定,在确定设定之前,可以设置错误消息来提示调整环境设置。


arc.progress_label 和arc.progress_pos函数


使用arcgisbinding能够自定义工具来运行脚本。通过arc.progress_label()以及arc.progress_pos()函数,目前只在ArcGIS Pro使用。当运行ArcGIS Pro的地理处理工具时,一个运行状态工具能够展示运行的自定义状态信息,运行状态工具也能够自定义来展示基于当前运行状态的不同层面的完成程度。

Arc.progress_label()函数能够自定义用户运行工具时看到的信息,当工具运行状态栏通常持续按照自定义运行,可以将状态栏设置为自定义的从0到100排列的百分数,来表现当前百分比。这些功能都将在示例数据被使用多次来展示如何创建一个新的地理处理脚本工具。


R Script 工具使用介绍


arcgisbinding  框架提供了高度自定义的功能,每个脚本工具都遵循相似的框架,并包含特定的元素。Tool_exec()方法作为包含了这些元素的容器,由于R脚本通常返回默认值,包含return(out_parameters)被使用来返回数据。然而,大多数脚本工具都不会需要这一栏目,不需要添加这一行代码,因为R脚本使用arc.write()函数,会默认返回运行的结果。


下面我们将用R脚本编写的地理处理工具在ArcGIS Pro中执行回归分析:

首先创建一个工具箱,命名为Logistic Regression,选择添加R Script文件。




当需要编辑R脚本时,选择R Studio打开,进行编辑:


打开创建好的工具箱,模型定义了以下几个参数:输入数据,训练数据集占比,反应变量和预测变量,以及选择输出数据集。



点击运行工具,会根据R Script安装需要的R库。运行结果如下。

根据观测数据预测的月平均气



下图展示模型残差



下面我们将使用R Studio进行回归分析,在R Studio中编辑下列脚本:



运行脚本,在R Studio 进行回归分析。得到下图的分析结果:红色代表强正相关,蓝色代表强负相关,可以看到一部分变量之间具有较强的相关性(>0.9)




04


气温变化预测


上文已经使用了不同的回归方法,这一步将使用随机森林模型为所有使用GCM变量训练的大气监测站预测局部月平均温度。数据源包含了不同的气候监测站记录的不同时段的温度。使用随机森林来学习时间和空间的不同模式。来研究平均温度和GCM变量之间的关系。随机森林和回归分析产生不同的结果,本文将根据这些结果来预测每年的每个月的气温。


在notebook中使用python工作流


ArcGIS Pro 中的 Notebook使用R的分析功能,提高了R的数据的可视化,展示以及传输。使用时能够针对特定的问题进行分析研究,并且能够有效地分享工作流。下面我们将在ArcGIS Pro的环境中进行分析。


  1. 首先打开Cmd

  2. 在 Windows 文件资源管理器中通过%LOCALAPPDATA% 命令找到克隆后的Conda环境文件位置




   3.在保存项目的文件目录下创建文件夹notebooks




4. 在cmd中将地址添加到上述地址,在命令提示符中,粘贴之前复制的路径,然后在路径末尾输入 jupyter-notebook,打开 notebook:




5. 导入ArcPy,设置分析环境。调用ArcPy中随机森林的模块进行分析预测:



6. 在Juputer notebook中执行以下的工作流,并保存为栅格文档。




7. 将栅格文件按时间序列导出:

导出预测的气候变化时间序列动画,展示了预测的气候变化数据:




E N D



‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍总结


R用户群体在近几年的增长十分迅速,基于在统计数据分析领域的受欢迎程度,R的用户群体还在不断增长。而R与ArcGIS的结合,可以开发应用范围更广的工具,从而扩展ArcGIS的功能。本文仅提供了一个应用思路,而R-bridge还有更多的应用场景等待挖掘,例如:使用R脚本来处理ArcGIS数据集,分析空间数据和非空间数据等等问题等等,还有很广阔的拓展空间。










文章转载自极思客栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论