gp 服务的发布与javascript调用

摘要:
通过服务器发布GP服务,并通过jsapi在web前端调用发布的GP服务。单击页面以生成鼠标单击缓冲区。软件环境本文使用以下环境:用于桌面的ArcGIS10.1,用于服务器的ArcGIS10.1,用于JavasScript3.3的ArcGI7.4.,vs2010步骤1.gp的建立1.gpgp是什么地理处理,即地理处理。911.html III.gp服务测试发布后。最好在服务器端测试gp服务,并将测试结果与本地结果进行比较。如果两者之间没有差异,gp服务将成功发布。

最近在学习ArcGIS 10.1 for Server 相关的知识,其中的一个必然掌握的知识点,就是服务的发布与使用。在ArcGIS Server 10.1 支持多种服务,包括:地图服务,影像服务等,而gp服务是日常使用最为广泛的服务。

扩展阅读:Esri的server的官方帮助中的服务类型的内容 http://resources.arcgis.com/zh-CN/help/main/10.1/#/na/01540000042s000000/

目标

使用Desktop建立gp 模型。该模型实现创建buffer的功能。通过server发布gp服务,并通过js api在web前端调用发布的GP服务,在页面点击,生成鼠标点的buffer。

软件环境

本文使用的环境为:ArcGIS 10.1 for Desktop, ArcGIs 10.1 for Server,ArcGIS 10.1 Server for javasScript 3.3,vs 2010

步骤

一、gp的建立

1.什么gp

gp是geoprocessing,即地理处理。gp提供一系列的工具,能够处理包括从简单的缓冲区分析,面叠加到复杂的诸如回归分析和影像分类等GIS任务。可以参考Esri的官方文档中的什么是地理处理:http://resources.arcgis.com/zh-CN/help/main/10.1/#/na/002s00000001000000/。

扩展阅读:ArcGIS Desktop中的gp框架http://210.43.24.222/chy/3sbase/news/?909.html

2.如何建立gp

gp工具由三种方式创建:模型编辑器,python脚本和使用AML。

扩展阅读:gp的手工建立流程 http://www.cnblogs.com/gisangela/archive/2011/01/06/1927702.html

               http://210.43.24.222/chy/3sbase/news/?910.html

tips:输入参数的选择。dataTyp是选择featury Layer 还是其他,本文因涉及到与地图的交互,故将dataType 设置为feature set。如果dataType为feature Layer 则默认对图层中的所有要素进行缓冲操作。

gp 服务的发布与javascript调用第1张

    图1 输入参数属性对话框

扩展阅读:gp中的参数,http://blog.csdn.net/arcgisserver_book/article/details/7855748

二、模型的发布

      ArcGIS 10.1 for Server中的gp服务的发布是在result窗口发布gp服务结果,即通过对话框的形式(在模型编辑器中运行模型不会在结果窗口产出结果)运行模型。

gp 服务的发布与javascript调用第2张

 图2 模型对话框

运行后,在result窗口(在菜单geoprocessing中点击results弹出窗口)中查看结果状态。如果出现waring和erro,记得对模型进行调试,直到可以出现预期的输出。

gp 服务的发布与javascript调用第3张

图 3 模型运行结果窗口

      在results窗口的模型右键 share as -GeoProcessing Service,发布gp服务。

  tips:在发布gp方式时,应该指定服务调用的方式,是异步还是同步方式,如图中的Execution Mode。关系到调用方式。

gp 服务的发布与javascript调用第4张

图4 服务发布参数设置

扩展阅读:gp服务发布前的准备http://210.43.24.222/chy/3sbase/news/?911.html

三、gp服务的测试

      gp服务发布后。最好在服务器端,对gp服务进行测试,将测试结果与本地的结果做比较,如果两者无差异,即gp服务才算发布成功。

      gp 服务的发布与javascript调用第5张

图 5 Desktop链接服务

          tips: 在Desktop的catalog中,链接Arcgis on localhost(如果服务发布在其他机器上,可以点击添加Add ArcGIS server,添加服务器),从中可以发现发布的服务,找到需要测试的gp服务,对其进行测试,测试方式和本地是一样的。

三、gp的调用

      gis web引用程序的调用,通常有两种方式,方式一:通过在ArcGIS viewer for flex 或者ArcGIS viewer for silverlight 中目标创建web applicataion;方式二:通过web api(ArcGIS server for javascript,silverlight,flex)调用。

      本文的调用是通过使用方式二中的js api,创建web前端应用程序。   

