在ArcGIS for Javascript API或REST API调用GP服务时,常常会遇到这样一种情况:GP服务运行以后,执行成功,也能够生成结果,然而结果并没有直接产生动态的地图服务供API调用(即使勾选了”view results with a map service”,如下图)。

那么产生这一现象的原因可能为:

1、 GP服务输出的结果路径存在人为干预,也就是生成的结果不在ArcGIS for Server管理的目录下(默认执行的结果会在JOB目录的Scratch中)。

2、 未勾选将GP服务的结果作为地图服务发布”view results with a map service”。

3、 GP服务生成的结果没有存储在gdb中(只是推断,还需进一步验证)。

那么,我们现在需要解决的是,在发布了GP服务以后,如何让GP执行后的结果自动发布为地图服务呢?

实现的思路是:

1、 制作GP工具。

2、 将GP生成的结果写入mxd文档。

3、 生成服务连接文件。

4、 发布地图文档为地图服务。

GP工具以buffer为例,整个python脚本如下:

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# PublishImageService.py
# Created on: 2015-10-16 15:49:27.00000
# (generated by HUIHUI)
# Usage:
# Description: python publish service
# --------------------------------------------------------------------------- # Import arcpy module
import os as OS
import arcpy #script auguments
wrkpc = arcpy.GetParameterAsText(0)
connectionfilename = arcpy.GetParameterAsText(1)
server_url = arcpy.GetParameterAsText(2)
username = arcpy.GetParameterAsText(3)
password = arcpy.GetParameterAsText(4)
servicename = arcpy.GetParameterAsText(5)
InputFC = arcpy.GetParameterAsText(6)
OutputFC = arcpy.GetParameterAsText(7)
distance = arcpy.GetParameterAsText(8) #make a buffer shapefile
arcpy.Buffer_analysis(InputFC, OutputFC, distance, "", "", "", "") #define a parh about mxdTemplate and symbologyLayer
mxdTemplate = OS.path.join(wrkpc,"Template.mxd")
symbologyLayer = OS.path.join(wrkpc,"buffer1.lyr") # Make a layer from the feature class
outputLayer = OS.path.join(wrkpc, "buffer.lyr")
arcpy.MakeFeatureLayer_management(OutputFC,outputLayer)
arcpy.ApplySymbologyFromLayer_management (outputLayer, symbologyLayer) # Create a Describe object from the feature layer.
desc = arcpy.Describe(symbologyLayer) # Copy a map document template
newMxdPath = OS.path.join(wrkpc, "buffer.mxd")
arcpy.Copy_management(mxdTemplate, newMxdPath, "") # Add layer into primary map document
mxd = arcpy.mapping.MapDocument(newMxdPath)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
addLayer = arcpy.mapping.Layer(outputLayer)
arcpy.mapping.AddLayer(df, addLayer, "TOP")
mxd.title = "buffer test"
mxd.summary = "buffer test"
mxd.description = "buffer test"
mxd.tags = "buffer test"
mxd.save()
del mxd, df # createGISServerConnectionFile,define local variable
out_folder_path = wrkpc
staging_folder_path = wrkpc arcpy.mapping.CreateGISServerConnectionFile("PUBLISH_GIS_SERVICES",
out_folder_path,
connectionfilename,
server_url,
"ARCGIS_SERVER",
False,
staging_folder_path,
username,
password,
"SAVE_USERNAME") # define local variables
mapDoc = arcpy.mapping.MapDocument(newMxdPath)
sddraft = OS.path.join(wrkpc,"buffer.sddraft")
sd = OS.path.join(wrkpc,"buffer.sd")
summary = "this is a test"
tags = "this is a test" # creste service definition draft
analysis = arcpy.mapping.CreateMapSDDraft(mapDoc,
sddraft,
servicename,
"ARCGIS_SERVER",
connectionfilename,
False,
"WP_MapService",
summary,tags) #stage and upload the service if the sddraft analysis didn't contain errors
if analysis['errors'] == {}:
# excute StageService
arcpy.StageService_server(sddraft,sd)
# excute UploadServiceDfinition
arcpy.UploadServiceDefinition_server(sd,connectionfilename)
else:
# if the sddraft analysis contained errors,display them
print analysis['errors']

将脚本添加到工具箱中,设置相关参数,执行界面如下:

执行成功,将这个工具发布为GP服务,测试GP服务执行成功与否。很明显,生成buffer以后的面图层,自动的发布为了地图服务,问题得到了解决。查看结果如下:

GP产生的结果自动发布为地图服务的图形展示:

版权声明:本文为博主原创文章,未经博主允许不得转载。

