原标题:ArcGIS的瑞士军刀——ArcGIS API for Python
Python以其高灵活性占据了大数据、机器学习、运维管理等多个领域的半壁江山,作为一个平台支持Python接口的调用已经成为一件理所应当的事情。而Esri也早在ArcGIS 10.1开始就已经支持使用基于Python语言的Arcpy 工具包调用桌面端的分析功能,而去年推出的全新的ArcGIS API for Python与Arcpy的不同之处在于通过封装ArcGIS Rest API实现对服务器端分析能力的调用以及提供自动化的运维WebGIS平台。本次大会的三个演示体现了全新的ArcGIS API for Python强大的自动运维能力、空间分析能力以及数据管理能力。
一、批量化自动化的管理WebGIS平台
作为运维人员来说,平台运维,通过手动的方式来进行的效率很低。一个自动化的运维工具必不可少,Python作为一个非常轻便易用而且功能强大的语言非常受运维人员喜爱,那么利用ArcGIS API for Python就可以非常容易的实现平台的自动化运维,可以对用户、群组、内容进行批量的操作。
演示1:批量创建群组
利用一份用于构建群组的csv数据,包含一些关键信息,比如群组的名称、标签、描述、缩略图路径等关键,可以对一个空白的Portal for ArcGIS批量创建群组。
利用Python循环的从csv中读取数据,并将其解析为对象,将只需要简单几行代码即可根据csv中的属性信息在Portal中创建多个群组。
二、调用分析能力
除了自动化管理WebGIS平台,ArcGIS API for Python的还可以服务于数据分析人员。基于ArcGIS Enterprise提供了丰富的分析功能,支持对矢量、栅格等各种类型的数据进行分析,同时还支持调用大数据分析能力进行分布式计算。
演示2:调用大数据分析能力对轨迹点数据进行聚合分析
我们基于一份北京市出租车的轨迹数据利用ArcGIS API for Python的实现完整的时空大数据的分析操作,整个步骤非常简单。
1、注册数据源
2、引用注册的数据
3、执行点聚合大数据分析服务
这里我们看到仅需要简单一行带代码即可调用大数据分析服务进行点聚合计算。
4、对结果进行展示和分析
在Jupyter提供的Web端Python运行环境中,我们可以很方便的展示运行的结果,并且还可以用智能制图的方式对结果进行颜色渲染。
三、结合第三方分析服务进行空间分析和数据更新
Python作为非常流行的一种脚本语言,有着丰富的第三方工具包,另外各种平台都会支持使用Python进行接口的调用。可以将ArcGIS的分析结果无缝的使用第三方工具包或平台接口进行进一步的分析操作。
演示3:利用ArcGIS Python API结合微软的认知服务自动更新花圃种植主题图
对于农业普查人员来说,植物种类的识别以及专题图的更新是一个十分繁琐的工作。
我们以花圃的植物种类调查为例,来展示如何利用微软的认知服务,结合ArcGIS API for Python自动构建花圃的专题图。
微软的认知服务是基于人工智能的开放接口。可以基于上传的训练图片的标签,自动建模,对测试数据进行自动识别,并以json字符串的形式返回结果。
首先,需要进行识别模型训练。
利用训练集样本数据,通过卷积神经网络,进行模型的训练。
实现对单个图片中的植物种类自动识别。
然后,将测试数据集,利用ArcGIS的桌面工具 GeoTagged photos to Points将照片位置标定在地图上并将照片作为点图层的附件,并发布成要素服务。
接着,利用ArcGIS API for Python,逐个的获取点图层中的要素的附件,调用微软人工智能服务,自动化的进行植物种类的判读,并将判读结果进行解析写入到点图层的属性表中。
最后利用ArcGIS对于空间的关系的计算,计算点要素与面要素的包含关系,将对应的点的属性信息写入到花圃种植区划的属性表中,一键式的生成花圃种植类型分布的专题图。
更新后的专题图属性表中包含区划面积和植物种类,可以无缝的使用Pandas和Matploatlib进行对植物种类的种植面积的统计,并绘制统计图表。
总的来说ArcGIS API for Python是一个面向服务器端的Python工具包,是WebGIS的重要组成部分,方便数据分析人员快速方便的使用服务器端的数据分析能力,提高运维人员平台的运维效率。
更多有关ArcGIS API for Python的例子和帮助信息请访问:https://developers.arcgis.com/python/