gp 服务的发布与javascript调用第6张gp 服务的发布与javascript调用第7张View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>GP服务测试</title>
    <link href="Scripts/claro.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.3/jsapi/js/esri/css/esri.css">
    <style>
        html, body, #map
        {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
        }
        body
        {
            background-color: #FFF;
            overflow: hidden;
            font-family: "Trebuchet MS";
        }
    </style>
    <script src="http://localhost/arcgis_js_api/library/3.3/jsapi/init.js"></script>   
    <!--
    <script src="http://t.zoukankan.com/jsapi_vsdoc10_v33.js" type="text/javascript"></script>
    -->
    <script>
        var map, gp, dynamic;
        //底图 rest
        var mapurl = "http://localhost:6080/arcgis/rest/services/mapserver/CaliforniaProjecteddd/MapServer";
        // gp服务地址
        var gpurl = "http://localhost:6080/arcgis/rest/services/gp/Createb/GPServer/Createb";
        dojo.require("dijit.layout.BorderContainer");
        dojo.require("dijit.layout.ContentPane");
        dojo.require("dijit.form.Button");
        dojo.require("esri.map");

        function init() {
            map = new esri.Map("map");

            dynamic = new esri.layers.ArcGISDynamicMapServiceLayer(mapurl);
            map.addLayer(dynamic);
            //注册map的点击事件,
            dojo.connect(map, "onClick", CreateBuffer);
        }
        //加载dom
        dojo.ready(init);
        

        function CreateBuffer(evt) {
            //创建GP服务
            gp = new esri.tasks.Geoprocessor(gpurl);
            //绘制要素
            var graphic = DrawFeature(evt);
            // 配置gp 服务的参数
            var features = [];
            features.push(graphic);
            var featureSet = new esri.tasks.FeatureSet();
            featureSet.features = features;

            var distance = new esri.tasks.LinearUnit();
            distance.distance = 20;
            distance.units = esri.Units.KILOMETERS;
            //开始调用GP服务
            var params = {
                "Export_Output_2": featureSet,
                "Distance__value_or_field_": distance
            }
           
            //    gp.submitJob(params, addResults);在发布gp服务的时候中,如果选择的是异步方式,采用的执行方式
            gp.execute(params, addResults);//同步的执行方式
        }

        //
        function DrawFeature(evt) {

            //根据鼠标点的位置,创建feature
            var pointSymbol = new esri.symbol.SimpleMarkerSymbol();
            pointSymbol.setOutline = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1);
            pointSymbol.setSize(5);
            pointSymbol.setColor(new dojo.Color([255, 0, 0]));
            //
            var grahic = new esri.Graphic(evt.mapPoint, pointSymbol);
            map.graphics.add(grahic);

            return grahic;


        }
    //gp完成后的回调函数    

        function addResults(jobInfo) {         
            var features = jobInfo[0].value.features;
            for (var f = 0, fl = features.length; f < fl; f++) {
                var feature = features[f];
                var polySymbolRed = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 12, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([204, 102, 51]), 1), new dojo.Color([158, 184, 71, 1]));
                feature.setSymbol(polySymbolRed);
                map.graphics.add(feature);
            }
          
        }
    </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>
     <!--   <button data-dojo-type="dijit.form.Button" onclick="CreateBuffer();">
            获取缓冲区</button>-->
    </div>
</body>
</html>

     结果:在map上点击,生成一个buffer的feature。

gp 服务的发布与javascript调用第8张

图 6 结果截图

     tips: gp服务执行的结果在服务的作业目录下,通过查看作业目录,可以检验gp服务是否调用成功。

    gp 服务的发布与javascript调用第9张

图7 结果输入目录

     扩展阅读:silverlight 中调用gp:http://www.cnblogs.com/potential/archive/2012/11/03/2752289.html

                     flex 中调用gp:http://www.cnblogs.com/gisangela/archive/2011/01/06/1927702.html

                     js中调用gp:http://210.43.24.222/chy/3sbase/news/?913.html

总结

    gp服务是ArcGIS Server 服务中的一主要服务形式。本文只做了简单的示例。更加深入的学习,参考Esri官方帮助!

    

免责声明:文章转载自《gp 服务的发布与javascript调用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【WPF】使用CefSharp嵌入HTML网页两个截取字符串的实用方法(超过一定长度自动换行)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用geoserver发布arcgis切片

arcgis map 版本:10.1,10.2,10.3均可 jre:7或者8 geoserver:2.8.2以上 切片:松散型,256*256  ,png 1:安装geoserver并独立部署geowebcache   安装方法:将下载的geowebcache独立部署包解压到geoserver的webapp目录下  例如:webapp/geowebcac...

ArcGIS 一级文件夹下所有GDB中的指定要素添加到mxd的图层中

一级文件夹下存在多个GDB,每个GDB存在多个要素类,要求对名字为frame的要素类,添加到mxd的图层中显示 如下图: mxd = arcpy.mapping.MapDocument('CURRENT') df = arcpy.mapping.ListDataFrames(mxd)[0] arcpy.env.workspace = 'D:/.../一级...

arcengine 开发经典帖 【强烈推荐仔细研读】

转自原文 arcengine 开发经典帖 使用ArcGIS Engine 开发自定义GIS应用:第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine的产品。第二部分:ArcEngine9.2的新特性及变化、(续)--类对比及变化、(续)--(代码转换插件)、(续)--ArcEngine新命令,工具、菜单...

ArcGIS统计栅格像元值并转换为矢量图层

很多时候,我们需要得到矢量数据区域所对应栅格数据的像元统计值(求平均、求和等),然后将获得的统计值赋给矢量图层的属性表,在ArcGIS中操作如下:(PS:第一次写技术文章,望大家多多体谅与支持,么么哒) 1、栅格统计:统计栅格数据,按照需要(求和、求平均)用所需要的矢量数据(矢量目标图层)进行统计,(注:考虑到统计分析较为常见,第一步前期并未实例截图)。...

登陆ArcGIS Server Manager时一直显示”请稍后……”

登陆ServerManager时一直显示”请稍后……”新建完成ARcGISServerSite,设置用户名和密码。但是登陆时却发现一直处于等待状态,如下图:更换为IE浏览器后发现,已经可以登陆并且退出后再次登陆正常。经过多次尝试后发现这种问题只出现在Chrome浏览器或者使用Chrome内核的浏览器(如极速模式下的猎豹、搜狗、360等)中。在查阅了一些文档...

ArcGIS网络概述

转载自原文 ArcGIS网络概述 一、地理网络 (一)基本概念 由一系列相互连通的点和线组成,用来描述地理要素(资源)的流动情况。 (二)网络类型 1、定向网络 (1)流向由源(source)至汇(sink)。 (2)网络中流动的资源自身不能决定流向。 例如:水流、电流等。 2、非定向网络 (1)流向不完全由系统控制 (2)网络中流动的资源可以决定流...