在今年的全球用户大会上,Esri官方公布了R-ArcGIS的官方示例,在ArcMap和ArcGIS pro中,直接通过Toolbox可以调用R的分析工具包,将R的分析能力直接作用在ArcGIS上面。打通了两大工具之间的壁垒,不能不说,是分析界的一大盛事啊。
视频截图如下:
总所周知,R在数据分析领域的地位,犹如JAVA在编程语言领域的地位,简直就占据了开源软件的头把交椅,据统计,R的公开分析包,已经超过了6000个,至于其他的小范围的专用分析包,更是多不胜数。Esri能够打通R与ArcGIS之间的通道,不得不让人对Esri未来的战略有了各种遐想。
至于R语言和ArcGIS未来的发展,以后有机会慢慢说,今天我们来看看,这个神器的物体,到底是神马神器。
前提条件:你的ArcGIS 的版本必须是10.3.1以及以上的版本。
首先,R-ArcGIS是Esri弄出来的一个开源软件,目前全部的东西都在github上,地址如下:
https://r-arcgis.github.io/
打开之后,发现了这这样一个界面,从官方的说明来看,一共有两大内容:
1、在ArcGIS(toolbox)中调用R语言的分析包。
2、在R语言中调用ArcGIS的工具。
要完成这个功能,首先简单的描述一下他们的沟通机制是怎么样的。
ArcGIS的toolbox提供了一个封装的环境,可以把符合规范的脚本,直接封装成在toolbox中直接执行的工具,最常见的可能是封装Python的脚本了,比如下面的工具,就是直接封装的Python脚本:
这里要对python脚本进行封装,也是有规则的,需要按照ArcGIS给定的编写方法,进行输入输出的交互,具体的Python交互方法,可以参考ArcGIS的帮助文档,我这里就不赘述了。
那么R语言的代码,也是一种脚本,按照Toolbox可以封装Python脚本的规则,R语言的脚本,依然可以被封装到Toolbox里面,变成一个工具来执行,和Python脚本一样,只需要安装ArcGIS定义好的输入和输出规则,就可以直接在ArcGIS里面调用R语言的工具了。如下图:直接把R语言的脚本,封装到了ArcToolbox中。
封装和编写工具,以后有机会慢慢聊,今天我们先来看看如何安装这一套环境。
首先,ArcGIS还没有把R环境像Python一样集成到ArcGIS的安装包里面(当然,如果按这种趋势下去,我觉得未来总有一天会被集成的)。所以,要使用这一套东西,需要自己安装R语言环境。
R的安装非常容易,直接下载R语言的安装包就可以了,然后全部都是下一步,而且R语言作为开源软件,不存在许可授权的情况,网络上各种安装教程,不做罗嗦。
贴一个R语言的下载地址,官方网址:https://www.r-project.org/
安装的时候注意,如果你的电脑是64位的,最好选择64位的安装,因为64位的安装包里面,包括了32位的,但是32位的不包括64位,所以,你只需要按照64位的,就等于全部可用了。ArcMap使用的是32位的R,所以你也可以选择只安装32位的,但是我个人建议,是32位和64位都装上。
另外,Esri官方建议,需要用刀R的3.1.0以上版本,只要你去官网上下载最新,自然就不会用问题。
把R安装好之后,可以打开测试一下R语言是否正常运行,一般来说,都R语言环境会提供两个GUI工具,如下:(当然, 我这里是3.2.0,你安装的版本可能比我高,这里对版本可以忽略,只要超过3.1.0就可以了)
一个用于启动32位的R环境,一个用于启动64位的R环境,因为我们在ArcMap里面使用的是32位的,所以双击启动R i386这个工具即可。下面可以来个经典程序“hello world”。
R安装完成之后,就可以按照R-ArcGIS了,回过头来看R-ArcGIS的主页,整个R-ArcGIS提供了三个东西,一个是r-bridge-install,一个是r-bridge,一个是r-sample-tools。
第一个,r-bridge-install就是用于安装R-ArcGIS的工具,这个工具用Python写成,可以直接在ArcGIS里面调用(从这里看出Esri软件开发团队的代码水平大有进步啊,直接提供安装脚本了!)
点击下载zip之后,解压到你可以找到的位置,就可以进行安装了:
解压之后,文件夹的结构如下:
其中,pyt这个包,就是ArcGIS的Python专用脚本包,在ArcMap中直接打开,如下:
打开之后,一共有四个工具,分别是安装R语言与ArcGIS的桥接包、显示R语言的版本、检查工具安装情况,和更新工具。如果是第一次安装,只需要依次执行前三个即可。
点击Install Rbindings工具,弹出如下窗体:
如果是你以前安装过以前的版本,可以选择勾上里面的这个勾,那么会进行覆盖安装,第一次安装就什么都不用选,直接点OK就行。再次提醒,ArcGIS的版本,必须是10.3.1及以上,当然,现在最新版本就是10.3.1,以后有更高的版本,就不用说了。
安装脚本运行界面如下,从控制台打印出来的信息可以看到,脚本其实就是去github上,下载了一个Esri提供的,与R进行交互的zip包,这个包一般是用C++写的,下载完成之后,会自动解压和安装。
下载这个包和安装的速度,取决于你的网络(也取决于当地连接github的网络质量,你懂的)。
提示成功之后,运行一下两个工具,来检查一下是否成功:
1、输出R的版本:
如果版本不对,控制台会输出错误和警告的,成功就表示没问题。
2、检查桥接工具是否安装成功:
同样,如果不报错,就表示成功了。
然后,我们可以切回到R语言的环境里面,来看看ArcGIS的包是否在R的环境中可用。
在R语言环境中输入如下语句:
library(arcgisbinding)
arc.check_product()
第一句是在R语言环境中加载ArcGIS的桥接包,第二句是检查ArcGIS的许可,显示如下:
如果不报错,测试就全部完成,然后我们可以运行官方提供的一个sample来测试一下
下载r-sample-tools,(就在主页上,不截图了,自己找),然后解压,得到如下文件结构:
因为我们要再ArcMap里面进行测试,所以双击打开ModelBasedClustering.mxd就可以了,因为Esri官方在这个文档里面加入了好几个online的服务,所以在本地打开,如果没有网络的话,会很慢加报找不到图层,不过不影响,你把引用的网络服务关就可以了,如下:
打开R SampleTools.tbx,然后运行脚本工具:
前面两个是必选的,第一个是用于聚类的点图层,第二个是输出结果图层,后面三个是可选图层,执行工具:
这个工具调用的是R语言里面的sp包(空间分析工具包)和mclust包(聚类包),所以,如果你是第一次运行这个工具的话,脚本会自动去网上将这个两个包下载并且安装到你的R环境中去。下载安装的速度,视网络情况而定。
安装完成之后,R语言就会执行聚类和空间分析操作,最后得到的结果如下:
控制台输出:
其中那个乱码,是中文提示,下载的两个包是R的3.2.1制作的,我的版本比这个版本老一点,不用管。
后面是一系列分析结论。
分析完成之后,因为是空间分析,所以结果会自动的添加到ArcMap的显示窗中,如下:
至此,安装完成,分析完成,至于分析的结论如何阶段,可以参考你的sample中的文档。
关于如何在开发自己的R脚本在ArcGIS中使用,以后有机会我们再说。