白话陈述之——从python脚本变化解析由路径引起的GP服务运行失败问题
补充一下未完待续的利用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服务运行失败问题的更多相关文章
- 利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化 分类: Python ArcGIS for desktop ArcGIS for server 2015-08-06 19:49 3人阅读 评论(0) 收藏
最近,一直纠结一个问题:做好的GP模型或者脚本在本地运行,一切正常:发布为GP服务以后时而可以运行成功,而更多的是运行失败,甚至不能知晓运行成功后的结果输出在哪里. 铺天盖地的文档告诉我,如下信息: ...
- Windows使用Python统一设置解析器路径
碰到的问题: .py文件放在cgi-bin文件夹下面,这个.py文件都要设置"#!python.exe路径"来告诉CGI如何找解析器解析这个.py的文件,我是想知道这个路径可否统一 ...
- Python爬虫html解析工具beautifulSoup在pycharm中安装及失败的解决办法
1.安装步骤: 首先,你要先进入pycharm的Project Interpreter界面,进入方法是:setting(ctrl+alt+s) ->Project Interpreter,Pro ...
- [转]Python爬虫html解析工具beautifulSoup在pycharm中安装及失败的解决办法
原文地址:https://www.cnblogs.com/yysbolg/p/9040649.html 刚开始学习一门技术最麻烦的问题就是搞定IDE环境,直接在PyCharm里安装BeautifulS ...
- 在Python脚本中调用Django环境(方便、右键运行,可用于ORM测试)
随便创建一个py文件即可: import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODUL ...
- Python脚本打包成exe执行文件
需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...
- Window环境下,PHP调用Python脚本
参考 php调用python脚本*** php 调用 python脚本的方法 解决办法:php提供了许多调用其他脚本或程序的方法,比如exec/system/popen/proc_open/passt ...
- 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷
利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined
- python脚本解析json文件
python脚本解析json文件 没写完.但是有效果.初次尝试,写的比较不简洁... 比较烦的地方在于: 1,中文编码: pSpecs.decode('raw_unicode_escape') 2,花 ...
随机推荐
- mysql 中查看指定表的字段名 (可根据字段变量生成c#后台代码)
select DISTINCT data_type from COLUMNS where table_name='表名' 用ConCat();构造生成代码.....
- 对phpexcel的若干补充
导出excel属性设置 //Include class require_once('Classes/PHPExcel.php'); require_once('Classes/PHPExcel/Wri ...
- glsl 多重纹理
#include"glsl.h" void SHADER::drawBox() { glBegin(GL_QUADS); // Front Face glNormal3f( 0.0 ...
- SQL 2005 如何只安装客户端?
在“注册信息”输入合适的用户名和公司后,点击[下一步],在“要安装的组件”界面中选择要安装的组件:根据我们的需要来选择要安装的组件(各组件的说明如下表),这里我勾选所有的组件:我们可以点击 [高级 ...
- 下载mysql server安装包的时候,不登录oracle账号,实现下载
需求描述: 之前下载mysql安装包的时候,都是使用oracle账号进行登录下载,最近看到可以不登录账号 就实现下载的方法,在此记录下. 操作过程: 1.选择mysql linux服务器上的安装包,点 ...
- centos7 安装zookeeper 集群
data 创建myid 设置1 zookeeper默认端口2181 同步端口 20881 和 30881 设置zoo.cfg文件
- Linux同步网络时间
1.date '+%Y%M%D' 按照格式显示当前日期,结果如下: [root@LAMP ~]# date "+%Y-%m-%d %H:%M:%S" -- :: 2.date -s ...
- UART简介
经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况.其实最有效的调试方法是用示波器观察收发数据的波形.通过观察波形可以确定以下情况: 1.数据是否接收或发送: 2.数据是否正确: 3.波特率是 ...
- Kindeditor放置两个调用readonly错误
开始 需要调用Kindeditor中的readonly的方法,但是一直提示edit is undefined 而editor.readonly(true)又只对第一个对象有效 所以只能换换形式,干脆将 ...
- linux 允许mysql用户远程访问
搭建服务器..怎么导入数据库? 直接来个用户吧 数据库名字(已存在): table 创建mysql新用户,并指定数据库,允许远程访问 mysql用户: test mysql用户密码: test666 ...