【ArcGIS for Server】制作并发布GP服务--缓冲分析为例
原理:
Geoprocessor是用py写的脚本,它简单语法,并可以调用大部分ArcGISToolBox里的现有工具,十分强大。Geoprocessing被称之为地理处理,实际上就是ToolBox里的各种tools用py连接起立,连续处理而不用反复操作单个工具,流程化了。ArcGIS还提供了一个可视化的构建Geoprocessor工具,叫ModelBuilder:如图
缓冲区分析只用到一个工具,在工具箱的Analysis Tools->Proximity->Buffer。下面就是制作一个GP包。
1.准备数据:一个点shp图层。
因为是一个缓冲分析,下一章我们要用SilverLight调用该服务做页面的内的缓冲分析,做一个点的缓冲分析,最后输出一个shp。新建一个工作空间,供GP使用,默认的workspace是windowsuser的目录,程序不能随时创建。然后再里面创建一个shapefile,指定其坐标系为web Mercator。
将该图层添加到ArcMap中,编辑,添加几个测试点,保存。
2.准备GP工具的容器,新建,注意是下面那个,不是上面那个python Toolbox:
将来在ModelBuilder里创建的脚本文档只能存放在这里面。
3.创建GP脚本,打开ModelBuilder如下操作:
然后右击ModelBuider的工作区域空白,设定其Model Properties中的Scratchworkspace:
设定该参数是让tools可以引用该参数,方式类似于window的系统变量:%scratchworkspace%;
添加featureclass,也就是创建的点图层,然后用连接线将其指向buffer工具,然后选择提示的inputFeatures选项,这是将该FeatureClass作为Buffer的输入数据的引用:
双击Buffer工具,设定参数变量,缓冲20米,其他默认和输入路径:
注意那个引用方式。
然后整个工具的颜色就变成可运行的状态了,如果某一个工具颜色还是白色,说明其参数没配置好,检查就可以:
4.运行测试GP:先点击验证√,然后点击运行:
最后在文件夹上刷新就看到结果,托放到ArcMap中,看看结果:
最后,最重要的是指定参数化,也就是将输入和输入都参数化,将来运行的时候可以默认我们设定的值,也可以指定参数,实用性更强大,部署到ArcGIS Server中有实用价值:
右击point和buffferdpoint如下:
保存该GP,选择之前创建的tbx文件:
5.最后整个GP工具工作文件夹如下:
6.运行该脚本,为什么要如此?
因为只有通过单独运行的并且成功的GP才能被发布到Server中,之前在ModelBuilder中处于调试环境,单独运行是在Python+arcpy环境下,需要设定全局变量以适应我们的脚本中scrathworkspace:
右击BufferModel,选择run,结果在是在Geoprocessing->result中,右侧就是运行成功之后,Current Seesion有一条记录:
7:发布GP服务:
右击上图中restults,BufferModels,有一个选项,:
出现服务发布配置的界面,点击Analysis,如果出现问题,会在下面有提示,双击该提示,一般是参数注释之类的,填上即可:
如:
依次类推,所有的参数都要有说明文档,直到Analysis没有X号就可以点发布了。
8.在ArcGIS Server web管理页面中验证该服务:
打开Server的服务列表,找到刚发布的服务,点到功能,点击rest服务:
成功。你的成功了没?
总结:
GP实际上是一种py脚本,可以运行在ArcMap中,可以运行在Server中,运行在Server中就作为一种服务功能,称之为Geoprocessor,很形象,地理处理器。简化了以前使用.net开发一个服务器扩展的麻烦(SEO),相当的简单,对于GIS开发者普遍开发水平不高的情况下,有很强的使用价值。缺点就是,性能慢。
Continued:下一节,我们讲使用SilverLight调用该服务,在前端绘制一个点的缓冲分析,很有意思哦,期待吧。