ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

上传服务定义

  • 描述
  • 使用方法
  • 语法
  • 代码示例
  • 环境
  • 许可信息

描述

根据过渡的服务定义文件 (.sd) 上传并发布 GIS 服务至特定的 GIS 服务器。

使用方法

  • 该工具可以根据输入服务定义上传并发布 GIS 服务。无论您在何时使用 ArcGIS Desktop 共享服务,都会运行该工具,并且您可以在地理处理结果 窗口中查看结果。

  • 该工具不能上传或发布服务定义草稿文件 (.sddraft)。如果您有服务定义草稿文件,则您可以使用过渡服务工具将其转换成过渡的服务定义文件。

  • 您可以使用登录门户工具连接到 ArcGIS Online 门户。

语法

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
(可选)

更改已分配服务的集群。您必须从指定服务器上的可用集群中选择。

旧版本:

ArcGIS Enterprise 10.5.1 中已弃用了集群。不支持多个集群的服务器将忽略此参数。

String
in_folder_type
(可选)

指定文件夹的源。默认设置是来自服务定义的文件夹。您还可以选择指定服务器上已经存在的文件夹,或在发布该服务时要创建的新文件夹。

  • NEW —使用此参数来创建新文件夹。
  • EXISTING —使用此参数来指定服务器上存在的文件夹。
  • FROM_SERVICE_DEFINITION —使用服务定义中已指定的文件夹。这是默认设置。
String
in_folder
(可选)

该服务的文件夹。默认设置是在服务定义中指定的文件夹。如果您为文件夹类型选择了新建,则请提供新的文件夹名称。如果您为文件夹类型选择了现有,则请选择服务器上的现有文件夹。

String
in_startupType
(可选)

在发布之后立即指定该服务的开始状态。

  • STARTED —该服务在发布之后立即启动。
  • STOPPED —该服务在发布之后不会启动。必须手动启动该服务。
Boolean
in_override
(可选)

指定是否覆盖服务定义中设置的共享属性。这些属性定义了您是否正在与 ArcGIS Online 共享您的服务以及共享的方式。与 ArcGIS Online 共享您的服务可以让其他人使用该服务。

  • OVERRIDE_DEFINITION —将用新值覆盖服务定义中设置的共享属性。
  • USE_DEFINITION —将在发布服务时使用当前在服务定义中设置的共享属性。这是默认设置。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_my_contents
(可选)

指定是否将在 ArcGIS Online 上共享该服务。所有共享服务均可通过“我的内容”提供。即使您只想与组织中的某一特定群组共享,也可通过“我的内容”共享该服务。

  • SHARE_ONLINE —该服务将在 ArcGIS Online 上进行共享。该服务将在“我的内容”下列出。
  • NO_SHARE_ONLINE —该服务不会在 ArcGIS Online 上共享,因此其他 ArcGIS Online 用户和 Web 客户端将无法对其进行访问。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_public
(可选)

指定是否要向公众提供服务。

  • PUBLIC —将与公众共享服务。
  • PRIVATE —将不会与公众共享服务。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_organization
(可选)

指定是否与您的组织共享该服务。

  • SHARE_ORGANIZATION —将与您的组织共享服务。
  • NO_SHARE_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: 是

相关主题

  • 发布工具集概述

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明