描述
将 Web 图层、Web 工具或服务上传并共享至 ArcGIS Online、ArcGIS Enterprise 或 ArcGIS Server。
使用方法
语法
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 | 服务定义文件 (.sd) 包含共享 Web 图层、Web 工具或服务所需的所有信息。 | File |
in_server | 表示服务器类型的字符串。支持的服务器类型如下:
| ServerConnection |
in_service_name (可选) | 使用此选项以用新名称来覆盖当前在服务定义中指定的服务名称。 | String |
in_cluster (可选) | 如果您要更改已分配服务的集群,则可以使用此选项。您必须从指定服务器上的可用集群中选择。 旧版本:ArcGIS Enterprise 10.5.1 中已弃用了集群。对于不支持多个集群的服务器,此参数将被忽略。 | String |
in_folder_type (可选) | 指定用于确定文件夹来源的文件夹类型。默认设置是从服务定义中获取文件夹。您还可以选择获取指定在线服务器上已经存在的一系列文件夹,或者您可以在共享此 Web 图层或服务时指定创建新的文件夹。
| String |
in_folder (可选) | 使用此选项来指定 Web 图层或服务所对应的文件夹。默认设置是使用服务定义中指定的文件夹。如果您将 NEW 指定为 in_folder_type,则使用此参数来输入新的文件夹名称。如果您将 EXISTING 指定为 in_folder_type,则可从服务器上的现有文件夹中选择。 | String |
in_startupType (可选) | 使用此选项在发布之后立即指定该服务的开始或停止状态。
| Boolean |
in_override (可选) | 要覆盖在服务定义中设置的共享属性,请使用此参数。这些属性定义了您是否正在与 ArcGIS Online 或 ArcGIS Enterprise 共享您的 Web 图层或 Web 工具以及共享的方式。共享您的 Web 图层或 Web 工具可以让其他人使用该图层。
要覆盖共享属性,您必须登录 ArcGIS Online 或 ArcGIS Enterprise。 共享到 ArcGIS Server 时,不支持此参数。 | Boolean |
in_my_contents (可选) | 指定 web 图层和 Web 工具的共享方式。所有共享 Web 图层和 Web 工具均可通过我的内容提供。即使您只想与组织中的某一特定群组共享,也可通过我的内容共享该 Web 图层或 Web 工具。
要覆盖共享属性,您必须登录门户。 共享到 ArcGIS Server 时,不支持此参数。 | Boolean |
in_public (可选) | 指定是否向公众提供 web 图层或 Web 工具。
要覆盖共享属性,您必须登录 ArcGIS Online 或 ArcGIS Enterprise。 共享到 ArcGIS Server 时,不支持此参数。 | Boolean |
in_organization (可选) | 指定是否将 web 图层或 Web 工具与您所在的组织共享。
要覆盖共享属性,您必须登录 ArcGIS Online 或 ArcGIS Enterprise。 共享到 ArcGIS Server 时,不支持此参数。 | Boolean |
in_groups [group_name,...] (可选) | 要将 Web 图层或 Web 工具共享给的群组的名称列表。 要覆盖共享属性,您必须登录 ArcGIS Online 或 ArcGIS Enterprise。 共享到 ArcGIS Server 时,不支持此参数。 | String |
派生输出
名称 | 说明 | 数据类型 |
out_soap_svc_url | 发布到服务器的服务的 SOAP URL。 | 字符串 |
out_rest_svc_url | 发布到服务器的服务的 REST URL。 | 字符串 |
out_mapServiceItemID | 共享到门户的地图图像图层的项目 ID。 | 字符串 |
out_featServiceItemID | 共享到门户的托管要素服务图层的项目 ID。 | 字符串 |
out_cached_service | 启用缓存的影像服务或地图服务。 | 影像服务 |
out_featureServiceURL | 共享到门户的托管要素图层的 REST URL。 | 字符串 |
out_mapServiceURL | 共享到门户的地图图像图层的 REST URL。 | 字符串 |
out_LayerIDMap | 已发布图层及其各自的 ID 采用 Layer1|ID1;Layer2|ID2; 的格式,以此类推。 | 字符串 |
out_standaloneTableIDMap | 已发布独立表及其各自的 ID 采用 Table1|ID1;Table2|ID2; 的格式,以此类推。 | 字符串 |
out_vectorTileServiceID | 矢量切片服务的项目 ID。 | 字符串 |
out_vectorTileServiceURL | 矢量切片服务的 REST URL。 | 字符串 |
代码示例
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service = "TileSharingDraftExample"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps("World")[0]
lyrs = []
lyrs.append(m.listLayers('cities')[0])
lyrs.append(m.listLayers('counties')[0])
# Create TileSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("HOSTING_SERVER", "TILE", service, lyrs)
sharing_draft.summary = "My Summary"
sharing_draft.tags = "My Tags"
sharing_draft.description = "My Description"
sharing_draft.credits = "My Credits"
sharing_draft.useLimitations = "My Use Limitations"
# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)
# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "My Hosted Services")
print("Successfully Uploaded service.")
以下脚本可上传现有的服务定义并可使用可选参数对该服务的属性进行修改。
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
inSdFile = "myMapService.sd"
inServer = "myServerConnection.ags"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "NEW"
inFolder = "newFolder"
inStartup = "STOPPED"
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName,
inCluster, inFolderType, inFolder,
inStartup)
以下脚本可将现有的服务定义上传到 ArcGIS Online 或 ArcGIS Enterprise 并可使用可选参数对该服务的属性进行修改。
import arcpy
# Set environment settings arcpy.env.workspace = "C:/data"
# Set local variables inSdFile = "myMapService.sd"
inServer = "HOSTING_SERVER"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "EXISTING"
inFolder = "existingFolder"
inStartup = "STOPPED"
inOverride = "OVERRIDE_DEFINITION"
inMyContents = "SHARE_ONLINE"
inPublic = "PRIVATE"
inOrganization = "NO_SHARE_ORGANIZATION"
inGroups = ["My Group", "MyGroup 2"]
# Execute UploadServiceDefinition arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName, inCluster, inFolderType, inFolder,
inStartup, inOverride, inMyContents, inPublic, inOrganization, inGroups)
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是