概述:

在上一篇文章(Arcgis for js之GP实现缓冲区计算)介绍了Arcgis for js实现缓冲区计算,但是很多时候,我们不会用Arcgis的东西却想调用GP来实现对应的功能,怎么做呢,没错,本文将讲述如何通过ajax的方式去执行GP并返回结果。

思路:

按下F12打开谷歌的调试工具,切换到网络,再执行,可以看到GP执行时请求的url,如下:

在浏览器中分别打开1,2,3,可以开到各自的请求结果如下:

1、

{"jobId":"j75ee9938cd9b450fb76eb0f603040fbc","jobStatus":"esriJobSubmitted"}

2、

{"jobId":"j123084f770754cf6b76892d2fa44b80e","jobStatus":"esriJobSucceeded","results":{"output":{"paramUrl":"results/output"}},"inputs":{"input":{"paramUrl":"inputs/input"},"Distance__value_or_field_":{"paramUrl":"inputs/Distance__value_or_field_"}},"messages":[]}

3、

说明:

从2中,可以看到,编号为2的URL执行了三遍,在此,我个人的理解是2的请求有时候返回不了结果,所以一直请求,直到请求成功。

关键代码:

var gpUrl = 'http://localhost:6080/arcgis/rest/services/erase/GPServer/erase';

说明:

这个GP服务是计算erase分析的,没有输入,即数据的参数已经定义好了,为两个shp文件,只是将计算的结果作为输出结果输出。

1、

                    $("#calGP").on("click",function(){$.messager.progress({text:"计算中,请稍后..."});$.ajax({type: "POST",cache: false,url: gpUrl+"/submitJob?f=json",async: true,success: function (result) {result = eval("("+result+")");var jobId = result.jobId;if(jobId){submitJob(jobId);}else{$.messager.progress('close');$.messager.alert("提示","计算失败!");}}});});

说明:

url1请求成功后,返回的是一个jobid。

2、

        function submitJob(jobId){$.ajax({type: "POST",cache: false,url: gpUrl+"/jobs/"+jobId+"?f=json",async: true,success: function (result1) {result1 = eval("("+result1+")");if(result1.jobStatus==="esriJobSucceeded"){showResult(jobId);}else{submitJob(jobId);}}});}

说明:

请求不成功,在此提交请求,直到请求成功。

3、

        function showResult(jobId){$.ajax({type: "POST",cache: false,url: gpUrl + "/jobs/" + jobId + "/results/erase_shp?f=json&returnType=data",async: true,success: function (result2) {result2 = eval("(" + result2 + ")");$.messager.progress('close');$.messager.alert("提示", "计算完成!");var features = result2.value.features;if (features.length > 0) {for (var i = 0, length = result2.length; i != length; ++i) {var feature = features[i];if(feature==undefined){return;}else {var polySymbolRed = new esri.symbol.SimpleFillSymbol();polySymbolRed.setOutline(new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0, 0.5]), 1));polySymbolRed.setColor(new dojo.Color([255, 0, 0, 0.5]));var g = new esri.Graphic(new esri.geometry.Polygon(feature.geometry), polySymbolRed, feature.attributes)map.graphics.add(g);}}}}});}

说明:

请求成功,将结果展示。

转载于:https://www.cnblogs.com/lzugis/p/6539802.html

