arcgis js4.15 調用GP服務

目錄

1.發佈GP服務

2.瞭解GP服務並測試GP服務成功與否

3.arcgis js 調用GP服務


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>

與君共勉!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章