ArcGIS API for Javascript和GP服务调用

第一次使用ArcGIS API,也是第一次使用ArcGIS Server的GPServer的调用,遇到比较多的困难,现在记录下来。

Step1:通过ArcGIS Desktop建立自己的Model,至于如何设置Model、要将哪些内容设置为参数,如何设置得到自己想要的参数类型就需要自己探索,百度一下,也会有很全面的教程,此处不再赘述。

Step2:通过ArcGIS  API for Javascript调用GPServer,步骤如下:(摘录自:ArcGIS 帮助10.1:ArcGIS 帮助 10.1

           Step2.1:初始化地理处理任务。

gpTaskURL = http://localhost:6080/arcgis/rest/services/MDLInter/GPServer/interpolation;
gpTask = new esri.tasks.Geoprocessor(gpTaskURL);
//一定要设置Geoprocessor的输出空间参考
gpTask.outSpatialReference = map.spatialReference;

           Step2.2:设置任务参数。

//设置任务参数,对于每一个参数如何设置,可以参考 ArcGIS 帮助10.1:ArcGIS 帮助 10.1
var params = {"Z_value_field": inputFeatures, "testinter": "aqi"};

           Step2.3:运行任务。               

dojo.connect(gpTask, "onJobComplete", onTaskComplete);
dojo.connect(gpTask, "onError", onTaskFailure);  
dojo.connect(gpTask, "onStatusUpdate", onTaskStatus);
gpTask.submitJob(params);

function onTaskComplete(jobInfo) {
    dojo.connect(gpTask, "onGetResultDataComplete",onTaskResultComplete);
    gpTask.getResultData(jobInfo.jobId, "Mask");
}

function onTaskStatus(jobInfo) {
    console.log(jobInfo.jobStatus);
}

function onTaskFailure(error) {
    alert("Error:" + error);
}

function onTaskResultComplete(paramResult) {
    var featureSet = paramResult.value;
    var taskResultLayer = new esri.layers.GraphicsLayer ({id: "MyGPSubmitJobResultLayer"});
    dojo.forEach(featureset.features, function(feature) {taskResultLayer.add(feature);});    
    esri.map.map.addLayer(taskResultLayer);
}

           Step2.4:渲染结果。

Step3:遇到问题
           Q1:代理的问题。如我发的帖子: arcgis api的GP服务调用中出现问题,如图-CSDN论坛
           A1:百度了一下,应该是设置代理出现的问题。设置代理的所有问题可以自行参考官网( Using the proxy | Guide | ArcGIS API for JavaScript 3.40 | ArcGIS Developer)的解说,不过解说是英文版的,英语比较挫的我还真是有点头疼。
                 A1.1如何得到代理所需的proxy包,Download the appropriate proxy for your platform from  GitHubhttps://github.com/Esri/resource-proxy/releases). 
                 A1.2如何使用proxy包,在下载的包中,针对不同的语言有不同的包,读取这个包下面对应的ReadMe文件,很容易了解其使用方法,本人方法如下:
                            A1.2.1 将java对应的包拷贝至apache tomcat的目录下,一定记得重新启动tomcat,不然很可能没有办法访问。
                            A1.2.2 通过浏览器访问:  http://[yourmachine]/Java/proxy.jsp?http://services.arcgisonline.com/ArcGIS/rest/services/?f=pjson
                            A1.2.3 编辑proxy.config文件,设置自己的代理。
                                      <serverUrls>节点下添加一个子节点<serverUrl >,设置属性url:如果你的web程序用到大于两个服务(下面"二、"说的七种服务)的话  url=http://你的IP地址/arcgis/rest/services/;如果是web程序用到一个服务的话:url=http://你的IP地址/arcgis/rest/services/MyMapService/MapServer 。如果你不是用本地的服务的话你可以不做修改(因为它里面已经有ESRI发布的相关服务的URL了)
                           A1.2.4 在Javascript代码中使用代理:
                                     //下面这段代码我添加在了Step2.1代码的前面
                                      esri.config.defaults.io.proxyUrl = http://localhost:8080/esriproxy/proxy.jsp;
                                     esri.config.defaults.io.alwaysUseProxy = false;//此处用true还是false请自己去查咯~
             Q2:参数设置的问题
             A2:我用到的是GPFeatureRecordSetLayer类型的一个变量,通过FeatureSet来传递参数,通过esri.tasks.FeatureSet(json)来设置参数(参考 http://gis.jl.gov.cn/Portal/api/JS/help/jsapi/featureset.htm#FeatureSetConst2),其中json包括的内容有:
                  <String> displayFieldName
                  < Graphic[]> features
                  <Object> fieldAliases
                  <String> geometryType
                  < SpatialReference> spatialReference
            Q3:Error:Unable to Opearate。
                    Messages:esriJobFailed
                   
            A3:根据jobStatus类型判断,发现esriJobFailed的错误,(参考 ArcGIS 帮助 10.1
                     


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

balabalaxi~

五毛不嫌少 一块不嫌多 谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值