Пример. Публикация картографического сервиса из документа карты (MXD)
В этом примере для публикации нового картографического сервиса используется указанный путь к документу карты (MXD) и путь к файлу подключения ArcGIS for Server. Файл подключения имеет расширение .ags и создается каждый раз при подключении к сайту ArcGIS for Server с помощью окна Каталога в ArcMap. Этому скрипту не требуется токен администратора или издателя, поскольку в нем используется файл подключения.
Для запуска этого примера потребуется заменить локальные переменные в верхней части скрипта на пути к своему документу карты и файлу подключения. Также можно изменить имя, сводку и метки, связанные с сервисом.
# Publishes a service to machine myserver using USA.mxd
# A connection to ArcGIS Server must be established in the
# Catalog window of ArcMap before running this script
import arcpy
# Define local variables
wrkspc = 'C:/data'
mapDoc = arcpy.mapping.MapDocument(wrkspc + '/USA/USA.mxd')
# Provide path to connection file
# To create this file, right-click a folder in the Catalog window and
# click New > ArcGIS Server Connection
con = wrkspc + '/connections/arcgis on myserver_6080 (publisher).ags'
# Provide other service details
service = 'USA'
sddraft = wrkspc + service + '.sddraft'
sd = wrkspc + service + '.sd'
summary = 'General reference map of the USA'
tags = 'USA'
# Create service definition draft
arcpy.mapping.CreateMapSDDraft(mapDoc, sddraft, service, 'ARCGIS_SERVER', con, True, None, summary, tags)
# Analyze the service definition draft
analysis = arcpy.mapping.AnalyzeForSD(sddraft)
# Print errors, warnings, and messages returned from the analysis
print "The following information was returned during analysis of the MXD:"
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,
print
# Stage and upload the service if the sddraft analysis did not contain errors
if analysis['errors'] == {}:
# Execute StageService. This creates the service definition.
arcpy.StageService_server(sddraft, sd)
# Execute UploadServiceDefinition. This uploads the service definition and publishes the service.
arcpy.UploadServiceDefinition_server(sd, con)
print "Service successfully published"
else:
print "Service could not be published because errors were found during analysis."
print arcpy.GetMessages()