# -*- coding: utf-8 -*-
#以防中文报错
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"E:\python\数据"
mxdpath=r"E:\python\数据\无标题.mxd"
service = 'raster1'
sddraft = r'E:\python\数据\无标题.sddraft'
newSDdraft = r'E:\python\数据\无标题1.sddraft'
sd = r'E:\python\数据\无标题.sd'
con=r"C:\Users\Administrator\AppData\Roaming\ESRI\Desktop10.4\ArcCatalog\arcgis on localhost_6080 (publisher).ags"
mxd = mapping.MapDocument(mxdpath)
#清空历史发布信息
#files = os.listdir(folder)
#for f in files:
# if f.endswith(".sd") or f.endswith(".sddraft"):
# os.remove(f)
mapping.CreateMapSDDraft(mxd, sddraft, service)
#读取sddraft文件覆盖原有
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)
inServiceName = ""
inCluster = ""
inFolderType = ""
inFolder = ""
inStartup = ""
inOverride = "OVERRIDE_DEFINITION"
inMyContents = ""
inPublic = ""
inOrganization = ""
inGroups = ""
if analysis['errors'] == {}:
#execute StageService
arcpy.StageService_server(sddraft, sd)
#execute UploadServiceDefinition
#arcpy.UploadServiceDefinition_server(sd, con)
arcpy.UploadServiceDefinition_server(sd, con, inServiceName,
inCluster, inFolderType, inFolder,
inStartup, inOverride, inMyContents,
inPublic, inOrganization, inGroups)
print arcpy.GetMessages()
else:
#if the sddraft analysis contained errors, display them
print(analysis['errors'])