專業(yè)網站制作技術程序員培訓機構哪家好
項目場景:
使用Arcpy腳本發(fā)布GP工具服務,該工具結果生成一個矢量文件,并且需要自動發(fā)布成在線圖層,腳本中已經包含了自動發(fā)布圖層的代碼,本地在ArcgisPro中執(zhí)行成功?,F在需要將該工具發(fā)布成web工具。
問題描述
在發(fā)布成web工具的時候,分析不報錯,在發(fā)布過程中報錯:
錯誤:過渡失敗
后臺查看服務器,提示ErrorMessage: 合并失敗"
原因分析:
檢索資料發(fā)現: Arcgis技術支持:錯誤:過渡失敗
(該網頁中提出的可能原因我代碼中均未出現。但是留個網頁給大家參考解決辦法。)
刪除自動發(fā)布的代碼后,GP工具成功共享。
查看自動發(fā)布的代碼,代碼中包含portalUrl
import arcgis
from arcgis.gis import GIS#發(fā)布三維服務
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這里替換需要發(fā)布的數據,我這里發(fā)布的是一個slpk
slpkitem=gis.content.add({},data=slpkSource)
slpkscenelayer=slpkitem.publish()#發(fā)布成公開的數據
slpkitem.share(everyone=True)
slpkscenelayer.share(everyone=True)print("slpk publish success")
因此,分析原因可能為:
當地理處理服務包含使用 arcgis.gis 模塊中函數的腳本,則可以將字符串變量解釋為文件路徑而不是 URL。由于 string 變量不是有效的文件路徑,因此分析器將返回警告消息。該警告會阻止發(fā)布地理處理服務。該 URL 被視為損壞的數據源,這會導致系統(tǒng)無法將源復制到服務器。
解決方案:
要使用 Python 發(fā)布GP服務,分析器必須將字符串參數解釋為數據源。
通過將 “//” 或 “/” 字符串替換為不同的符號(例如 “??” 或 “?”),并使用 replace() 方法返回正確的 URL 來防止這種情況。
#發(fā)布三維服務
portalUrl=r"https??nidemenhu.com.cn?geoscene" #你的門戶網址
portalUrl = portalUrl.replace('??', '://')
portalUrl = portalUrl.replace('?', '/')
結果成功發(fā)布共享工具。