环境:pycharm编辑器;ArcGIS Server10.6.1
(1)调用arcpy.mapping中的CreateMapSDDraft()函数,将地图文档文件(.mxd)转换为服务定义草稿文件(.sddraft),该文件由一个地图文档、服务器信息和一组服务属性组合而成;
(2)调用StageService Tool(.sd,过渡服务工具),编译能成功发布GIS 资源所需的所有必要信息;
(3)使用Upload Service Definition Tool(上传服务定义工具)上传服务定义文件,并将其作为GIS服务发布到指定的GIS服务器。
请注意,完成发布服务的操作需要具备两个条件:一是需要访问一个ArcGIS Server的实例,二是要有必要的发布服务的权限。
# -*- coding: utf-8 -*-
#!/usr/bin/python
import arcpy
from arcpy import env
server_username='siteadmin'
server_password='123456'
env.workspace="E:/learnservice/dynamicservice"
wrkspc="E:/learnservice/dynamicservice/"
#创建server连接
connection_type='ADMINISTER_GIS_SERVICES'
out_folder_path="E:/learnservice/dynamicservice"
out_name='ajServer.ags'
server_url='http://localhost:6080/arcgis/admin'
use_arcgis_desktop_staging_folder=False
staging_folder_path=out_folder_path
arcpy.mapping.CreateGISServerConnectionFile(connection_type,out_folder_path,out_name,server_url,
'ARCGIS_SERVER',use_arcgis_desktop_staging_folder,
staging_folder_path,server_username,server_password,
"SAVE_USERNAME")
#将mxd文档变为服务定义草稿(.sddraft)文件,服务定义草稿文件会在服务定义文件(sd)后自动删除
mapDoc=arcpy.mapping.MapDocument(wrkspc+'ServiceMXD.mxd')
service_name='BeijingSd'
sddraft=wrkspc+service_name+'.sddraft'
sd=wrkspc+service_name+'.sd'
summary='blog use sd'
tags='beijing,map,dynamic'
con=wrkspc+out_name
analysis=arcpy.mapping.CreateMapSDDraft(mapDoc,sddraft,service_name,'ARCGIS_SERVER',
con,True,'blog',summary,tags)
if analysis['errors']=={}:
arcpy.StageService_server(sddraft, sd)
arcpy.UploadServiceDefinition_server(sd, con)
# arcpy.SignOutFromPortal_server()
else:
print analysis['errors']