目录
1.发布GP服务
这个说实话我不太会,不过网上有很多完整的教程
2.了解GP服务并测试GP服务成功与否
GP服务的一般格式:
https://portal.ahslyj.gis/server2d/rest/services/ahlyj/minroute/GPServer
这个是我GP服务地址,打开的样子如下图所示:
不过这个不是我们在js中调用的地址,调用的地址要点击进我圈出的部分,那个地址才是我们调用的地址
点进去后就是GP服务参数的详细信息,翻到最下面点击submit_job输入参数测试
然后点击post请求后就是在执行了
上面就是一个基本的查看GP服务和测试GP服务的一个流程
下面我们开始进入正题,对GP服务进行调试
3.arcgis js 调用GP服务
终于到了大家最喜欢的环节,废话不多说,直接上代码,ctrl c / ctrl v
一个完整的代码可以直接运行的哦,把73,81,95行的改成你自己的就ok了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://js.arcgis.com/4.15/esri/themes/light/main.css"/>
<script src="https://js.arcgis.com/4.15/"></script>
<title>Title</title>
<style>
html,
body, #mapContent {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
#tool{
position: absolute;
color: blue;
top: 20px;
right: 20px;
z-index: 999;
}
</style>
</head>
<body>
<div id="mapContent"></div>
<div id="tool"> <button id="test">测试</button>
</div>
</body>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"esri/geometry/Point",
"esri/geometry/Polyline",
"esri/tasks/GeometryService",
"esri/geometry/geometryEngine",
'esri/geometry/support/geodesicUtils',
"esri/tasks/Geoprocessor",
'esri/widgets/Sketch/SketchViewModel',
"esri/tasks/support/LengthsParameters",
'esri/geometry/support/geodesicUtils',
"esri/geometry/support/webMercatorUtils",
"dojo/domReady!"
], function (Map, MapView, FeatureLayer, GraphicsLayer,Graphic,
Point, Polyline,
GeometryService, geometryEngine, geodesicUtils,Geoprocessor,
SketchViewModel,
LengthsParameters,geodesicUtils,webMercatorUtils
) {
var map = new Map({
basemap: "topo"
});
var view = new MapView({
container: "mapContent",
map: map,
center: [117.190322, 31.896501],
// center: [-61.125537, 35.863534],
zoom: 10,
highlightOptions: {
color: "red"
}
});
var gpServer =new Geoprocessor({
//这个地址换成你自己的GPserver 地址
url:"https://portal.ahslyj.gis/server2d/rest/services/ahlyj/minroute/GPServer/minroute",
outSpatialReference: {
wkid: 102100
}
})
//参数
//这里面的参数就是你发布服务的输入参数
//键值对,第一个是参数名称,第二个是参数的值
let params ={
intput:"Connection to db1.sde"+"\\"+"\\SDE.road_dataset"+"\\"+"\\SDE.road",
point1:"12601527.432999998,2655731.9277000017",
point2:"12602867.285700001,2657795.6818000004"
}
//编辑
document.getElementById('test').onclick=function() {
console.time();
gpServer.submitJob(params).then(function (result) {
var jobId = result.jobId;
var status = result.jobStatus;
if(status === "job-succeeded") {
//成功之后,将其中的结果取出来,当然这也是参数名字。
//在模型中,想要取出中间结果,需要设置为模型参数
gpServer.getResultData(jobId, "output").then(function(res){
console.log(res);//返回的数据
console.timeEnd();
})
//上面getResultData方法是获取完成输出的内容,其中第二个参数output是我返回的参数名称,你根据自己更改
}
})
}
})
</script>
</html>
与君共勉!