解决GP服务产生的结果无法自动发布为地图服务的问题的更多相关文章

  1. OpenLayers调用arcgis server发布的地图服务

    有两种方式可以调用arcgis server发布的地图服务,一种是rest,一种是wms.  地图的投影为900913,arcgis server为10.0版本,地图服务的空间参考为3857.   与 ...

  2. ArcGIS 10.0发布缓存地图服务(详细版)

    1.软件准备ArcGIS Destop10.0,ArcGIS Server10.0,Windows系统下自带的IIS6.0以上服务器 1)安装ArcGIS Destop10.0软件,选择完全安装,安装 ...

  3. Django实现自动发布(2视图-服务管理)

    通常页面要能对资源进行增删改查,对应http的 POST.DELETE.UPDATE.GET 页面显示使用了layui,而layui的表格有自己的数据获取方式,所以我们的视图要做一些调整,不使用后端渲 ...

  4. Django实现自动发布(2视图-服务版本查找和新增)

    前面做好了服务的管理,接下来是服务版本的管理,和服务类似,版本也有增删改查.先在服务的管理页面做一个入口,如下图: 需要在上一步的服务管理页面增加按钮.按钮方法,点击按钮跳转时要打开一个新的页面,所以 ...

  5. 利用GeoServer发布web地图服务

    参考: http://www.cnblogs.com/beniao/archive/2011/01/11/1931028.html http://www.cnblogs.com/LBSer/p/445 ...

  6. JavaWeb和WebGIS学习笔记(六)——使用ArcGIS for Server发布地图服务

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  7. 从零开始发布一个ArcGIS Server地图服务

    @ 目录 一.软件环境搭建 1.数据库安装 1.1.Oracle(可选) 1.1.1.安装Oracle服务端 1.1.2.安装Oracle客户端 1.2.PostgreSQL(可选) 1.2.1.安装 ...

  8. ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用【地图服务】

    [前言] 有好些网友问我怎么使用Server发布的地图服务了,其实非常的简单. 我在这里先声明:不提供Server软件,需要的请自行使用互联网搜索资源: 不阐述Server如何发布各各种服务,但是我会 ...

  9. 常见地图服务(WMS、WFS、WCS、TMS、WMTS

    1.网络地图服务(WMS) 网络地图服务(WMS)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.能够根据用户的请求返回相应的地图(包括PNG,GIF,JPEG等栅格形式或 ...

随机推荐

  1. 第三部分:Android 应用程序接口指南---第二节:UI---第七章 通知

    第7章 通知 一个通知是一条消息他是显示于你应用程序之外的一个界面中.当你告诉系统要发布一个通知时,它首先作为一个icon出现在通知区域.为了看见通知的细节,用户可以点击通知区域展开一个新的界面.下面 ...

  2. 在Vue项目中使用vw实现移动端适配

    有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...

  3. [转]Unity手游之路<十二>手游资源热更新策略探讨

    最近梳理了下游戏流程.恩,本来想写下,但是,还是看前辈的吧 版权声明: https://blog.csdn.net/janeky/article/details/17666409 上一次我们学习了如何 ...

  4. SDL获得屏幕属性及实现分析

    [时间:2017-05] [状态:Open] [关键词:sdl2,屏幕分辨率,显示区域,多媒体渲染,窗口,sdl2源码分析] 0 引言 本文的主要目标在于使用SDL2获得屏幕相关的属性,比如分辨率.屏 ...

  5. emacs快捷键速记表

    纯手工打造,O(∩_∩)O哈哈~ * emacs快捷键速记表 ** 帮助*** C-h l 显示最后100个键入的内容*** C-h b 显示当前缓冲区所有可用的快捷键*** C-h t 打开emac ...

  6. Java知多少(33)多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...

  7. JAVA的各种O

    转自:http://jeoff.blog.51cto.com/186264/88517/ J2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家 ...

  8. IDEA 最新版破解教程图解

    一.打开此网站 http://idea.lanyus.com 并下载红色框框内的包 二.拷贝到idea 安装目录bin文件下 三.编辑 idea64.exe.vmoptions 和 idea.exe. ...

  9. java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换

    概述 信息安全基本概念: DH(Diffie–Hellman key exchange,迪菲-赫尔曼密钥交换) DH 是一种安全协议,,一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一 ...

  10. 超简单Windows安装Scrapy (仅需一步)

    网上很多关于windows安装Scrapy的教程都非常的繁琐,请看我给大家分享的教程,非常简单 一步完成. 超简单的安装方法: 下载地址: https://www.continuum.io/downl ...