ArcGIS Python API 功能一瞥

继上一篇部署 ArcGIS Python API 之后,再来试试 Python API 的渲染和分析的功能。 通过这两个功能来摸索下 ArcGIS Python API 的使用方法。

渲染

1 导入gis模块,创建GIS对象

在 ArcGIS Python API 中 gis 是个核心模块,提供了对组织内成员、群组、内容的创建、读取、更新和删除等功能,你的组织既可以是托管在ArcGIS Online中,也可以是自己部署的门户(Portal for ArcGIS),或者更准确的说,在10.5版本应该称为 ArcGIS Enterprise.

GIS对象是gis模块最重要的对象,我们可以理解为,GIS对象是通过ArcGIS Python API编写脚本的入口。

下面以我的 ArcGIS Enterprise 测试环境为例:

1
2
3
4
5
6
7
from arcgis.gis import GIS

# Demo
# class arcgis.gis.GIS(url=None, username=None, password=None, key_file=None, cert_file=None, verify_cert=True, set_active=True)

# #Portal URL #UserName #Passward
gis = GIS("https://kikita.mycloud.com/arcgis","portaladmin","mypasswd", verify_cert=False)

2 获取感兴趣的内容

通过 gis.content.search() 方法可以在组织中查找所需内容。例如我查找命名包含 “China_Railways” 的要素服务。

1
2
3
### Search My Portal
search_result = gis.content.search('title: China_Railways', item_type='Feature Layer')
search_result

结果:

1
2
[<Item title:"China_Railways" type:Feature Service owner:portaladmin>,
<Item title:"China_Railways___county_pt_Density" type:Feature Service owner:portaladmin>]

3 使用地图微件

GIS对象中包含一个地图微件,可以用来渲染(可视化)组织中的内容,比如要素服务。我们还可以通过关键字来确定地图的显示位置,和指定地图的幅面尺寸等。

1
2
3
4
### Create a map widget
mymap = gis.map('China')
mymap.height = '500px'
mymap

4 添加图层并渲染

例如使用热度图/Heatmap 渲染器

1
2
3
### Add layer using heatmap renderer
featureitem = search_result[0]
mymap.add_layer(featureitem.layers[0], {"renderer":"HeatmapRenderer", "opacity":0.7})

分析

假设需求是实现采样点插值,数据来源是桌面产品自带的ArcGIS Tutorial中的数据(Geostatistical Analyst\ca_ozone.gdb\O3_Sep06_3pm)。

除了通过搜索的方法,如果知道 itemid ,也能直接获得到内容,可以使用方法 gis.content.get()

1
2
3
4
from arcgis import gis
gis = gis.GIS("https://kikita.mycloud.com/arcgis","portaladmin","Super123", verify_cert=False)
search_result = gis.content.get('15b012af7f15484293517c844d2d65ab')
search_result

还是使用地图微件,用来显示下数据和分析结果。

1
2
3
mymap = gis.map('California')
mymap.height = '500px'
mymap
1
2
O3layer = search_result.layers[0]
mymap.add_layer(O3layer)

Portal 中提供了一系列的“工具”,可以辅助我们实现分析的需求,包括 标准的分析工具、矢量大数据分析GeoAnalytics Tools、栅格数据分析等,一系列分析功能都可以通过 ArcGIS Python API 调用。 这里就以 interpolate points 为例。

1
2
3
from arcgis.features.analyze_patterns import interpolate_points
Interpolate = interpolate_points(O3layer, field='ozone', output_name='O3layerInterpolated2')
mymap.add_layer(Interpolate)