上传服务定义 (Server)
摘要
根据过渡的服务定义 (.sd) 文件上传并发布 GIS 服务至特定的 GIS 服务器。
用法
-
该工具可以根据输入服务定义上传并发布 GIS 服务。无论您在何时使用 ArcGIS for Desktop 共享服务,都会运行该工具,并且您可以在地理处理结果 窗口中查看结果。
该工具不能上传或发布服务定义草稿 (.sddraft) 文件。如果您有服务定义草稿,则您可以使用过渡服务工具将其转换成过渡的服务定义。
您可以使用 ArcGIS for Desktop 通过在 ArcGIS for Desktop 中建立与 ArcGIS Server 的发布者连接来创建 ArcGIS for Server 连接。
您可以使用登录门户工具连接到 ArcGIS Online 门户。
语法
参数 | 说明 | 数据类型 |
in_sd_file |
服务定义 (.sd) 包含发布 GIS 服务所需的所有信息。 | File |
in_server |
您可以使用在目录 窗口中 GIS 服务器节点下列出的 ArcGIS for Server 连接,或者您可以导航到您可能在其中存储了服务器连接文件的其他文件夹。 如果您连接到 ArcGIS Online,请确保在您所输入的服务器连接的我的托管服务中,每个单词均采用大写字母且每个单词之间都留有空格。 | ServerConnection |
in_service_name (可选) |
使用此参数以用新名称来覆盖当前在服务定义中指定的服务名称。 | String |
in_cluster (可选) |
如果您要更改为其分配了服务的集群,则可以使用此参数。您必须从指定服务器上的可用聚类中选择。 | String |
in_folder_type [in_folder_type,...] (可选) |
文件夹类型用于确定文件夹来源。默认设置是从服务定义中获取文件夹。您还可以选择获取指定服务器上已经存在的一系列文件夹,或者您可以在发布该服务时指定要创建的新文件夹。
| String |
in_folder (可选) |
使用此参数来指定服务所对应的文件夹。默认设置是使用服务定义中指定的文件夹。如果您选择了 NEW 文件夹类型,则使用此参数来输入新的文件夹名称。如果您选择了 EXISTING 文件夹类型,则可从服务器上的已有文件夹中选择。 | String |
in_startupType | 使用此参数在发布之后立即确定该服务的开始/停止状态。
| Boolean |
in_override (可选) | 如果您要覆盖在服务定义中设置的共享属性,请使用此参数。这些属性定义了您是否正在与 ArcGIS Online 共享您的服务以及共享的方式。与 ArcGIS Online 共享您的服务可以让其他人使用该服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_my_contents (可选) | 所有共享服务均可通过“我的内容”提供。即使您只想与组织中的某一特定组共享,也可通过“我的内容”共享该服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_public (可选) | 选择是否要向公共提供您的服务。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_organization (可选) | 您可以将您的服务与您所在的组织共享。
要覆盖共享属性,您必须登录 ArcGIS Online。 | Boolean |
in_groups [group_name,...] (可选) | 要与之共享服务的组的名称列表。 要覆盖共享属性,您必须登录 ArcGIS Online。 | String |
代码实例
将服务定义上传并发布到指定服务器。
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.UploadServiceDefinition_server("myMapService.sd", "GIS Servers/myServerConnection")
# 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, Spatial Data 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)
以下脚本可在某个文件夹中的所有服务定义中循环,并将每个服务定义都发布到 ArcGIS Server。
# Name: UploadServiceDefinition_example3.py
# Description: Upload and publish all service definitions contained in a folder
# Requirements: Connection to an ArcGIS Server, Spatial Data 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
以下脚本可上传现有的服务定义并可使用可选参数对该服务的某些属性进行修改。
# 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, Spatial Data 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
from arcpy import env
import xml.dom.minidom as DOM
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inServiceDefinitionDraft = "myMapService.sddraft"
outServiceDefinition = "myMapService.sd"
newType = 'esriServiceDefinitionType_Replacement'
xml = draftPath + in_sd_draft
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)