补充:在发布地图服务前,首先需要连接到ArcGIS for Server服务器,需要利用到arcpy.mapping.CreateGISServerConnectionFile接口,,在ArcGIS的帮助文档中也有详细说明,代码如下:
import arcpy
outdir = r'C:\Users\user\Desktop\SeaGIS\Server'
out_folder_path = outdir
out_name = 'connection.ags'
server_url = 'https://localhost:6443/arcgis/admin'
use_arcgis_desktop_staging_folder = False
staging_folder_path = outdir
username = 'siteadmin'
password = 'arcgis'
arcpy.mapping.CreateGISServerConnectionFile("PUBLISH_GIS_SERVICES",
out_folder_path,
out_name,
server_url,
"ARCGIS_SERVER",
use_arcgis_desktop_staging_folder,
staging_folder_path,
username,
password,
"SAVE_USERNAME")
相关函数说明见ArcGIS帮助文档
import arcpy
import os
def publishServer(mxd):
# define local variables
wrkspc = 'C:/Users/user/Desktop/SeaGIS'
mapDoc = arcpy.mapping.MapDocument(wrkspc + '/mxds' + '/{}'.format(mxd))
con = wrkspc + '/Server' + '/connection.ags'
service = mxd[0:-4]
sddraft = wrkspc + '/Server' + '/' + service + '.sddraft'
sd = wrkspc + '/Server' + '/' + service + '.sd'
summary = '{} Ser Wave'.format(mxd[0:-4])
tags = 'Sea Wave'
# create service definition draft
analysis = arcpy.mapping.CreateMapSDDraft(mapDoc, sddraft, service, 'ARCGIS_SERVER',
con, True, 'SeaGIS', summary, tags)
# stage and upload the service if the sddraft analysis did not contain errors
if analysis['errors'] == {}:
# Execute StageService
arcpy.StageService_server(sddraft, sd)
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(sd, con)
print '{} has been published!'.format(mxd)
else:
# if the sddraft analysis contained errors, display them
print analysis['errors']
mds = os.listdir('./mxds')
for md in mds:
publishServer(md)
print 'finished!'