转自:http://www.cnblogs.com/gisangela/archive/2011/01/06/1927702.htmlhtml
一、什么是GP服务 web
GP服务是Geoprocessing服务的简称,Geoprocessing包含了一系列地理数据处理的功能,像作缓冲区分析、叠加分析、以及对栅格数据制做阴影图等等。在桌面软件中能够经过ArcToolbox中的工具直接调用Geoprocessing的功能,而若是指望经过web来调用GP的功能,就必须借助于GP服务了。Esri的帮助文档中介绍了发布GP服务的两种方式: app
l Publish a geoprocessing toolbox. Each tool in the toolbox becomes a task in the geoprocessing service. 异步
l Publish an ArcMap document containing geoprocessing tool layers. Each tool layer becomes a task in the geoprocessing service.async
也就是说咱们既能够将某个工具单独发布为一个服务,也能够将该工具做为一个工具图层(tool layer)和地图文档一块儿发布,这样会同时获得同名的一个地图服务和一个GP服务。这里地图服务中的图层能够当作GP任务的数据源,也能够利用工具图层获得的结果来控制最后输出图层的符号。工具
二、如何发布GP服务——buffer为例测试
2.1 案例介绍ui
这里咱们使用ArcTutor\Using_ArcGIS_Desktop\MexicoPopulationDensity.mxd【已经安装ArcTutor练习数据】做为地图服务,而且调用GP中的Buffer工具来进行缓冲区的建立。这里咱们采用地图文档和工具一块儿发布的方式,GP服务的输入为经过和地图交互获得的点(即feature set),而直接使用buffer工具的话输入参数只能是要素类或图层,因此须要经过ModelBuilder制做模型来让GP服务正确读取输入参数。spa
2.2 准备模型htm
在ArcTutor\GP Service Examples\BufferPoints目录下,会看到已经制做好的示例模型。在这里截图展现:
具体的操做步骤为:
(1)在该文件夹中建立自定义工具箱,右键——new——toolbox,命名为BufferService;
(2)在该工具箱中新建模型,右键——new——Model;
(3)在打开的ModelBuilder界面中,将Analysis工具箱中Buffer工具拖放进去,如今工具尚未输入参数,而根据要求输入是用户跟地图交互时产生的。这就须要咱们进行下面的设置;
(4)在Buffer工具上右键菜单中设置变量——从参数——输入要素;
(5)如今一个完整的模型流程已经建立好了,可是还处于不可执行状态。由于咱们还未指定输入数据源,这里就须要借助一个空的要素类来做为feature set的模板。这里咱们新建一个geodatabase,在其中新建一个point类型的要素类;
(6)在Input Features右键属性的Data Type选项卡中,指定“select data type”的类型为Feature Set,“Import schema and symbology”为上面一步中建立的要素类;
(7)如今模型就会变成彩色的,便可执行状态。为了之后便于修改缓冲区距离这个参数,咱们也用第四步中的办法把距离参数提取出来,做为模型的参数。OK,到这一步咱们的模型就制做完毕了,下一步咱们在ArcMap中测试一下模型;
(8)将MexicoPopulationDensity.mxd打开,把制做好的模型添加进去,模型自动会被识别为工具图层。打开工具,按照提示经过与地图交互的方式得到输入的若干个点,点击OK执行,可以顺利获得点的缓冲区那么测试就经过了。如今取消刚生成结果图层的可见性,保存地图文档,下面一步要作的就是发布服务。
2.3 发布服务
打开ArcCatalog,在该地图文档上弹右键菜单,选择Publish toArcGIS Server,指定名称后点击下一步,如图所示这里除了Mapping service以外还会出现Geoprocessing Service。
三、如何调用GP服务——Flex API
GP服务的执行有两种方式,同步(synchronous)和异步(asynchronous),同步的调用方法为execute,异步的调用方法为submitJob,区别详见帮助。下面一段就是使用Flex API调用GP服务的代码,这里GP服务的名称为BufferPoint,测试环境为Flex Builder 3+ArcGIS Server 9.3。