同步异步说明:

gp服务分为同步和异步两种模式,两者的区别是:
同步:适合于快速的处理,数据量较小,本质区别在于同步模式,服务器处理之后,处理结果并不在服务器端保存,而是将结果发送至客户端,由客户端去显示。如果客户端也没有          保存结果,那么处理结果就丢失了。
异步:适合长时间的处理,数据量较大,本质区别在于异步模式,服务器处理之后,处理结果保存在服务器端,可以在arcgisjobs文件中找到。
所以Web客户端调用gp服务,要依据是哪种模式。以flex api为例,如果是同步模式,那么只能使用gp.execute(para);,得到的结果只能是executeResult;如果是异步,则只能使用gp.submitJob(para);,得到的结果只能使用gp.getResultData(evt.jobInfo.jobId,"Buffer_shp")去服务器端取结果,因为异步模式服务器端是保留了你的处理结果的。

同步调用方法

标签:

<esri:Geoprocessor id="gp" executeComplete="gp_executeCompleteHandler(event)"
fault="gp_faultHandler(event)"
outSpatialReference="{map.spatialReference}"
processSpatialReference="{map.spatialReference}"
useAMF="false"/>

调用:

               var geoArr:Array=[];
for each(var geo:Geometry in geoCollArray)
{
geoArr.push({geometry:geo});
} var fs:FeatureSet=new FeatureSet();
fs.features=geoArr;
var params:Object={"INPUT_FEATURESET":fs,"GHLAYER_PATH":"'"+dataList.selectedItem.path+"'"};
gp.url=configXML.gpurl.toString();
gp.execute(params);

结果

protected function gp_faultHandler(event:FaultEvent):void
{
Alert.show("空间分析异常,请联系管理员", "图形分析");
}
protected function gp_executeCompleteHandler(event:GeoprocessorEvent):void
{
var fs:FeatureSet=event.executeResult.results[0].value as FeatureSet;
controlEnabled=true;
showMessage("", false, false); ViewerContainer.getInstance().resultContainer.Container.removeAllElements();
resultComp=new GeometryAnalysisResultComp();
var areas:Array=GeometryUtil.geodesicAreas(geoCollArray,Units.SQUARE_METERS);
var area:Number=Number(areas[0]);
resultComp.initData={fs:fs,fields:fs.fields,groupfield:dataList.selectedItem.showField.toString(),geo:geoCollArray[0],zarea:area,url:configXML.saveAnalysis};
ViewerContainer.getInstance().resultContainer.Container.addElement(resultComp);
ViewerContainer.getInstance().resultContainer.showBottomNavi();
}

异步调用方法:

标签

<esri:Geoprocessor id="gp"
fault="gp_faultHandler(event)"
getResultDataComplete="gp_getResultDataCompleteHandler(event)"
jobComplete="gp_jobCompleteHandler(event)"
outSpatialReference="{myMap.spatialReference}"
proxyURL="https://developers.arcgis.com/sproxy/"
url="https://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas"/>

调用

  var featureSet:FeatureSet = new FeatureSet();
featureSet.features = [ graphic ];
var params:Object =
{
"Facilities": featureSet,
"Break_Values": "2",
"Break_Units": "Minutes"
};
gp.submitJob(params);

结果

 protected function gp_faultHandler(event:FaultEvent):void
{
Alert.show("This service request an ArcGIS Organizational subscription\nYou can also try the example on the ArcGIS API for Flex Resource Center"
+ event.fault.faultString, "Drive Time");
progressMessage.clearMessage();
} protected function gp_jobCompleteHandler(event:GeoprocessorEvent):void
{
if (event.jobInfo.jobStatus == JobInfo.STATUS_SUCCEEDED)
{
var jobID:String = event.jobInfo.jobId;
progressMessage.setMessage("Retrieving drive time");
gp.getResultData(gp.submitJobLastResult.jobId, "Service_Areas");
}
else
{
Alert.show(event.jobInfo.jobStatus, "Analysis Status");
}
} protected function gp_getResultDataCompleteHandler(event:GeoprocessorEvent):void
{
/* The parameterValue property is set when the type is getResultDataComplete,
* getInputComplete or getResultImageComplete.
*/
if (event.parameterValue)
{
progressMessage.showMessage("Calculating population within drive time", true);
var serviceAreas:FeatureSet = event.parameterValue.value as FeatureSet;
var feature:Graphic = serviceAreas.features[0];
var symbol:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, 0xCA0013, 0.1);
symbol.outline = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, 0xB3B3B3, 1.0, 2);
feature.symbol = symbol;
myMap.defaultGraphicsLayer.add(feature);
query.geometry = feature.geometry;
queryTask.execute(query);
//Note: the zoomTo method was added at version 3.1
myMap.zoomTo(feature.geometry.extent);
}
else
{
Alert.show("Service did not return any results", "Drive Time");
gpPending = false;
}
}

