TileSharingDraft

摘要

TileSharingDraft 类允许您为 web 切片图层创建服务定义草稿文件 (.sddraft),该文件将所有数据复制到 ArcGIS EnterpriseArcGIS Online

说明

要创建 TileSharingDraft 对象,使用 Map 对象的 getWebLayerSharingDraft 方法并将 service_type 参数设置为 TILE。 随后即可通过设置服务级别属性和元数据属性来配置 TileSharingDraft 对象。

注:

如果未设置元数据属性(creditsdescriptionsummarytagsuseLimitations)或其具有空字符串,则 Web 图层项目将从地图或图层中获取元数据,具体取决于共享的内容。 有关 Web 图层如何获取元数据的详细信息,请参阅 Web 图层元数据

配置 TileSharingDraft 对象后,可以使用 exportToSDDraft 方法将其保存到服务定义草稿文件 (.sddraft)。 随后即可使用过渡服务上传服务定义工具将其过渡和共享给 ArcGIS EnterpriseArcGIS Online。 有关详细信息,请参阅 arcpy.sharing 简介

代码示例可用于以下用途:

属性

属性说明数据类型
cache.configuration
(可读写)

生成地图服务器缓存切片方案工具生成的预定义切片方案 .xml 文件的路径和文件名。

String
cache.exportTiles
(可读写)

指定是否允许客户端下载地图切片以供离线使用。 默认值为 False

Boolean
cache.exportTilesCount
(可读写)

单个请求中可下载的最大切片数量。 仅在属性 cache.exportTiles 设置为 True 时支持此属性。 默认值为 100000。

Integer
credits
(可读写)

web 图层制作者名单。

String
description
(可读写)

web 图层的描述。

String
offline
(可读写)

指定是否使用门户连接。 如果设置为 False,则必须登录门户才能使用 exportToSDDraft 方法创建服务定义草稿文件 (.sddraft)。 如果设置为 True,则无需登录到门户即可创建服务定义草稿文件。

Boolean
offlineTarget
(可读写)

将发布服务定义的目标门户版本。 指定版本,确保服务定义包含与门户兼容的内容。 仅在属性 offline 设置为 True 时支持此属性。

  • ENTERPRISE_10x - 内容将与 ArcGIS Enterprise 10.9.1 或较早版本兼容。 这是默认设置。
  • ENTERPRISE_11 - 内容将与 ArcGIS Enterprise 11.0 或更高版本兼容。
  • ONLINE - 内容将与 ArcGIS Online 兼容。
String
portalFolder
(可读写)

将发布 Web 图层的门户文件夹的名称。 默认文件夹是“我的内容”中的根文件夹。

String
serverType
(只读)

根据地图类中的 getWebLayerSharingDraft 函数创建共享草稿时指定的服务器类型。 从 serverTypeTileSharingDraft 中返回的唯一可能的值为 HOSTING_SERVERHOSTING_SERVERserverType 表示支持共享至 ArcGIS EnterpriseArcGIS Online

String
serviceName
(可读写)

web 图层名称。 用户可以看到该名称并使用该名称来识别 web 图层。 名称只能包含字母数字字符和下划线。 不允许使用空格或特殊字符。 名称不能超过 120 个字符。

String
sharing.groups
(可读写)

以逗号分隔的组名称。

String
sharing.sharingLevel
(可读写)

Web 图层的共享级别。

  • 所有者 - 只有所有者(以及有权查看其他成员所拥有内容的组织成员)才能访问项目。
  • 组织 - 与组织中所有经过身份验证的用户共享您的内容。
  • 所有人 - 与公众分享您的内容。 任何人均可访问并进行查看。

String
summary
(可读写)

Web 图层的摘要。

String
tags
(可读写)

Web 图层的标签。 可以添加多个标签,或用逗号分隔。

String
useLimitations
(可读写)

Web 图层的使用限制。

String

方法概述

方法说明
exportToSDDraft (out_sddraft)

TileSharingDraft 转换为服务定义草稿 (.sddraft) 文件。

方法

exportToSDDraft (out_sddraft)
参数说明数据类型
out_sddraft

用于表示输出服务定义草稿 (.sddraft) 文件的路径和文件名的字符串。

String

TileSharingDraft 配置完成后,即可将其作为服务定义草稿 (.sddraft) 文件进行保存。随后即可使用过渡服务上传服务定义工具将其过渡和共享给 ArcGIS EnterpriseArcGIS Online

代码示例

将 Web 切片图层发布到门户文件夹

以下脚本将为地图创建 Web 切片图层服务定义草稿文件 (.sddraft),并设置元数据属性。 Web 切片图层将发布到 ArcGIS EnterpriseArcGIS Online 的文件夹中并与所有人(公共)共享。 门户信息可从 SignInToPortal 函数中获得。

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://www.arcgis.com", "MyUserName", "MyPassword")

# Set output file names
outdir = r"C:\Project\Output"
service_name = "TileSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]

# Create TileSharingDraft and set metadata and portal folder properties
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "TILE", service_name)
sddraft.credits = "These are credits"
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.useLimitations = "These are use limitations"
sddraft.portalFolder = "my folder name"
sddraft.sharing.sharingLevel = "EVERYONE"
sddraft.sharing.groups = ""  # Group names = "group1,group2"

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)

print("Finish Publishing")
发布缓存 Web 切片图层

以下脚本通过调用管理地图服务器缓存切片工具创建缓存切片,来发布缓存 Web 切片图层。

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://www.arcgis.com", "MyUserName", "MyPassword")

# Set output file names
outdir = r"C:\Project\Output"
service_name = "TileSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]

# Create TileSharingDraft and set tiling scheme, export tile, and export tile count properties
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "TILE", service_name)
sddraft.cache.configuration = "C:\Program Files\ArcGIS\Pro\Resources\TilingSchemes\ArcGIS_Online_Bing_Maps_Google_Maps.xml"
sddraft.cache.exportTiles = True
sddraft.cache.exportTilesCount = 5566

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
results = arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)
rest_url = results[6]

# Manage Map Server Cache Tiles
# For cache, use multiple scales separated by semicolon (;)
# For example, "591657527.591555;295828763.795777"
arcpy.server.ManageMapServerCacheTiles(rest_url, "591657527.591555", "RECREATE_ALL_TILES")

print("Finish publishing")
发布图层的列表

以下脚本将地图中的图层列表作为 web 切片图层发布至 ArcGIS EnterpriseArcGIS Online。 门户信息可从 SignInToPortal 函数中获得。

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://www.arcgis.com", "MyUserName", "MyPassword")

# Set output file names
outdir = r"C:\Project\Output"
service_name = "TileSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Reference layers 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 metadata properties
sharing_draft = m.getWebLayerSharingDraft("HOSTING_SERVER", "TILE", service_name, 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
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, "My Hosted Services")

print("Finish Publishing")
创建并发布离线服务定义

以下脚本将为目标门户版本创建离线服务定义,并将其发布为 Web 切片图层。

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service_name = "TileSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]

# Create TileSharingDraft and set offline and offlineTarget properties
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "TILE", service_name)
sddraft.offline = True
# Set offlineTarget property to "ONLINE" for ArcGIS Online or "ENTERPRISE_11" for ArcGIS Enterprise 11.0 or later
# The default is ArcGIS Enterprise 10.9.1 or earlier
sddraft.offlineTarget = "ENTERPRISE_10x"

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

# Sign in to portal to upload and publish
arcpy.SignInToPortal("https://portal.domain.com/webadaptor",
                     "MyUserName", "MyPassword")

# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)

print("Finish Publishing")

相关主题