ArcgisForJS如何使用ArcGIS Server发布的GP服务?

文章目录

  • 0.引言
  • 1.ArcGIS创建GP服务
  • [2.ArcGIS Server发布GP服务](#2.ArcGIS Server发布GP服务)
  • [3.ArcgisForJS使用ArcGIS Server发布的GP服务](#3.ArcgisForJS使用ArcGIS Server发布的GP服务)

0.引言

ArcGIS for JavaScript(或简称AGJS)是一个强大的工具,它允许开发者使用JavaScript在Web浏览器中创建和运行ArcGIS应用程序。ArcGIS Server是一个强大的服务器产品,它提供了许多服务,包括地理处理服务(GP服务)。GP服务是一种服务,它允许开发者在ArcGIS Server上运行各种地理处理任务等。ArcGIS for JS可以使用ArcGIS Server发布的GP服务来执行各种地理处理任务。

1.ArcGIS创建GP服务

(1)创建mxd地图文档,命名为bufferGP。

(2)创建点要素

(3)创建模型

构建点生成缓冲区的模型。

设置heatPoints。

设置距离[值或字段]。

设置各组件显示模型参数。

同理设置其他组件的模型参数。

重命名各组件。

运行成功并退出。

2.ArcGIS Server发布GP服务

打开模型,执行一次模型。

打开结果查看会话。

发布地理处理服务。

在ArcGIS Server查看GP服务。

地理处理服务地址:http://localhost:6080/arcgis/rest/services/gp/bufferService1/GPServer/bufferGPModel

3.ArcgisForJS使用ArcGIS Server发布的GP服务

(1)实现代码

csharp 复制代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">  
  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>GP服务</title>  
    <link rel="stylesheet" href="https://js.arcgis.com/4.28/esri/themes/light/main.css" />  
    <script src="https://js.arcgis.com/4.28/"></script>  
    <style type="text/css">  
        .MapClass {  
            width: 100%;  
            height: 600px;  
            border: 1px solid #000;  
        }  
    </style>  
    <script type="text/javascript" charset="utf-8">  
  
        require(["esri/Map",  
            "esri/views/MapView",  
            "esri/rest/geoprocessor",  
            "esri/rest/support/FeatureSet",  
            "esri/Graphic",  
            "esri/layers/GraphicsLayer",  
            "esri/rest/support/LinearUnit"  
        ], (Map,  
            MapView,  
            geoprocessor,  
            FeatureSet,  
            Graphic,  
            GraphicsLayer,  
            LinearUnit) => {  
            var MyMap = new Map({  
                basemap: "gray-vector",  
            });  
            var inputGraphicContainer = [];  
            var graphicsLayer = new GraphicsLayer();  
            MyMap.add(graphicsLayer);  
            var view = new MapView({  
                container: "MyMapDiv",  
                center: [106.49446091380375, 29.559187456407138],  
                zoom: 10,  
                map: MyMap  
            });  
  
            const markerSymbol = {  
                type: "simple-marker",  
                color: [255, 0, 0],  
                outline: {  
                    color: [255, 255, 255],  
                    width: 2  
                }  
            };  
            const fillSymbol = {  
                type: "simple-fill",  
                color: [226, 119, 40, 0.75],  
                outline: {  
                    color: [255, 255, 255],  
                    width: 1  
                }  
            };  
  
            //点击绘点  
            view.on("click", createGraphic);  
            function createGraphic(event) {  
                const point = {  
                    type: "point",  
                    longitude: event.mapPoint.longitude,  
                    latitude: event.mapPoint.latitude  
                };  
                const inputGraphic = new Graphic({  
                    geometry: point,  
                    symbol: markerSymbol  
                });  
  
                graphicsLayer.add(inputGraphic);  
                inputGraphicContainer.push(inputGraphic);  
            }  
  
            //清除点  
            document.getElementById("Btn").onclick = () => {  
                view.graphics.removeAll();  
                graphicsLayer.removeAll();  
                inputGraphicContainer = [];  
            };  
  
            //调用GP服务生成缓冲区  
            document.getElementById("buffer").onclick = () => {  
                const gpUrl="http://localhost:6080/arcgis/rest/services/gp/bufferService1/GPServer/bufferGPModel";  
                const featureSet = new FeatureSet();  
                featureSet.features = inputGraphicContainer;  
                const dis = new LinearUnit({  
                    "distance": 5,  
                    "units": "miles"  
                });  
                const params = {  
                    input: featureSet,  
                    dis: dis  
                };  
                const options = {  
                    outSpatialReference: {  
                        wkid: 102100  
                    }  
                };  
                geoprocessor.execute(gpUrl, params, options).then(drawResultData);  
            }  
  
            function drawResultData(result) {  
                const resultFeatures = result.results[0].value.features;  
                const bufferGraphics = resultFeatures.map((feature) => {  
                    feature.symbol = fillSymbol;  
                    return feature;  
                });  
                graphicsLayer.addMany(bufferGraphics);  
                view.goTo({  
                    target: bufferGraphics,  
                    tilt: 0  
                }).catch((error) => {  
                    if (error.name != "AbortError") {  
                        console.error(error);  
                    }  
                });  
            }  
        });  
    </script>  
</head>  
  
<body>  
    <div id="MyMapDiv" class="MapClass" style="width:900px;height:600px;"></div>  
    <input id="Btn" type="button" value="清除" />  
    <input id="buffer" type="button" value="缓冲区分析" />  
</body>  
  
</html>

(2)实现结果

参考资料:

1\] 一入GIS深似海. [不一样的前端,JavaScript之arcgis api教程](https://www.bilibili.com/video/BV11D4y197wM/?spm_id_from=333.337.search-card.all.click&vd_source=1ed485bfa4061f1a098f425106373a4b); 2020-11-02 \[accessed 2024-02-25\]. \[2\] 码农阿焦. [ArcGIS API For JavaScript使用自定义GP服务](https://blog.csdn.net/LENOVOJXN/article/details/88547984); 2019-03-14 \[accessed 2024-02-25\]. \[3\] gis_morningsun. [Arcgis javascript那些事儿(十六)------GP服务的发布与使用](https://blog.csdn.net/xcymorningsun/article/details/77047233); 2017-08-10 \[accessed 2024-02-25\]. \[4\] 爱睡懒觉的老舅. [07-ArcGIS API For JavaScript之调用GP服务](https://blog.csdn.net/Ocean111best/article/details/103263359); 2019-11-26 \[accessed 2024-02-25\]. \[5\] No8g攻城狮. [【前端用法】jQuery在线引用地址(全)](https://no8gs.blog.csdn.net/article/details/104625368?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-104625368-blog-85218963.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-104625368-blog-85218963.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=1); 2023-12-16 \[accessed 2024-02-25\]. \[6\] lqdcanty. [jquery中click点击事件嵌套后多次触发的解决方案](https://blog.csdn.net/licanty/article/details/72828434); 2017-06-01 \[accessed 2024-02-25\]. \[7\] 小苗吃不够 . [jQuery绑定点击事件和改变事件的几种方式以及多个元素绑定多个事件](https://huaweicloud.csdn.net/638ef046dacf622b8df8ddf5.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTQxOTkwNywiZXhwIjoxNzA5MTcyNzk4LCJpYXQiOjE3MDg1Njc5OTgsInVzZXJuYW1lIjoicXFfNDA2NDA5MTAifQ.EhN6N9KPMAVSEA7fSjy4jlDy3B8kHfAbyM1pwK_YZqI); 2022-09-05 \[accessed 2024-02-25\]. \[8\] 孙霸天. [GP服务的使用详解](https://blog.csdn.net/qq_36213352/article/details/81501684?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170875362116800213092810%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=170875362116800213092810&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-81501684-null-null.142%5ev99%5epc_search_result_base3&utm_term=arcgisapiforjs4.x%E4%BD%BF%E7%94%A8gp%E6%9C%8D%E5%8A%A1&spm=1018.2226.3001.4449); 2022-01-28 \[accessed 2024-02-25\]. \[9\] 不断学习的GISer. [arcgis js 4.x 调用gp栅格计算将结果渲染后叠加到天地图](https://blog.csdn.net/qq_37121832/article/details/121269991?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1-121269991-blog-81501684.235%5ev43%5epc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.1&utm_relevant_index=4); 2021-11-11 \[accessed 2024-02-25\]. \[10\] 数据库及DotNet开发. [图解ArcGIS Server之发布GP服务-返回矢量数据](https://jingyan.baidu.com/article/0aa2237541ecf088cc0d640c.html); 2016-12-14 \[accessed 2024-02-25\]. \[11\] zhoutaotao0509. [基于ArcGIS API For JavaScript调用GP服务实现动态插值分析实现](https://blog.csdn.net/zhoutaotao0509/article/details/52346659); 2016-08-28 \[accessed 2024-02-25\]. \[12\] HPhone. [使用ArcGIS GP服务之五 JavaScript的调用](https://www.cnblogs.com/HPhone/archive/2012/11/18/2775860.html); 2012-11-18 \[accessed 2024-02-25\].

相关推荐
十五_在努力几秒前
参透JavaScript —— 判断数据类型的四种方式
前端·javascript
依辰7 分钟前
小程序自动化构建与版本管理方案优化
前端·javascript·微信小程序
Geoffwo7 分钟前
取消echarts地图悬浮时默认黄色高亮
前端·javascript·echarts
我是谁谁9 分钟前
Canvas 高级应用与实战项目<3>
javascript·css·canvas
前端大卫16 分钟前
🔥 如何“为所欲为”地渲染页面:优雅拦截 Fetch 和 XMLHttpRequest!
前端·javascript
苏州第一深情16 分钟前
【vue+leaflet】自定义控件(五)
前端·javascript·vue.js
逾明17 分钟前
在项目中使用Volta控制node版本
前端·node.js
日升18 分钟前
Electron 开发:获取当前客户端真实 IP
前端·javascript·electron
你不会困19 分钟前
用纯JS监控本地文件,让网页拥有千里眼!
前端
枫无痕21 分钟前
promise源码解析
前端·vue.js