最近,一直纠结一个问题:做好的GP模型或者脚本在本地运行,一切正常;发布为GP服务以后时而可以运行成功,而更多的是运行失败,甚至不能知晓运行成功后的结果输出在哪里。

铺天盖地的文档告诉我,如下信息:

这些来自官方的Esri help信息大体可以总结为: GP服务结果的输出路径由服务器管理不能人为控制,即使是指定了它输出的工作环境,服务运行依然会忽略环境设置,而执行的结果会输出在PackageWorkspace指定的路径下,而packageWorkspace又是只读的,不能够对其指定的路径做出修改。

万念俱灰间,以为这是一条再不能行的死路。

------------------------------------------------

首先慢慢的分析,利用python找到这个packageWorkspace的输出路径到底是什么,即输出执行的环境,脚本如下:

# -*- coding:utf-8 -*-
import arcpy
from arcpy import env
import os
inputpath = arcpy.GetParameterAsText(0)
txtpath = os.path.join(inputpath,"env_file.txt") outtxt = open(txtpath,'w')
environments = arcpy.ListEnvironments()
for environment in environments:
envSetting = getattr(env,environment)
outtxt.writelines(environment+":"+"\t")
outtxt.writelines(str(envSetting)+'\n')
outtxt.flush()
outtxt.close()

将以上脚本发布为服务,查看运行的结果如下:

Packageworkspace指明了服务结果的输出路径,其实和预料的一样,在站点的directories路径下,只是相对冗长,且在该路径下打包了GP工具及输出的结果。

那么服务输出的结果真的只能在这里么?该怎样设置?

-------------------------------------------------

实际上很简单的,服务端运行,之所以指定到服务器所管理的目录下,是因为需要调用GP服务的结果然后返回给客户端,也就是说,至少输出位置必须是服务器端可访问的、共享的,于是,将做好的GP模型再次发布,输入参数与输出位置均存在于服务器端可访问的位置上,再次执行服务,执行成功!

多次实验的经验如下:

1.      即使设置了scratch workspace与current workspace,对服务器端执行结果没有影响,因为环境设置自动被忽略。

2.      服务的输入参数不被服务器可访问,而输出路径可被服务器端访问,执行会失败!

3.      服务的输出路径不被服务器端可访问,输出参数路径可被服务器端访问,执行会失败!

还有一点,想必大家会疑惑,GP模型的输出参数已经被屏蔽,又如何去自由选择输出的路径呢?

这一点还是钻了一下空子的,只有输出的路径被屏蔽,如果不以输出的路径/文件形式存在,也就是不被检测为输出参数,就可以随心所欲了~

具体的关于这部分模型的构建技巧,后续再给大家整理出来。

------------欢迎来访,拒绝转载----------

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

利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化 分类: Python ArcGIS for desktop ArcGIS for server 2015-08-06 19:49 3人阅读 评论(0) 收藏的更多相关文章

  1. POJ2061 Subsequence 2017-05-25 19:49 83人阅读 评论(0) 收藏

    Subsequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14709   Accepted: 6210 Desc ...

  2. HDU1233 还是畅通工程 2017-04-12 19:49 64人阅读 评论(0) 收藏

    还是畅通工程 Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  3. 滑雪 分类: POJ 2015-07-23 19:48 9人阅读 评论(0) 收藏

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 83276 Accepted: 31159 Description Mich ...

  4. HDU1879 继续畅通工程 2017-04-12 19:12 50人阅读 评论(0) 收藏

    继续畅通工程 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  5. 移植QT到ZedBoard(制作运行库镜像) 交叉编译 分类: ubuntu shell ZedBoard OpenCV 2014-11-08 18:49 219人阅读 评论(0) 收藏

    制作运行库 由于ubuntu的Qt运行库在/usr/local/Trolltech/Qt-4.7.3/下,由makefile可以看到引用运行库是 INCPATH = -I/usr//mkspecs/d ...

  6. Tomcat原理 分类: 原理 2015-06-28 19:26 5人阅读 评论(0) 收藏

    Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码. Web容器的工作过程在下 ...

  7. Matlab调用C程序 分类: Matlab c/c++ 2015-01-06 19:18 464人阅读 评论(0) 收藏

    Matlab是矩阵语言,如果运算可以用矩阵实现,其运算速度非常快.但若运算中涉及到大量循环,Matlab的速度令人难以忍受的.当必须使用for循环且找不到对应的矩阵运算来等效时,可以将耗时长的函数用C ...

  8. 8大排序算法图文讲解 分类: Brush Mode 2014-08-18 11:49 78人阅读 评论(0) 收藏

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  9. /var/log目录下的20个Linux日志文件功能详解 分类: 服务器搭建 linux内核 Raspberry Pi 2015-03-27 19:15 80人阅读 评论(0) 收藏

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...

随机推荐

  1. linux -- Ubuntu Server 安装图形界面

    1.连接网络,你一定要确保网络通畅,如果你和我一样使用Wireless,那先找根网线插上,因为下面的安装都要通过网络下载组件的. 2.进入图形界面的命令是startX,敲击后会有安装xinit的提示. ...

  2. 大型web系统数据缓存设计-l转载

    原文地址:http://www.wmyouxi.com/a/60368.html#ixzz3tGYG9JwC 1. 前言 在高访问量的web系统中,缓存几乎是离不开的:但是一个适当.高效的缓存方案设计 ...

  3. 解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

    这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个ShareP ...

  4. NodeJs生成SVG图形验证码

    背景:短信接口有调用限制,如果受到恶意攻击,很容易就爆掉,所以需要一系列验证机制,后端采用签名加密的方式,而前端要做人机识别,有两个要求: 1)不能使用文本式的验证码,很简单就能拿到 2)所有验证逻辑 ...

  5. Extjs学习笔记--(三,调试技巧)

    FireFox 1.firedebug(略) 2.illuminations 在illuminations页面可也看到缩写的extjs的代码,同时可以进行相应的调试 3,Firedebug AutoC ...

  6. linux下安装pip以及导入第三方包

    python有着强大的第三方库,数量很多且功能强大. 最原始的办法是在官网上下载压缩包,解压,然后运行setup.py来进行安装. 显然这种方法很繁琐,不方便.因此有了包管理工具. pip是一个包管理 ...

  7. Python 入门(十)列表生成式

    生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, ...

  8. SEH分析笔记(X64篇)

    SEH分析笔记(X64篇) v1.0.0 boxcounter 历史: v1.0.0, 2011-11-4:最初版本. [不介意转载,但请注明出处 www.boxcounter.com  附件里有本文 ...

  9. 【mysql】查看版本的四种方法

    1:在终端下:mysql -V. 以下是代码片段: [test@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux- ...

  10. struts2基础---->第一个Struts2程序

    学习struts2的第一个程序,这里只会涉及到简单的代码编写.有一个夜晚我烧毁了所有的记忆,从此我的梦就透明了:有一个早晨我扔掉了所有的昨天,从此我的脚步就轻盈了. Struts的项目