第一次使用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:渲染结果。