exportToSDDraft
Краткая информация
Класс TileSharingDraft позволяет создавать файл черновика определения сервиса (.sddraft) для веб-слоя листов, который копирует все данные в ArcGIS Enterprise или ArcGIS Online.
Обсуждение
Чтобы создать объект TileSharingDraft, используйте метод Map объекта getWebLayerSharingDraft и установите для параметра service_type значение TILE. Объект TileSharingDraft можно настроить, задав свойства уровня сервиса и свойства метаданных.
Примечание:
Если свойства метаданных (credits, description, summary, tags и useLimitations) не заданы или состоят из пустых строк, элемент веб-слоя будет получать метаданные с карты или слоя, в зависимости от того, что опубликовано. Дополнительные сведения о том, как веб-слои являются источником метаданных, см. в разделе Метаданные веб-слоя.
После настройки объекта TileSharingDraft он может быть сохранен в файле черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Online, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Дополнительные сведения см. в разделе Что такое модуль arcpy.sharing.
Примеры кода доступны ниже для следующих задач:
Синтаксис
exportToSDDraft()
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
cache.configuration (Чтение / Запись) |
Путь и имя файла предварительно определенного файла схемы листов |
String |
|
cache.exportTiles (Чтение / Запись) |
Указывает, будет ли клиентам разрешено загружать листы кэша для автономного использования. Значение по умолчанию равно |
Boolean |
|
cache.exportTilesCount (Чтение / Запись) |
Максимальное количество листов, которые можно загрузить за один запрос. Это свойство поддерживается, только если для свойства |
Integer |
|
credits (Чтение / Запись) |
Кредиты веб-слоя. |
String |
|
description (Чтение / Запись) |
Описание веб-слоя. |
String |
|
offline (Чтение / Запись) |
Указывает, будет ли использоваться подключение к порталу. Если задано значение |
Boolean |
|
offlineTarget (Чтение / Запись) |
Версия целевого портала, для которой будет опубликовано определение сервиса. Указание версии позволяет быть уверенным в том, что в определении сервиса содержится ресурс, совместимый с вашим порталом. Это свойство поддерживается, только если для свойства
|
String |
|
portalFolder (Чтение / Запись) |
Имя папки портала, в которой будет опубликован веб-слой. Папкой по умолчанию является корневая папка в Моих ресурсах. |
String |
|
serverType (Только для чтения) |
Тип сервера, который был указан при создании проекта публикации с помощью функции |
String |
|
serviceName (Чтение / Запись) |
Имя веб-слоя. Это имя будут видеть пользователи и идентифицировать по нему веб-слой. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. |
String |
|
sharing.groups (Чтение / Запись) |
Имена групп, разделенные запятыми. |
String |
|
sharing.sharingLevel (Чтение / Запись) |
Уровень доступа веб-слоя.
|
String |
|
summary (Чтение / Запись) |
Краткая информация веб-слоя. |
String |
|
tags (Чтение / Запись) |
Теги веб-слоя. Можно добавить несколько тегов с разделением запятой. |
String |
|
useLimitations (Чтение / Запись) |
Ограничения по использованию веб-слоя. |
String |
Методы
exportToSDDraft(out_sddraft)
Конвертирует TileSharingDraft в файл черновика определения сервиса (.sddraft).
| Имя | Объяснение | Тип данных |
|---|---|---|
|
out_sddraft |
Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса ( |
String |
Пример кода
Следующий скрипт создает файл черновика определения сервиса веб-слоя листов (.sddraft) для карты и задает свойства метаданных. Веб-слой листов публикуется в папке в ArcGIS Enterprise или ArcGIS 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")
result = arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)
value_table_op = arcpy.ValueTable(2)
value_table_op.loadFromString(result[11])
for i in range(0, value_table_op.rowCount):
print(value_table_op.getRow(i))
print("Finish Publishing")
Следующий скрипт публикует кэшированный веб-слой листов, вызывая инструмент Управление листами кэша картографического сервера для создания листов кэша.
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 = r"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")
Следующий скрипт публикует список слоев карты в виде веб-слоя листов с дополнительным ID элемента в ArcGIS Enterprise. Информация о портале извлекается из функции SignInToPortal.
import arcpy
import os
# Sign in to portal
arcpy.SignInToPortal("https://organization.example.com/webadaptorname",
"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)
# Replace "itemid" with desired item ID
item_id = "web_tile_layer_id itemid"
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, "My Hosted Services", in_item_id=item_id)
print("Finish Publishing")
Следующий скрипт создает определение автономного сервиса для целевой версии портала и публикует его как веб-слой листов.
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://organization.example.com/webadaptorname",
"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")