描述
根据过渡的服务定义文件 (.sd) 上传并发布 GIS 服务至特定的 GIS 服务器。
使用方法
语法
arcpy.server.UploadServiceDefinition(in_sd_file, in_server, {in_service_name}, {in_cluster}, {in_folder_type}, {in_folder}, {in_startupType}, {in_override}, {in_my_contents}, {in_public}, {in_organization}, {in_groups})
参数 | 说明 | 数据类型 |
in_sd_file | 包含发布 GIS 服务所需的所有信息的服务定义文件 (.sd)。 | File |
in_server | 服务器连接。您可以使用在目录 窗口中 GIS 服务器节点下列出的 ArcGIS Server 连接,也可以浏览到您用于存储服务器连接文件的文件夹。 如果您连接到 ArcGIS Online,请确保在您所输入的服务器连接的我的托管服务中,每个单词均采用大写字母且每个单词之间都留有空格。 | ServerConnection |
in_service_name (可选) | 用新名称来覆盖当前在服务定义中指定的服务名称。 | String |
in_cluster (可选) | 更改已分配服务的集群。您必须从指定服务器上的可用集群中选择。 | String |
in_folder_type (可选) | 指定文件夹的源。默认设置是来自服务定义的文件夹。您还可以选择指定服务器上已经存在的文件夹,或在发布该服务时要创建的新文件夹。
| String |
in_folder (可选) | 该服务的文件夹。默认设置是在服务定义中指定的文件夹。如果您为文件夹类型选择了新建,则请提供新的文件夹名称。如果您为文件夹类型选择了现有,则请选择服务器上的现有文件夹。 | String |
in_startupType (可选) | 在发布之后立即指定该服务的开始状态。
| Boolean |
in_override (可选) | 指定是否覆盖服务定义中设置的共享属性。这些属性定义了您是否正在与 ArcGIS Online 共享您的服务以及共享的方式。与 ArcGIS Online 共享您的服务可以让其他人使用该服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_my_contents (可选) | 指定是否将在 ArcGIS Online 上共享该服务。所有共享服务均可通过“我的内容”提供。即使您只想与组织中的某一特定群组共享,也可通过“我的内容”共享该服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_public (可选) | 指定是否要向公众提供服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_organization (可选) | 指定是否与您的组织共享该服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_groups [group_name,...] (可选) | 将用于共享服务的群组名称列表。 要覆盖共享属性,您必须登录 ArcGIS Online。 | String |
代码示例
上传服务定义 (UploadServiceDefinition) 示例(Python 窗口)
将服务定义上传并发布到指定服务器。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.UploadServiceDefinition_server("myMapService.sd", "GIS Servers/myServerConnection")
发布工作流示例(独立脚本)
以下脚本演示了使用 Stage Service 和 Upload Service Definition 工具的发布工作流。
# Name: StageService_UploadServiceDefinition_example2.py
# Description: Use a service definition draft to create a service definition
# and then upload and publish that service definition.
# Requirements: Connection to an ArcGIS Server or My Hosted Services
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inServiceDefinitionDraft = "myMapService.sddraft"
outServiceDefinition = "myMapService.sd"
# Execute StageService
arcpy.StageService_server(inServiceDefinitionDraft, outServiceDefinition)
# Set local variables
inSdFile = outServiceDefinition
inServer = "GIS Servers/myServerConnection"
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer)
上传服务定义 (UploadServiceDefinition) 示例 2(独立脚本)
以下脚本可在某个文件夹中的所有服务定义中循环,并将每个服务定义都发布到 ArcGIS Server。
# Name: UploadServiceDefinition_example3.py
# Description: Upload and publish all service definitions contained in a folder
# Requirements: Connection to an ArcGIS Server or My Hosted Services
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variable
inServer = "myServerConnection.ags"
print "Publishing to " + inServer
# Find all the service definitions (.sd or .sds) in a workspace and
# upload\publish each one to an ArcGIS Server, Spaital Data Server, or My Hosted Services
sdList = arcpy.ListFiles("*.sd")
for inSdFile in sdList:
print "Publishing " + sdName
try:
arcpy.UploadServiceDefinition_server(inSdFile, inServer)
except Exception, e:
print e.message
UploadServiceDefinition 示例 3(独立脚本)
以下脚本可上传现有的服务定义并可使用可选参数对该服务的属性进行修改。
# Name: UploadServiceDefinition_example5.py
# Description: Uploads an existing service definition and uses optional
# parameters to modify some details of the service
# Requirements: Connection to an ArcGIS Server or My Hosted Services
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inSdFile = "myMapService.sd"
inServer = "myServerConnection.ags"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "NEW"
inFolder = "newFolder"
inStartup = "STOPPED"
inOverride = "OVERRIDE_DEFINITION"
inMyContents = "SHARE_ONLINE"
inPublic = "PRIVATE"
inOrganization = "NO_SHARE_ORGANIZATION"
inGroups = "My Group"
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName,
inCluster, inFolderType, inFolder,
inStartup, inOverride, inMyContents,
inPublic, inOrganization, inGroups)
覆盖服务示例(独立脚本)
以下脚本可创建并上传能用于覆盖现有服务的服务定义。
# Name: StageService_example3_UploadServiceDefinition_example4.py
# Description: Creates a service definition that can be used to overwrite an
# existing service. When this service definition is published it
# will overwrite the existing service.
# Requirements: Connection to an ArcGIS Server, Spatial Data Server,
# or My Hosted Services
# Import system modules
import arcpy
import xml.dom.minidom as DOM
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
inServiceDefinitionDraft = "myMapService.sddraft"
outServiceDefinition = "myMapService.sd"
newType = 'esriServiceDefinitionType_Replacement'
xml = os.path.join(arcpy.env.workspace, inServiceDefinitionDraft)
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()
# Execute StageService
arcpy.StageService_server(inServiceDefinitionDraft, outServiceDefinition)
# Set local variables
inSdFile = outServiceDefinition
inServer = "GIS Servers/myServerConnection"
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer)
环境
此工具不使用任何地理处理环境。
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是