加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

??????ArcGIS Server Flex API 调用GP服务

发布时间:2020-12-15 04:23:27 所属栏目:百科 来源:网络整理
导读:ArcGIS Server Flex API 调用 GP 服务的一般步骤 1 、说明 ArcGIS Geoprocessing 提供了大量地理处理和分析工具,可根据需要对这些工具进行组合构造自己的 GIS 分析模型,然后发布成 GP 服务,以方便各种 Web 客户端调用。 Flex API 中提供了访问 GP 服务的
ArcGIS Server Flex API 调用 GP 服务的一般步骤
1、说明
ArcGIS Geoprocessing提供了大量地理处理和分析工具,可根据需要对这些工具进行组合构造自己的GIS分析模型,然后发布成GP服务,以方便各种Web客户端调用。Flex API中提供了访问GP服务的接口,通过该接口和GP工具,可实现具有高级GIS分析功能的Web应用。
2、模型创建与测试
? ??创建模型可在modelbuilder可视化环境下进行,也可使用Python脚本定义。模型创建完成需要在ArcMap环境下测试是否正常运行。
? ??详细建模过程请参考ArcGIS的帮助文档。
3GP服务发布
? ??发布GP服务可使用两种资源类型:GP工具;包含结果图层的MXD文档。其中包含结果图层的MXD文档发布成GP服务时又有两种选择:一种只发布为GP服务;另一种发布成MapServiceGP服务。第二种方式可预先在MXD文档中对结果图层渲染,这样可简化客户端的可视化工作。实际项目中选择使用哪一种方式,需要根据具体业务需要确定,不能一概而论。
4GP服务测试
1)在ArcMap中加载MapService
注意为方便测试,该MapService不能使用发布GP服务时一同发布出来的MapService
2)在ArcToolbox中添加GP服务
将发布的GP服务添加到ArcToolbox中,点击运行,生成的结果会自动添加到当前的地图中。
5ArcGIS Server Flex API调用GP服务示例
上面几小节简单的介绍了GP工具的制作和GP服务的发布,本小节正式进入正题,讲讲如何使用ArcGIS Server Flex API调用GP服务。
GP服务分同步和异步两种执行模式,Flex API也提供了两种处理方式与之对应。Flex API调用GP服务使用的是Geoprocessor类。该类提供了execute(params)submitJob(params)两个方法调用后台的GP服务进行数据处理,其中execute(params)对应的是同步执行模式,执行完成触发executeComplete事件。submitJob(params)对应的是异步执行模式,执行完成触发jobComplete事件。对GP服务结果的处理我们可以定义在这些complete事件中。如果GP服务处理过程比较简单而且耗费时间少,我们可以选择同步执行模式,但如果比较耗时,为避免客户端长时间等待,常使用异步执行模式。
为保证Flex API正常调用GP服务,在GP模型定义和GP服务发布过程需要,还需要注意以下几项:
1)在配置MXD文档时,设置临时工作空间
MXD中添加完GP工具后,如果未设置临时工作空间,则运行GP工具生成的结果将默认保存在C盘下,该路径会导致GP服务无法读取结果图层,可通过设置临时工作空间解决。设置方法:在ArcToolbox上右键选择Environment,设置scratchworkspace的路径即可。
2GP工具输出路径的处理
? ?? ?? ?为方便访问输出图层,一般情况下使用环境变量来指定输出路径,即使用scratchworkspace变量,该变量指向ArcGIS Serverarcgisjobs目录。例如:%scratchworkspace%idwraster
3)输出图层中文字符处理
如果GP工具中输出的图层名包含中文,需要更改为英文名称,否则添加到地图上的结果图层无法正常显示。
本示例以生成等值面为例,数据使用ArcGIS自带的World地图,软件环境使用ArcGIS Server9.3.1ArcGIS for Flex API 1.3版本。示例代码如下:
1)发布服务
将包含GP工具的MXD文档发布成同名的地图服务和GP服务。
2Flex调用GP服务

[plain] view plain copy print ?
  1. <mx:Script>??
  2. ???????<![CDATA[??
  3. ???????????import?mx.controls.Alert;??
  4. ???????????import?com.esri.ags.events.*;??
  5. ???????????import?com.esri.ags.tasks.*;??
  6. ???????????import?com.esri.ags.layers.*;??
  7. ??
  8. ???????????private?function?gpJobCompleteHandler(event:GeoprocessorEvent):void??
  9. ??
  10. ???????????{???????????????
  11. ??????????????var?imageParameters?:?ImageParameters?=?new?ImageParameters();??
  12. ??????????????var?myImageLayer2?:GPResultImageLayer?=?gp.getResultImageLayer(event.jobInfo.jobId,"dzhm",imageParameters);??
  13. ??????????????//dzhm参数为GP工具中定义的输出文件名??
  14. ??????????????baseLayer.visible?=?false;??
  15. ??????????????map1.addLayer(myImageLayer2,0);??????????
  16. ??????????????Alert.show("job:"+event.jobInfo.jobId);??
  17. ???????????}??
  18. ???????]]>??
  19. ??
  20. </mx:Script>??
  21. ??
  22. <esri:Geoprocessor?id="gp"?url="http://xinli:8399/arcgis/rest/services/test/world_gdb/GPServer/IDW"??
  23. ??
  24. ?????????????????????jobComplete="gpJobCompleteHandler(event)">??
  25. ???????<esri:fault>??
  26. ???????????<![CDATA[??
  27. ???????????Alert.show(event.fault.message);??
  28. ???????????]]>??
  29. ???????</esri:fault>??
  30. </esri:Geoprocessor>??
  31. <mx:Button?x="10"?y="10"?label="执行">??
  32. ???????<mx:click>??
  33. ???????????<![CDATA[??
  34. ??????????????var?params:Object?=?{};??
  35. ??????????????gp.submitJob(params);??
  36. ???????????]]>??
  37. ???????</mx:click>??
  38. </mx:Button>??
  39. <esri:Map?id="map1"?width="100%"?height="100%">??
  40. ????????<esri:ArcGISDynamicMapServiceLayer?id="baseLayer"?url="http://xinli:8399/arcgis/rest/services/test/world_gdb/MapServer"/>??
  41. </esri:Map>??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读