补充一下未完待续的利用Python分析GP服务运行结果的输出路径
& 实现服务输出路径的本地化
,这篇博客中主要介绍了如何实现将GP服务生成的结果输出至本地及输入输出路径导致GP服务运行失败的问题。

下面,我将从另一个角度解析一下由路径导致的服务运行失败问题。

---------------华丽丽的分割线--------------

首先,我写了一段脚本,实现的是对一个栅格数据进行一系列处理,然后将其输出到mxd中,在本地运行一切正常。以下摘自脚本的一部分:

接下来,我将这个运行成功的工具发布为GP服务,并且以服务的方式再次执行GP服务,报如下错误:

根据Server提供的log日志信息我们可以很清楚的看到这个GP服务返回的错误信息,在给出的冗长的服务结果的输出路径中,.py的python脚本在108行发生错误,很自然的,找出我的脚本,定位至108行,查看与分析arcpy.mappingLayer(...)的语句的合理性。然而定位108行以后语句并未定位至这一行语句上,很神奇的事情。

于是,老老实实的找到GP服务的路径(报错信息提示的路径),找到打包以后的服务脚本,打开查看,惊奇的发现,发布为服务的脚本与本地写好的脚本并不完全相同,部分截图如下:

红色部分是由服务器自动增加的部分,也就是说脚本发生了变化:服务器自动定义了一个路径:

那么定义的这个路径服务器又是怎样应用的呢?如下:

也就是说由arcpy.MakeRasterLayer_managerment生成的layer文件系统会将它存放在指定的临时文件夹中,当arcpy.mapping.Layer()时系统无法找到这个存放在scratchFolder中的layer临时文件,也就无法写入mxd中了。那么该怎样解决呢?很简单:

<span style="font-size:18px;">        </span><span style="font-size:14px;"># Make a Raster layer from the OutputRaster
lyrraster = os.path.join(OutputRaster,"P_Raster")
arcpy.MakeRasterLayer_management(OutputRaster, lyrraster,"","","") # Copy a map document template
newMxdPath = os.path.join(Outputpath, "Projection.mxd")
arcpy.Copy_management(mxdTemplate, newMxdPath, "") # Add Raster layer into primary map document
mxd = arcpy.mapping.MapDocument(newMxdPath)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
addLayer = arcpy.mapping.Layer(lyrraster)
arcpy.mapping.AddLayer(df, addLayer, "TOP")
mxd.title = "Warp_Projecton"
mxd.summary = "Create a correct JPG that has a right spatial reference,then as a tuntime content service"
mxd.description = "Create a correct JPG that has a right spatial reference,then as a tuntime content service"
mxd.tags = "Projection;Warp"
mxd.save()
del mxd</span><span style="font-size:18px;">
</span>

将rasterLayer的存放路径放在一个指定的位置上,确保服务运行可以找到就okay了。

当然,并不是所有的GP服务运行时都会遇到这个问题,但是当遇到路径问题引发的GP服务运行失败时,那么就可以考虑通过这个方法去分析解决了。

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

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

白话陈述之——从python脚本变化解析由路径引起的GP服务运行失败问题的更多相关文章

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

    最近,一直纠结一个问题:做好的GP模型或者脚本在本地运行,一切正常:发布为GP服务以后时而可以运行成功,而更多的是运行失败,甚至不能知晓运行成功后的结果输出在哪里. 铺天盖地的文档告诉我,如下信息: ...

  2. Windows使用Python统一设置解析器路径

    碰到的问题: .py文件放在cgi-bin文件夹下面,这个.py文件都要设置"#!python.exe路径"来告诉CGI如何找解析器解析这个.py的文件,我是想知道这个路径可否统一 ...

  3. Python爬虫html解析工具beautifulSoup在pycharm中安装及失败的解决办法

    1.安装步骤: 首先,你要先进入pycharm的Project Interpreter界面,进入方法是:setting(ctrl+alt+s) ->Project Interpreter,Pro ...

  4. [转]Python爬虫html解析工具beautifulSoup在pycharm中安装及失败的解决办法

    原文地址:https://www.cnblogs.com/yysbolg/p/9040649.html 刚开始学习一门技术最麻烦的问题就是搞定IDE环境,直接在PyCharm里安装BeautifulS ...

  5. 在Python脚本中调用Django环境(方便、右键运行,可用于ORM测试)

    随便创建一个py文件即可: import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODUL ...

  6. Python脚本打包成exe执行文件

    需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...

  7. Window环境下,PHP调用Python脚本

    参考 php调用python脚本*** php 调用 python脚本的方法 解决办法:php提供了许多调用其他脚本或程序的方法,比如exec/system/popen/proc_open/passt ...

  8. 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷

    利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined

  9. python脚本解析json文件

    python脚本解析json文件 没写完.但是有效果.初次尝试,写的比较不简洁... 比较烦的地方在于: 1,中文编码: pSpecs.decode('raw_unicode_escape') 2,花 ...

随机推荐

  1. perl 中的哈希赋值

    在perl 中,通过代码动态的给哈希赋值,是最常见的应用场景,但是有些情况下,我们事先知道一些信息,当需要把这些信息存放进一个哈希的时候,直接给哈希赋值就好: 哈希的key不用说,就是一个字符串,关键 ...

  2. Shader开发之三大着色器

    固定功能管线着色器Fixed Function Shaders 固定功能管线着色器的关键代码一般都在Pass的材质设置Material{}和纹理设置SetTexture{}部分. Shader &qu ...

  3. 设置同样字体大小,chrome浏览器有时字体偏大的解决办法(转)

    本文是找了在网上搜了好久才找到非常棒的一篇文章,很好的解决了这个问题. 原文地址:https://github.com/amfe/article/issues/10 这个特性被称做「Text Auto ...

  4. jquery获取点击控件的绝对位置简单实例

    在使用jquery的过程中,想取得当前点击input的绝对位置而去显示一个div,jquery本身提供offset和position这个两个方法,但position官方解释是relative to t ...

  5. Golang 语言安装

    Ubuntu: 从源代码编译安装 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 apt-get install bison gawk gcc libc6-d ...

  6. #include”* .h“ 在查找预编译头使用时跳过

    warning C4627: “#include <windows.h>”:  在查找预编译头使用时跳过 解决办法: 原因是没有在cpp文件最前一行添加没有添加 #include &quo ...

  7. java util.Date和sql.Date转换(时区转换)

    public static Timestamp zoneTtime(String time) throws Exception{ time= "2018-08-01T10:01:21.905 ...

  8. Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

    上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,仅仅看到了一位博友在以下留言期待下一篇文章的发表,为了这小小的唯一支持.我决定继续把后面的8个要点介绍一下,自己也潜心反 ...

  9. 超全面的JavaWeb笔记day21<过滤器>

    1.过滤器的原理 2.实现过滤器 写一个类实现javax.servlet.Filter接口 在web.xml中对Filter进行配置 3.Filter接口 void init(FilterConfig ...

  10. POJ 3211 Washing Cloths(01背包变形)

    Q: 01背包最后返回什么 dp[v], v 是多少? A: 普通01背包需要遍历, 从大到小. 但此题因为物品的总重量必定大于背包容量, 所以直接返回 dp[V] 即可 update 2014年3月 ...