arcpy发布地图服务
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import arcpy,os
import arcpy.mapping as mapping
import xml.dom.minidom as DOM
arcpy.env.overwriteOutput = True
folder = r"F:\Project\ThireeDiao\SpatialDatabaseManagementSystem\bin\Debug\Data\Tmp"
mxdpath=r"C:\Users\Administrator\Desktop\HPGTDCXT_MAP.mxd"
service = os.path.basename(mxdpath).split('.')[0]
sddraft = folder+"\\"+os.path.join(os.path.basename(mxdpath).split('.')[0]+'.sddraft')
newSDdraft = folder+"\\"+os.path.join( os.path.basename(mxdpath).split('.')[0]+'.sddraft')
sd =folder+"\\"+os.path.join( os.path.basename(mxdpath).split('.')[0]+'.sd')
arcpy.SetProgressor("step", "Start the publishing service ...", 0,4, 1)
arcpy.AddMessage("Start the publishing service ...")
out_folder_path = folder
out_name = 'arcgis192.168.2.228.ags'
server_url = 'http://192.168.2.228:6080/arcgis/admin'
use_arcgis_desktop_staging_folder = False
staging_folder_path = out_folder_path
username = 'arcgis'
password = 'yckj'
arcpy.mapping.CreateGISServerConnectionFile("ADMINISTER_GIS_SERVICES",out_folder_path,out_name, server_url,"ARCGIS_SERVER",use_arcgis_desktop_staging_folder, staging_folder_path, username, password,"SAVE_USERNAME")
arcpy.SetProgressorLabel("Loading CreateGISServerConnectionFile...")
arcpy.AddMessage("Loading CreateGISServerConnectionFile...")
con=out_folder_path+"\\"+os.path.join(out_name)
mxd = mapping.MapDocument(mxdpath)
files = os.listdir(folder)
for f in files:
if f.endswith(".sd") or f.endswith(".sddraft"):
os.remove(f)
summary = 'fw'
tags = 'fw'
arcpy.mapping.CreateMapSDDraft(mxd, sddraft, service, 'ARCGIS_SERVER', con, True, None, summary, tags)
arcpy.SetProgressorLabel("Loading CreateMapSDDraft...")
arcpy.AddMessage("Loading CreateMapSDDraft...")
newType = "esriServiceDefinitionType_Replacement"
xml = sddraft
doc = DOM.parse(xml)
descriptions = doc.getElementsByTagName("Type")
for desc in descriptions:
if desc.parentNode.tagName == "SVCManifest":
if desc.hasChildNodes():
desc.firstChild.data = newType
outXml = xml
f = open(outXml,"w")
doc.writexml(f)
f.close()
analysis = mapping.AnalyzeForSD(sddraft)
for key in ('messages', 'warnings', 'errors'):
print("----" + key.upper() + "----")
vars = analysis[key]
for ((message, code), layerlist) in vars.iteritems():
print " ", message, " (CODE %i)" % code
print(" applies to:")
for layer in layerlist:
print(layer.name)
arcpy.SetProgressorLabel("Loading AnalyzeForSD...")
arcpy.AddMessage("Loading AnalyzeForSD...")
inServiceName = ""
inCluster = ""
inFolderType = ""
inFolder = ""
inStartup = ""
inOverride = "OVERRIDE_DEFINITION"
inMyContents = ""
inPublic = ""
inOrganization = ""
inGroups = ""
if analysis['errors'] == {}:
arcpy.StageService_server(sddraft, sd)
arcpy.UploadServiceDefinition_server(sd, con, inServiceName,inCluster, inFolderType, inFolder, inStartup, inOverride, inMyContents,inPublic, inOrganization, inGroups)
arcpy.AddMessage("code=200")
print arcpy.GetMessages()
else:
print(analysis['errors'])
arcpy.SetProgressorLabel("Loading UploadServiceDefinition_server...")
arcpy.AddMessage("Loading UploadServiceDefinition_server...")
arcpy.AddMessage("!!!!!!!!!!!!!!!!!!!!!Success!!!!!!!!!!!!!!!!!!!!!!")
arcpy.SetProgressorPosition()
arcpy.ResetProgressor()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程