目錄
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>
與君共勉!