GP(Geoprocessing)服务的发布与调用(转载)

摘要:
在桌面软件中可以通过ArcToolbox中的工具直接调用Geoprocessing的功能,而如果期望通过web来调用GP的功能,就必须借助于GP服务了。

原文地址:http://www.cnblogs.com/gisangela/archive/2011/01/06/1927702.html

1、什么是GP服务

GP服务是Geoprocessing服务的简称,Geoprocessing包含了一系列地理数据处理的功能,像做缓冲区分析、叠加分析、以及对栅格数据制作阴影图等等。在桌面软件中可以通过ArcToolbox中的工具直接调用Geoprocessing的功能,而如果期望通过web来调用GP的功能,就必须借助于GP服务了。Esri的帮助文档中介绍了发布GP服务的两种方式:

lPublishageoprocessingtoolbox.Eachtoolinthetoolboxbecomesataskinthegeoprocessingservice.

lPublishanArcMapdocumentcontaininggeoprocessingtoollayers.Eachtoollayerbecomesataskinthegeoprocessingservice.

也就是说我们既可以将某个工具单独发布为一个服务,也可以将该工具作为一个工具图层(toollayer)和地图文档一起发布,这样会同时得到同名的一个地图服务和一个GP服务。这里地图服务中的图层可以当做GP任务的数据源,也可以利用工具图层得到的结果来控制最后输出图层的符号。

2、如何发布GP服务——buffer为例

2.1案例介绍

这里我们使用ArcTutor\Using_ArcGIS_Desktop\MexicoPopulationDensity.mxd【已经安装ArcTutor练习数据】作为地图服务,并且调用GP中的Buffer工具来进行缓冲区的创建。这里我们采用地图文档和工具一起发布的方式,GP服务的输入为通过和地图交互得到的点(即featureset),而直接使用buffer工具的话输入参数只能是要素类或图层,所以需要通过ModelBuilder制作模型来让GP服务正确读取输入参数。

2.2准备模型

在ArcTutor\GPServiceExamples\BufferPoints目录下,会看到已经制作好的示例模型。在这里截图展示:

GP(Geoprocessing)服务的发布与调用(转载)第1张

具体的操作步骤为:

(1)在该文件夹中创建自定义工具箱,右键——new——toolbox,命名为BufferService;

(2)在该工具箱中新建模型,右键——new——Model;

(3)在打开的ModelBuilder界面中,将Analysis工具箱中Buffer工具拖放进去,现在工具还没有输入参数,而根据要求输入是用户跟地图交互时产生的。这就需要我们进行下面的设置;

(4)在Buffer工具上右键菜单中设置变量——从参数——输入要素;

GP(Geoprocessing)服务的发布与调用(转载)第2张

GP(Geoprocessing)服务的发布与调用(转载)第3张

(5)现在一个完整的模型流程已经创建好了,但是还处于不可执行状态。因为我们还未指定输入数据源,这里就需要借助一个空的要素类来作为featureset的模板。这里我们新建一个geodatabase,在其中新建一个point类型的要素类;

(6)在InputFeatures右键属性的DataType选项卡中,指定“selectdatatype”的类型为FeatureSet,“Importschemaandsymbology”为上面一步中创建的要素类;

GP(Geoprocessing)服务的发布与调用(转载)第4张

(7)现在模型就会变成彩色的,即可执行状态。为了以后便于修改缓冲区距离这个参数,我们也用第四步中的办法把距离参数提取出来,作为模型的参数。OK,到这一步我们的模型就制作完毕了,下一步我们在ArcMap中测试一下模型;

(8)将MexicoPopulationDensity.mxd打开,把制作好的模型添加进去,模型自动会被识别为工具图层。打开工具,按照提示通过与地图交互的方式获得输入的若干个点,点击OK执行,能够顺利得到点的缓冲区那么测试就通过了。现在取消刚生成结果图层的可见性,保存地图文档,下面一步要做的就是发布服务。

2.3发布服务

打开ArcCatalog,在该地图文档上弹右键菜单,选择PublishtoArcGISServer,指定名称后点击下一步,如图所示这里除了Mappingservice之外还会出现GeoprocessingService。

GP(Geoprocessing)服务的发布与调用(转载)第5张

3、如何调用GP服务——FlexAPI

GP服务的执行有两种方式,同步(synchronous)和异步(asynchronous),同步的调用方法为execute,异步的调用方法为submitJob,区别详见帮助。下面一段就是使用FlexAPI调用GP服务的代码,这里GP服务的名称为BufferPoint,测试环境为FlexBuilder3+ArcGISServer9.3。