转换:

fs->json字符串

saveWindow.fs=JSONUtil.encode(FeatureSet(initData.fs).toJSON())

json字符串- >fs

var fs:FeatureSet=FeatureSet.fromJSON(JSONUtil.decode(jsonObjTem[0].content));

flex 调用gp服务的更多相关文章

  1. ArcGIS API for Silverlight 调用GP服务绘制等值面

    原文:ArcGIS API for Silverlight 调用GP服务绘制等值面 GP服务模型如下图: 示例效果图片如下:

  2. ArcGIS API for Silverlight 调用GP服务加载等值线图层

    原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现G ...

  3. ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试

    原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分 ...

  4. ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用)

    一.背景说明 通过调用GP服务,Android客户端也能实现专业的.复杂的GIS分析处理功能,从而增加应用的实用价值. ArcGIS Server发布的GP服务,分为同步和异步两种类型,一般执行步骤较 ...

  5. ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务

    感谢一路走来默默支持和陪伴的你~~~ -------------------欢迎来访,拒绝转载-------------------- 一.Rest API基础 ArcGIS 平台提供了丰富的REST ...

  6. ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解

    感谢一路走来默默陪伴和支持的你~~~ ----------------欢迎来访,拒绝转载---------------- 关于GP模型的制作请点我! 一.GP发布 ArcGIS Desktop可以作为 ...

  7. ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  8. (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  9. ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能

    原文:ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能 昨天一QQ好友问了一个关于裁剪的问题,感觉自己也没有帮上什么忙,之后自己做了一个裁剪的例子,不过在做这个例子的 ...

随机推荐

  1. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  2. SQL把表中的数据复制到另一个数据库中

    1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...

  3. RouterOS 软路由配置固定IP上网+DHCP

    实现要求: 局域网所有PC机自动获取IP地址,能相互访问并且能访问外网 环境要求: 一台PC机安装两张网卡 ( 使用常用的网卡芯片,例如Intel芯片.RTL瑞昱芯片等 ) 配置说明 1.外网IP地址 ...

  4. SLAM学习笔记(2)SLAM算法

    SLAM算法分为三类:Kalman滤波.概率滤波.图优化 Kalman滤波方法包括EKF.EIF:概率滤波包括RBPF,FastSLAM是RBPF滤波器最为成功的实例, 也是应用最为广泛的SLAM方法 ...

  5. 从 Vue 1.x 迁移

    FAQ 哇,非常长的一页!是否意味着 Vue2.0 已经完全不同了呢,是否需要从头学起呢,Vue1.0 的项目是不是没法迁移了? 非常开心地告诉你,并不是! 几乎90%的 API 和核心概念都没有变. ...

  6. bootstrap学习之一_bootstrap css

    一.文本相关样式 文本格式(用于块状标签):text-left:向左对齐文本:text-center:居中对齐文本:text-right:向右对齐文本:text-justified;text-nowr ...

  7. ios理解 -- Pro Mutlithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks

    Capturing automatic variables Next, you need to learn what the “together with automatic (local) vari ...

  8. PAT 解题报告 1047. Student List for Course (25)

    1047. Student List for Course (25) Zhejiang University has 40000 students and provides 2500 courses. ...

  9. M面经prepare: Shuffle a deck

    设计一个shuffle card 用了java. Random Class package Random; import java.util.*; public class Solution { st ...

  10. 如何在PHP里面连接数据库

    第一步   创造一个连接 $a = mysql_connect("localhost","root",""); 括号里面参数的意思: 1.l ...