通过Ajax的方式执行GP服务相关推荐

  1. Arcgis javascript那些事儿(十六)——GP服务的发布与使用

    一.引言 GP服务是为了弥补arcgis api的不足,提供用户自定义接口,有点类似SOE的开发,但是对编程能力要求不是很高,只需要在arcmap中创建模型发布就可以实现. GP服务主要分为两种:一. ...

  2. 在ASP.NET AJAX中使用应用程序服务和本地化(3):用户个性化组件ProfileService

    本文来自<ASP.NET AJAX程序设计 第II卷:客户端Microsoft AJAX Library相关>的第五章<应用程序服务和本地化>. 在内建了身份认证应用程序服务之 ...

  3. ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用)

    一.背景说明 通过调用GP服务,Android客户端也能实现专业的.复杂的GIS分析处理功能,从而增加应用的实用价值. ArcGIS Server发布的GP服务,分为同步和异步两种类型,一般执行步骤较 ...

  4. ArcGI Server+GP服务完成最短路径分析(实践经验)

    最近用arcgis GP服务做了几个Demo,为了不丢失自己的实践经验,我决定把过程记下来!!! (一)最短路径分析 以上为效果图,在此感谢 http://www.tzwhx.com/newOpera ...

  5. AJAX应用服务器端:面向服务与WCF

    WCF作为AJAX服务平台的优势                 WCF为启用AJAX的Web服务提供管道形式服务,并未服务器与客户端之间的通信提供了统一的编程模式.WCF运行环境非常灵活,它包含了能 ...

  6. 创建线程的几种方式?JSP的九大内置对象及作用分别是什么?servlet的生命周期及常用方法?转发和重定向区别?ajax书写方式及内部主要参数都有哪些

    文章目录 1 , 创建线程的几种方式? 问题扩展: 2 ,JSP的九大内置对象及作用分别是什么? (1) 问题分析: (2) 核心答案讲解: 1.request对象 2.response对象 3.se ...

  7. 关于web项目的 ajax 处理方式

    2019独角兽企业重金招聘Python工程师标准>>> 传统处理方式: 这是我们最常用的 web 项目请求 - 处理流程. 主要由服务端响应用户请求,处理业务数据,生成 html 页 ...

  8. ajax提交到mysql_利用ajax的方式来提交数据到后台数据库及交互功能

    怎么样用ajax来提交数据到后台数据库,并完成交互呢????? 一.当我们在验证表单的时候,为了阻止把错误的也发送到服务器,我们通常这样设置: $(function(){ var isusername ...

  9. ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解...

    感谢一路走来默默陪伴和支持的你~~~ ----------------欢迎来访,拒绝转载---------------- 关于GP模型的制作请点我! 一.GP发布 ArcGIS Desktop可以作为 ...

最新文章

  1. SAP日记之一-漫漫自学路
  2. 远程电脑桌面控制怎么看计算机,计算机如何通过远程控制,可以查看他人电脑屏幕...
  3. 读“苹果上周发布了Mac OS X Mountain Lion系统”新闻的感想
  4. 一文教你用java实现出租车计价器设计(附下载源码)
  5. Android Studio报错:Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.61)
  6. Wannafly挑战赛28A(模拟,题意文字游戏)
  7. 欧盟无线产品RED认证
  8. 抖音是怎么做出来的?| 创业故事
  9. 第三代oid铺码软件_你好点读笔!自制小达人点读目录册之书名贴铺码
  10. 基于django的视频点播网站开发-step15-项目部署
  11. 当前最火直播APP开发优化问题
  12. 电路原理 | 二阶动态电路
  13. JAVA守护线程 非守护线程
  14. ADC采样时间、采样周期、采样频率计算方法
  15. 一氧化碳测试仪软件,一氧化碳检测仪的原理_一氧化碳检测仪的使用 - 全文
  16. 当“互联网+”遇上“新零售”,卖1000万杯咖啡有何难?
  17. 浏览器安装公众号编辑器
  18. 搭建私人kindle图书馆,并内网穿透实现公网访问
  19. mysql 语法-insert.into..select 容易陷入的坑
  20. bs系统架构和mvc架构

热门文章

  1. iPhone黑屏幕转圈圈(解决办法)
  2. 大文件打开工具 PilotEdit
  3. Android开发笔记(三十五)页面布局视图
  4. 通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题
  5. (十七)Java springcloud B2B2C o2o多用户商城 springcloud架构-消息驱动 Spring Cloud Stream...
  6. CFNetwork 框架详细解析
  7. RDS还原数据库时报错:ERROR 1227 (42000) at line 78664
  8. Windows 8.1 Preview 开发资源汇总
  9. FRAMESET使用收集
  10. 【实用工具】查看gcc/vs开启的宏