Python 上传服务并覆盖同名服务

import arcpy, os, sys
import xml.dom.minidom as DOM
 
arcpy.env.overwriteOutput = True
 
# Update these variables
# The tempPath variable is a relative path which is the same directory
# this script is saved to. You can modify this value to a path on your
# system to hold the temporary files.
serviceName = "importantPoints"
tempPath = sys.path[ 0 ]
path2MXD = r "C:\path2MXD\pts.mxd"
userName = " "
passWord = " "
 
# All paths are built by joining names to the tempPath
SDdraft = os.path.join(tempPath, "tempdraft.sddraft" )
newSDdraft = os.path.join(tempPath, "updatedDraft.sddraft" )
SD = os.path.join(tempPath, serviceName + ".sd" )
 
arcpy.SignInToPortal_server(userName, passWord, "http://www.arcgis.com/" )
mxd = arcpy.mapping.MapDocument(path2MXD)
arcpy.mapping.CreateMapSDDraft(mxd, SDdraft, serviceName, "MY_HOSTED_SERVICES" )
 
# Read the contents of the original SDDraft into an xml parser
doc = DOM.parse(SDdraft)
 
# The follow 5 code pieces modify the SDDraft from a new MapService
# with caching capabilities to a FeatureService with Query,Create,
# Update,Delete,Uploads,Editing capabilities. The first two code
# pieces handle overwriting an existing service. The last three pieces
# change Map to Feature Service, disable caching and set appropriate
# capabilities. You can customize the capabilities by removing items.
# Note you cannot disable Query from a Feature Service.
tagsType = doc.getElementsByTagName( 'Type' )
for tagType in tagsType:
     if tagType.parentNode.tagName = = 'SVCManifest' :
         if tagType.hasChildNodes():
             tagType.firstChild.data = "esriServiceDefinitionType_Replacement"
 
tagsState = doc.getElementsByTagName( 'State' )
for tagState in tagsState:
     if tagState.parentNode.tagName = = 'SVCManifest' :
         if tagState.hasChildNodes():
             tagState.firstChild.data = "esriSDState_Published"
 
# Change service type from map service to feature service
typeNames = doc.getElementsByTagName( 'TypeName' )
for typeName in typeNames:
     if typeName.firstChild.data = = "MapServer" :
         typeName.firstChild.data = "FeatureServer"
 
#Turn off caching
configProps = doc.getElementsByTagName( 'ConfigurationProperties' )[ 0 ]
propArray = configProps.firstChild
propSets = propArray.childNodes
for propSet in propSets:
     keyValues = propSet.childNodes
     for keyValue in keyValues:
         if keyValue.tagName = = 'Key' :
             if keyValue.firstChild.data = = "isCached" :
                 keyValue.nextSibling.firstChild.data = "false"
 
#Turn on feature access capabilities
configProps = doc.getElementsByTagName( 'Info' )[ 0 ]
propArray = configProps.firstChild
propSets = propArray.childNodes
for propSet in propSets:
     keyValues = propSet.childNodes
     for keyValue in keyValues:
         if keyValue.tagName = = 'Key' :
             if keyValue.firstChild.data = = "WebCapabilities" :
                 keyValue.nextSibling.firstChild.data = "Query,Create,Update,Delete,Uploads,Editing"
 
# Write the new draft to disk
f = open (newSDdraft, 'w' )
doc.writexml( f )
f.close()
 
# Analyze the service
analysis = arcpy.mapping.AnalyzeForSD(newSDdraft)
 
if analysis[ 'errors' ] = = {}:
     # Stage the service
     arcpy.StageService_server(newSDdraft, SD)
 
     # Upload the service. The OVERRIDE_DEFINITION parameter allows you to override the
     # sharing properties set in the service definition with new values. In this case,
     # the feature service will be shared to everyone on ArcGIS.com by specifying the
     # SHARE_ONLINE and PUBLIC parameters. Optionally you can share to specific groups
     # using the last parameter, in_groups.
     arcpy.UploadServiceDefinition_server(SD, "My Hosted Services" , serviceName,
                                          " ", " ", " ", " ", " OVERRIDE_DEFINITION "," SHARE_ONLINE",
                                          "PUBLIC" , "SHARE_ORGANIZATION" , "")
 
     print "Uploaded and overwrote service"
 
else :
     # If the sddraft analysis contained errors, display them and quit.
     print analysis[ 'errors' ]


原文http://blogs.esri.com/esri/arcgis/2013/04/23/updating-arcgis-com-hosted-feature-services-with-python/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值