GP(Geoprocessing)服务的发布与调用(转载)第6张GP(Geoprocessing)服务的发布与调用(转载)第7张View Code
1 代码
2 
3 <?xml version="1.0" encoding="utf-8"?>
4 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:esri="http://www.esri.com/2008/ags">
5 <esri:Map id="map" mapClick="mapClick(event)"> 
6 <esri:ArcGISDynamicMapServiceLayer url="http://localhost/arcgis/rest/services/BufferPoint/MapServer"/> 
7 <esri:GraphicsLayer id="graphicsLayer"/>
8 </esri:Map>
9 <esri:Geoprocessor id="gp" url="http://localhost/arcgis/rest/services/BufferPoint/GPServer/Buffer%20Points"
10 executeComplete="gpExecuteCompleteHandler(event)"
11 fault="Alert.show(event.fault.message)"/>
12 
13 <mx:Script>
14 <![CDATA[
15 importcom.esri.ags.Graphic;
16 importcom.esri.ags.tasks.BufferParameters;
17 importcom.esri.ags.events.MapEvent;
18 importcom.esri.ags.geometry.MapPoint;
19 importcom.esri.ags.events.MapMouseEvent;
20 importcom.esri.ags.tasks.ParameterValue;
21 importcom.esri.ags.tasks.FeatureSet; 
22 importcom.esri.ags.events.GeoprocessorEvent;
23 importmx.controls.Alert;
24 
25 private function gpExecuteCompleteHandler(event:GeoprocessorEvent):void
26 { 
27 //绘制buffer graphicsLayer.graphicProvider=gp.executeLastResult.parameterValues[0].value.features; 
28 }
29 
30 private function mapClick(event:MapMouseEvent):void
31 { 
32 graphicsLayer.clear();
33 var graphic:Graphic=newGraphic(event.mapPoint); 
34 graphicsLayer.add(graphic);
35 gp.execute({"Input_Points": new FeatureSet([graphic]),"Distance":{"distance":100,"units":"esriKilometers"}}); }
36 ]]>
37 </mx:Script>
38 </mx:Application>

免责声明:文章转载自《GP(Geoprocessing)服务的发布与调用(转载)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇设置多行文本隐藏显示省略号时样式丢失了C++中find_if下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓手机无法使用adb导出文件

adb pull 无法使用 问题:在使用adb pull 文件到本地时无法导出 提升adb root 权限 - 失败,只有进入adb shell 然后su 提升,还是无法导出 解决方法 给需要导出的文件夹:读写执行的权限也是777,所有的勾上 注意使用命令行形式提升权限可能无法生效,也就是无法导出 软件为Android Killer 自带的An...

Acrobat 软件注册过程记录

Adobe Acrobat XI安装过程详解 Adobe Acrobat是编辑pdf文档的不二选择,同时它的虚拟打印机功能平常使用也相当频繁,所以在日常工作中我经常使用Acrobat而不是Adobe Reader,下面是我亲自验证过的Acrobat安装过程,具体过程如下: 注:Adobe Acrobat之前版本为10.0版本,只支持英文版本,现在更新为11...

centos安装软件方式及命令

centos安装软件有三种方式 rpm指令, 该指令安装文件后缀.rpm的可执行程序 yum指令 安装软件源代码,后缀为 .tar.gz(用gzip压缩过的tar包) rpm rpm软件包格式为 (一)查询系统装已经安装的软件信息 1) 查询系统中已经安装的软件; rpm –qa 2)查询一个已经安装的文件属于那个软件包; rpm –qf 文件名的...

iOS: Crash文件解析(一)

iOS Crash文件的解析(一)   开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断。联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问题,就换一台,如果10台后挂了他就不做手机了。好了不闲扯了,今天就跟大...

【UE】常用的UltraEdit使用技巧

Tip 1: Alt+C 列模式可以说最初选择使用这个文本编辑软件,原因很简单,就是因为“她”具有列编辑模式。如果您还不知道什么是列编辑模式的话,我想您应该好好研究一下啦。这是一个超级“赞”的功能。在对大文本进行批量的列编辑时候非她莫属(如果您是Windows平台上另外一个强大的文本编辑软件gVim的使用者除外)。快实验一下这个功能吧。Tip 2:Ctrl...

通过Foxit和坚果云实现iPad和PC的pdf同步阅读(修改,笔记)

这是解决我之后上班地铁上看书问题的一个关键部分 一个手持电子设备,不大不小 一个方便做笔记的笔 一个方便做笔记的阅读器软件 方便快速地同步(只同步标记最好了) 在查看很多建议以及自己尝试之后,总结了这么几点: 不管使用什么文件管理软件,同步的方式是一样的,常用有这么几种 网盘同步:国际网盘支持好,但同步速度简直感人 。而国内网盘基本不支持。 OneD...