arcgis arcpy发布地图服务,并且覆盖已有的服务

# -*- 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'])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值