|
阅读:2425回复:1
ArcGIS Server Flex API调用GP服务的一般步骤
<font style="FONT-SIZE: 12pt"><font face="Calibri ">ArcGIS Server Flex API</font></font><font face="宋体 "><font style="FONT-SIZE: 12pt">调用</font></font><font style="FONT-SIZE: 12pt"><font face="Calibri ">GP</font></font><font face="宋体 "><font style="FONT-SIZE: 12pt">服务的一般步骤</font></font><font style="FONT-SIZE: 12pt"></font><br/><font size="3"><font face="Calibri ">1</font><font face="宋体 ">、说明</font></font><br/><font size="3"><font face="Calibri ">ArcGIS Geoprocessing</font><font face="宋体 ">提供了大量地理处理和分析工具,可根据需要对这些工具进行组合构造自己的</font><font face="Calibri ">GIS</font><font face="宋体 ">分析模型,然后发布成</font><font face="Calibri ">GP</font><font face="宋体 ">服务,以方便各种</font><font face="Calibri ">Web</font><font face="宋体 ">客户端调用。</font><font face="Calibri ">Flex API</font><font face="宋体 ">中提供了访问</font><font face="Calibri ">GP</font><font face="宋体 ">服务的接口,通过该接口和</font><font face="Calibri ">GP</font><font face="宋体 ">工具,可实现具有高级</font><font face="Calibri ">GIS</font><font face="宋体 ">分析功能的</font><font face="Calibri ">Web</font><font face="宋体 ">应用。</font></font><br/><font size="3"><font face="Calibri ">2</font><font face="宋体 ">、模型创建与测试</font></font><br/><font size="3"><font face="Calibri "></font><font face="宋体 ">创建模型可在</font><font face="Calibri ">modelbuilder</font><font face="宋体 ">可视化环境下进行,也可使用</font><font face="Calibri ">Python</font><font face="宋体 ">脚本定义。模型创建完成需要在</font><font face="Calibri ">ArcMap</font><font face="宋体 ">环境下测试是否正常运行。</font></font><br/><font size="3"><font face="Calibri "></font><font face="宋体 ">详细建模过程请参考</font><font face="Calibri ">ArcGIS</font><font face="宋体 ">的帮助文档。</font></font><br/><font size="3"><font face="Calibri ">3</font><font face="宋体 ">、</font><font face="Calibri ">GP</font><font face="宋体 ">服务发布</font></font><br/><font size="3"><font face="Calibri "></font><font face="宋体 ">发布</font><font face="Calibri ">GP</font><font face="宋体 ">服务可使用两种资源类型:</font><font face="Calibri ">GP</font><font face="宋体 ">工具;包含结果图层的</font><font face="Calibri ">MXD</font><font face="宋体 ">文档。其中包含结果图层的</font><font face="Calibri ">MXD</font><font face="宋体 ">文档发布成</font><font face="Calibri ">GP</font><font face="宋体 ">服务时又有两种选择:一种只发布为</font><font face="Calibri ">GP</font><font face="宋体 ">服务;另一种发布成</font><font face="Calibri ">MapService</font><font face="宋体 ">和</font><font face="Calibri ">GP</font><font face="宋体 ">服务。第二种方式可预先在</font><font face="Calibri ">MXD</font><font face="宋体 ">文档中对结果图层渲染,这样可简化客户端的可视化工作。实际项目中选择使用哪一种方式,需要根据具体业务需要确定,不能一概而论。</font></font><br/><font size="3"><font face="Calibri ">4</font><font face="宋体 ">、</font><font face="Calibri ">GP</font><font face="宋体 ">服务测试</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">1</font><font face="宋体 ">)在</font><font face="Calibri ">ArcMap</font><font face="宋体 ">中加载</font><font face="Calibri ">MapService</font></font><br/><font size="3"><font face="宋体 ">注意为方便测试,该</font><font face="Calibri ">MapService</font><font face="宋体 ">不能使用发布</font><font face="Calibri ">GP</font><font face="宋体 ">服务时一同发布出来的</font><font face="Calibri ">MapService</font><font face="宋体 ">。</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">2</font><font face="宋体 ">)在</font><font face="Calibri ">ArcToolbox</font><font face="宋体 ">中添加</font><font face="Calibri ">GP</font><font face="宋体 ">服务</font></font><br/><font size="3"><font face="宋体 ">将发布的</font><font face="Calibri ">GP</font><font face="宋体 ">服务添加到</font><font face="Calibri ">ArcToolbox</font><font face="宋体 ">中,点击运行,生成的结果会自动添加到当前的地图中。</font></font><br/><font size="3"><font face="Calibri ">5</font><font face="宋体 ">、</font><font face="Calibri ">ArcGIS Server Flex API</font><font face="宋体 ">调用</font><font face="Calibri ">GP</font><font face="宋体 ">服务示例</font></font><br/><font size="3"><font face="宋体 ">上面几小节简单的介绍了</font><font face="Calibri ">GP</font><font face="宋体 ">工具的制作和</font><font face="Calibri ">GP</font><font face="宋体 ">服务的发布,本小节正式进入正题,讲讲如何使用</font><font face="Calibri ">ArcGIS Server Flex API</font><font face="宋体 ">调用</font><font face="Calibri ">GP</font><font face="宋体 ">服务。</font></font><br/><font size="3"><font face="Calibri ">GP</font><font face="宋体 ">服务分同步和异步两种执行模式,</font><font face="Calibri ">Flex API</font><font face="宋体 ">也提供了两种处理方式与之对应。</font><font face="Calibri ">Flex API</font><font face="宋体 ">调用</font><font face="Calibri ">GP</font><font face="宋体 ">服务使用的是</font><font face="Calibri ">Geoprocessor</font><font face="宋体 ">类。该类提供了</font><font face="Calibri ">execute(params)</font><font face="宋体 ">和</font><font face="Calibri ">submitJob(params)</font><font face="宋体 ">两个方法调用后台的</font><font face="Calibri ">GP</font><font face="宋体 ">服务进行数据处理,其中</font><font face="Calibri ">execute(params)</font><font face="宋体 ">对应的是同步执行模式,执行完成触发</font><font face="Calibri ">executeComplete</font><font face="宋体 ">事件。</font><font face="Calibri ">submitJob(params)</font><font face="宋体 ">对应的是异步执行模式,执行完成触发</font><font face="Calibri ">jobComplete</font><font face="宋体 ">事件。对</font><font face="Calibri ">GP</font><font face="宋体 ">服务结果的处理我们可以定义在这些</font><font face="Calibri ">complete</font><font face="宋体 ">事件中。如果</font><font face="Calibri ">GP</font><font face="宋体 ">服务处理过程比较简单而且耗费时间少,我们可以选择同步执行模式,但如果比较耗时,为避免客户端长时间等待,常使用异步执行模式。</font></font><br/><font size="3"><font face="宋体 ">为保证</font><font face="Calibri ">Flex API</font><font face="宋体 ">正常调用</font><font face="Calibri ">GP</font><font face="宋体 ">服务,在</font><font face="Calibri ">GP</font><font face="宋体 ">模型定义和</font><font face="Calibri ">GP</font><font face="宋体 ">服务发布过程需要,还需要注意以下几项:</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">1</font><font face="宋体 ">)在配置</font><font face="Calibri ">MXD</font><font face="宋体 ">文档时,设置临时工作空间</font></font><br/><font size="3"><font face="宋体 ">在</font><font face="Calibri ">MXD</font><font face="宋体 ">中添加完</font><font face="Calibri ">GP</font><font face="宋体 ">工具后,如果未设置临时工作空间,则运行</font><font face="Calibri ">GP</font><font face="宋体 ">工具生成的结果将默认保存在</font><font face="Calibri ">C</font><font face="宋体 ">盘下,该路径会导致</font><font face="Calibri ">GP</font><font face="宋体 ">服务无法读取结果图层,可通过设置临时工作空间解决。设置方法:在</font><font face="Calibri ">ArcToolbox</font><font face="宋体 ">上右键选择</font><font face="Calibri ">Environment</font><font face="宋体 ">,设置</font><font face="Calibri ">scratchworkspace</font><font face="宋体 ">的路径即可。</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">2</font><font face="宋体 ">)</font><font face="Calibri ">GP</font><font face="宋体 ">工具输出路径的处理</font></font><br/><font size="3"><font face="Calibri "></font><font face="宋体 ">为方便访问输出图层,一般情况下使用环境变量来指定输出路径,即使用</font><font face="Calibri ">scratchworkspace</font><font face="宋体 ">变量,该变量指向</font><font face="Calibri ">ArcGIS Server</font><font face="宋体 ">的</font><font face="Calibri ">arcgisjobs</font><font face="宋体 ">目录。例如:</font><font face="Calibri ">%scratchworkspace%\idwraster</font><font face="宋体 ">。</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">3</font><font face="宋体 ">)输出图层中文字符处理</font></font><br/><font size="3"><font face="宋体 ">如果</font><font face="Calibri ">GP</font><font face="宋体 ">工具中输出的图层名包含中文,需要更改为英文名称,否则添加到地图上的结果图层无法正常显示。</font></font><br/><font size="3"><font face="宋体 ">本示例以生成等值面为例,数据使用</font><font face="Calibri ">ArcGIS</font><font face="宋体 ">自带的</font><font face="Calibri ">World</font><font face="宋体 ">地图,软件环境使用</font><font face="Calibri ">ArcGIS Server9.3.1</font><font face="宋体 ">,</font><font face="Calibri ">ArcGIS for Flex API 1.3</font><font face="宋体 ">版本。示例代码如下:</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">1</font><font face="宋体 ">)发布服务</font></font><br/><font size="3"><font face="宋体 ">将包含</font><font face="Calibri ">GP</font><font face="宋体 ">工具的</font><font face="Calibri ">MXD</font><font face="宋体 ">文档发布成同名的地图服务和</font><font face="Calibri ">GP</font><font face="宋体 ">服务。</font></font><br/><font size="3"><font face="宋体 ">(</font><font face="Calibri ">2</font><font face="宋体 ">)</font><font face="Calibri ">Flex</font><font face="宋体 ">调用</font><font face="Calibri ">GP</font><font face="宋体 ">服务</font></font><br/><font size="3"><font face="宋体 ">
<p align="left"></p></font></font> |
|
|
|
1楼#
发布于:2011-08-24 20:47
<p align="left"><font color="#006633"><font style="FONT-SIZE: 10pt"><mx:Script></font></font><font style="FONT-SIZE: 10pt"></font></p>
<p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"><![CDATA[</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">import</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> mx.controls.Alert;</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">import</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> com.esri.ags.events.*;</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">import</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> com.esri.ags.tasks.*;</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">import</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> com.esri.ags.layers.*;</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">private</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> </font></font><strong><font color="#339966"><font style="FONT-SIZE: 10pt">function</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> gpJobCompleteHandler(event:GeoprocessorEvent):</font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">void</font></font></strong><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">{</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#6699cc"><font style="FONT-SIZE: 10pt">var</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> imageParameters : ImageParameters = </font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">new</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> ImageParameters(); </font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#6699cc"><font style="FONT-SIZE: 10pt">var</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> myImageLayer2 :GPResultImageLayer = gp.getResultImageLayer(event.jobInfo.jobId,</font></font><strong><font color="#990000"><font style="FONT-SIZE: 10pt">"dzhm"</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt">,imageParameters);</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#339966"><font style="FONT-SIZE: 10pt">//dzhm</font></font></strong><strong><font color="#339966"><font face="宋体 "><font style="FONT-SIZE: 10pt">参数为</font></font></font></strong><strong><font color="#339966"><font style="FONT-SIZE: 10pt">GP</font></font></strong><strong><font color="#339966"><font face="宋体 "><font style="FONT-SIZE: 10pt">工具中定义的输出文件名</font></font></font></strong><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">baseLayer.visible = </font></font><strong><font color="#0033ff"><font style="FONT-SIZE: 10pt">false</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt">;</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">map1.addLayer(myImageLayer2,0); </font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">Alert.show(</font></font><strong><font color="#990000"><font style="FONT-SIZE: 10pt">"job:"</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt">+event.jobInfo.jobId);</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">}</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">]]></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="#006633"><font style="FONT-SIZE: 10pt"></mx:Script></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"><esri:Geoprocessor</font></font><font color="black"><font style="FONT-SIZE: 10pt"> id="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">gp</font></font><font color="black"><font style="FONT-SIZE: 10pt">" url="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">http://xinli:8399/arcgis/rest/services/test/world_gdb/GPServer/IDW</font></font><font color="black"><font style="FONT-SIZE: 10pt">"</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">jobComplete="gpJobCompleteHandler(event)"</font></font><font color="blue"><font style="FONT-SIZE: 10pt">></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font color="blue"><font style="FONT-SIZE: 10pt"><esri:fault></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"><![CDATA[</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">Alert.show(event.fault.message);</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">]]></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font color="blue"><font style="FONT-SIZE: 10pt"></esri:fault></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"></esri:Geoprocessor></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"><mx:Button</font></font><font color="black"><font style="FONT-SIZE: 10pt"> x="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">10</font></font><font color="black"><font style="FONT-SIZE: 10pt">" y="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">10</font></font><font color="black"><font style="FONT-SIZE: 10pt">" label="</font></font><font color="#990000"><font face="宋体 "><font style="FONT-SIZE: 10pt">执行</font></font></font><font color="black"><font style="FONT-SIZE: 10pt">"</font></font><font color="blue"><font style="FONT-SIZE: 10pt">></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font color="blue"><font style="FONT-SIZE: 10pt"><mx:click></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"><![CDATA[</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><strong><font color="#6699cc"><font style="FONT-SIZE: 10pt">var</font></font></strong><font color="black"><font style="FONT-SIZE: 10pt"> params:Object = {};</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">gp.submitJob(params);</font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt">]]></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font color="blue"><font style="FONT-SIZE: 10pt"></mx:click></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"></mx:Button></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"><esri:Map</font></font><font color="black"><font style="FONT-SIZE: 10pt"> id="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">map1</font></font><font color="black"><font style="FONT-SIZE: 10pt">" width="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">100%</font></font><font color="black"><font style="FONT-SIZE: 10pt">" height="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">100%</font></font><font color="black"><font style="FONT-SIZE: 10pt">"</font></font><font color="blue"><font style="FONT-SIZE: 10pt">></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="black"><font style="FONT-SIZE: 10pt"></font></font><font color="blue"><font style="FONT-SIZE: 10pt"><esri:ArcGISDynamicMapServiceLayer</font></font><font color="black"><font style="FONT-SIZE: 10pt"> id="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">baseLayer</font></font><font color="black"><font style="FONT-SIZE: 10pt">" url="</font></font><font color="#990000"><font style="FONT-SIZE: 10pt">http://xinli:8399/arcgis/rest/services/test/world_gdb/MapServer</font></font><font color="black"><font style="FONT-SIZE: 10pt">"</font></font><font color="blue"><font style="FONT-SIZE: 10pt">/></font></font><font style="FONT-SIZE: 10pt"></font></p> <p></p><br/> <p align="left"> <p align="left"><font color="blue"><font style="FONT-SIZE: 10pt"></esri:Map></font></font><font style="FONT-SIZE: 10pt"></font></p> |
|
|