【问题解决】ArcgisGP工具使用GIS模块自动发布图层报错:过渡失败

项目场景:

使用Arcpy脚本发布GP工具服务 ,该工具结果生成一个矢量文件,并且需要自动发布成在线图层,脚本中已经包含了自动发布图层的代码,本地在ArcgisPro中执行成功。现在需要将该工具发布成web工具。

问题描述

在发布成web工具的时候,分析 不报错,在发布过程中报错:

错误:过渡失败

后台查看服务器,提示ErrorMessage: 合并失败"


原因分析:

检索资料发现: Arcgis技术支持:错误:过渡失败


(该网页中提出的可能原因我代码中均未出现。但是留个网页给大家参考解决办法。)

删除自动发布的代码后,GP工具成功共享。

查看自动发布的代码,代码中包含portalUrl

python 复制代码
import arcgis
from arcgis.gis import GIS

#发布三维服务
portalUrl=r"https://nidemenhu.com.cn/geoscene" #你的门户网址
portalUsername="admin" #你的用户名
portalpassword="nidemima" #你的密码

#返回活动门户的URL
arcpy.GetActivePortalURL()
print(arcpy.GetPortalInfo(portal_URL=arcpy.GetActivePortalURL()))
#登录portal
arcpy.SignInToPortal(portalUrl,portalUsername,portalpassword)

gis=GIS(portalUrl,portalUsername,portalpassword,verify_cert=False)
#data这里替换需要发布的数据,我这里发布的是一个slpk
slpkitem=gis.content.add({},data=slpkSource) 
slpkscenelayer=slpkitem.publish()

#发布成公开的数据
slpkitem.share(everyone=True)
slpkscenelayer.share(everyone=True)

print("slpk publish success")

因此,分析原因可能为:

当地理处理服务包含使用 arcgis.gis 模块中函数的脚本,则可以将字符串变量解释为文件路径而不是 URL。由于 string 变量不是有效的文件路径因此分析器将返回警告消息 。该警告会阻止发布地理处理服务。该 URL 被视为损坏的数据源,这会导致系统无法将源复制到服务器。

解决方案:

要使用 Python 发布GP服务,分析器必须将字符串参数解释为数据源。

通过将 "//" 或 "/" 字符串替换为不同的符号(例如 "??" 或 "?"),并使用 replace() 方法返回正确的 URL 来防止这种情况。

python 复制代码
#发布三维服务
portalUrl=r"https??nidemenhu.com.cn?geoscene" #你的门户网址
portalUrl = portalUrl.replace('??', '://')
portalUrl = portalUrl.replace('?', '/')

结果成功发布共享工具。

相关推荐
☆璇38 分钟前
【数据结构】排序
c语言·开发语言·数据结构·算法·排序算法
我要成为c嘎嘎大王39 分钟前
【C++】初识C++(1)
开发语言·c++
良木林43 分钟前
JavaScript书写基础和基本数据类型
开发语言·前端·javascript
艾莉丝努力练剑4 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
橡晟7 小时前
深度学习入门:让神经网络变得“深不可测“⚡(二)
人工智能·python·深度学习·机器学习·计算机视觉
墨尘游子7 小时前
神经网络的层与块
人工智能·python·深度学习·机器学习
倔强青铜38 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
u_topian8 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
企鹅与蟒蛇8 小时前
Ubuntu-25.04 Wayland桌面环境安装Anaconda3之后无法启动anaconda-navigator问题解决
linux·运维·python·ubuntu·anaconda
autobaba8 小时前
编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
chrome·python·selenium·rpa