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