调用GP服务

本文介绍了一种利用ArcGIS技术实现DEM等高线提取及裁剪的方法,并通过Web展示裁剪后的等高线。该过程涉及建立模型、配置Geoprocessing服务以及使用JavaScript进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现DEM提取等高线然后裁剪再在网页显示。

首先,建立适当的Model,将Toolboxd的工具拖入model中选择合适的变量,如图

发布好GP服务和地图服务。

点击后实现了提取等高线后裁剪的功能。

附上源代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <!--The viewport meta tag is used to improve the presentation and behavior of the samples
      on iOS devices-->
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>GP Task Clip and Countour DEM </title>

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">
    <script src="http://js.arcgis.com/3.14/"></script>
    <script>

        dojo.require("dijit.layout.BorderContainer");
        dojo.require("dijit.layout.ContentPane");
        dojo.require("dijit.form.Button");
        dojo.require("esri.map");
        dojo.require("esri.Color");

        dojo.require("esri.graphic");
        dojo.require("esri/graphicsUtils");
        dojo.require("esri/tasks/Geoprocessor");
        dojo.require("esri/tasks/FeatureSet");
		dojo.require("esri/tasks/RasterData");
        dojo.require("esri/tasks/JobInfo");
        dojo.require("esri/symbols/SimpleMarkerSymbol");
        dojo.require("esri/symbols/SimpleLineSymbol");
        dojo.require("esri/symbols/SimpleFillSymbol");

        var map, gp, dynamic;
        function init() {
            //DEM底图
            var mapurl = "http://localhost:6080/arcgis/rest/services/GPTest/DEM/MapServer";
            map = new esri.Map("map");
            dynamic = new esri.layers.ArcGISDynamicMapServiceLayer(mapurl);
            map.addLayer(dynamic);
            //创建GP服务
            var gpurl = "http://localhost:6080/arcgis/rest/services/GPTest/ClipAndC/GPServer/MyGP";
            gp = new esri.tasks.Geoprocessor(gpurl);
            gp.outSpatialReference = map.spatialReference;
            //注册map的点击事件,
            dojo.connect(map, "onClick", DoClip);
        }
        dojo.ready(init);

        function DoClip(evt) {  
		//建立一个面的Json,以便能够被调用		
			var jsonpolygon = {
		 "displayFieldName": "Id",
		 "fieldAliases": {
		  "Id": "Id"
		 },
		 "geometryType": "esriGeometryPolygon",
		 "spatialReference": {
		  "wkid": 4326,
		  "latestWkid": 4326
		 },
		 "fields": [
		  {
		   "name": "Id",
		   "type": "esriFieldTypeInteger",
		   "alias": "Id"
		  }
		 ],
		 "features": [
		  {
		   "attributes": {
			"Id": 0
		   },
   "geometry": {
    "rings": [
     [
      [
       103.14862060546875,
       29.4666748046875
      ],
      [
       103.119384765625,
       29.45654296875
      ],
      [
       103.08770751953125,
       29.46160888671875
      ],
      [
       103.0711669921875,
       29.49700927734375
      ],
      [
       103.125732421875,
       29.55291748046875
      ],
      [
       103.25640869140625,
       29.52252197265625
      ],
      [
       103.14862060546875,
       29.4666748046875
      ]
     ]
    ]
   }
  }
 ]
}
            var featureSetpolygon = new esri.tasks.FeatureSet(jsonpolygon);
            //开始调用GP服务
            var params = {

                "Clip_Features": featureSetpolygon
            }
			//异步调用,同步调用用excute
			gp.submitJob(params,addResults);
        }

       //加载结果
        function addResults(jobinfo) {
 
            var mapurlll = "http://localhost:6080/arcgis/rest/services/GPTest/ClipAndC/MapServer/jobs" + "/" + jobinfo.jobId;
            hotspotLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapurlll
                ); 
            map.addLayer(hotspotLayer);
        }
    </script>
</head>
<body class="claro">
    <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design,'headline',gutters:false">
        <div id="map" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'">
        </div>
    </div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值