补充一下未完待续的利用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. pyqt二进制和图片的转换

    参考:http://blog.chinaunix.net/uid-28194872-id-3516936.html MySQL数据库要想插入图片,其字段需要是BLOB类型.BLOB (binary l ...

  2. Sql server中根据存储过程中的部分信息查找存储过程名称的方法【视图和Function】

    .查询的语句: select a.id,b.name,a.*,b.* from syscomments a join sysobjects b on a.id=b.id where b.xtype=' ...

  3. thinkphp隐藏模块实例

    1.项目中若要隐藏模块的做法 2.配置如下: <?php return array( //'配置项'=>'配置值' 'MODULE_ALLOW_LIST' => array ('Ho ...

  4. Java Error: java.lang.UnsupportedClassVersionError: ...bad major version at offset=6

    问题分析 报这个错误是指你的jar包或者class 的被编译的jdk版本比当前runtime的jdk版本高. 首先,确定你当前的运行版本: Java代码   Java -version java ve ...

  5. 最全Java学习路线图——Java学习指南

    准备篇 适用/适合人群:适合基础小白 目标:掌握JavaSE. ●技术点小节: 1.开发工具的安装配置的介绍 2.JDK安装 3.DOS环境编程 4.Eclipse的安装使用 ●JAVA基础 1.基本 ...

  6. Word揭秘:公式还能这么玩!

    如今办公室里用Word来处理资料文档一种再普遍不过的现象了,学校的老师出试卷也离不开它.用Word编辑公式也是一个非常的技巧,玩转Word的同时,你玩转公式了吗?想要在Word中编辑公式,可不是说说就 ...

  7. mysql通过mysqldump工具,对某个库下的表进行备份

    需求描述: 使用mysqldump工具对某个库下的表进行备份的方法. 操作过程: 1.通过mysqldump工具完成此目的 [mysql@redhat6 MysqlDb_Backup]$ mysqld ...

  8. 【java】java设计模式(5):原型模式(Prototype)

    原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制.克隆,产生一个和原对象类似的新对象.本小结会通过对象的复制,进行讲解.在Java中 ...

  9. 多线程模块:thread

    thread 常见用法如下: thread.start_new_thread(function, args):用于开启一个新的线程,接收两个参数,分别为函数和该函数的参数,相当于开启一个新的线程来执行 ...

  10. mybatis之parameterType传递多个参数

    当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...