Краткая информация
Класс 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.
Примеры кода доступны для следующего:
Свойства
Свойство | Описание | Тип данных |
cache.configuration (чтение и запись) | Путь и имя файла предварительно определенного файла схемы листов .xml, созданного с помощью инструмента Создать схему листов кэша картографического сервиса. | String |
cache.exportTiles (чтение и запись) | Указывает, будет ли клиентам разрешено загружать листы кэша для автономного использования. Значение по умолчанию равно False. | Boolean |
cache.exportTilesCount (чтение и запись) | Максимальное количество листов, которые можно загрузить за один запрос. Это свойство поддерживается, только если для свойства cache.exportTiles задано True. Значение по умолчанию равно 100000. | Integer |
credits (чтение и запись) | Кредиты веб-слоя. | String |
description (чтение и запись) | Описание веб-слоя. | String |
offline (чтение и запись) | Указывает, будет ли использоваться подключение к порталу. Если задано значение False, вы должны войти на портал, чтобы создать файл черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Если задано True, файл черновика определения сервиса может быть создан без входа на портал. | Boolean |
offlineTarget (чтение и запись) | Версия целевого портала, для которой будет опубликовано определение сервиса. Указание версии позволяет быть уверенным в том, что в определении сервиса содержится ресурс, совместимый с вашим порталом. Это свойство поддерживается, только если для свойства offline задано True.
| String |
portalFolder (чтение и запись) | Имя папки портала, в которой будет опубликован веб-слой. Папкой по умолчанию является корневая папка в Моих ресурсах. | String |
serverType (только чтение) | Тип сервера, который был указан при создании проекта публикации с помощью функции getWebLayerSharingDraft из класса карта. Единственно возможное значение, которое возвращается из serverType для TileSharingDraft – HOSTING_SERVER. serverType HOSTING_SERVER указывает на поддержку публикации в ArcGIS Enterprise или ArcGIS Online. | String |
serviceName (чтение и запись) | Имя веб-слоя. Это имя будут видеть пользователи и идентифицировать по нему веб-слой. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. | String |
sharing.groups (чтение и запись) | Имена групп, разделенные запятыми. | String |
sharing.sharingLevel (чтение и запись) | Уровень доступа веб-слоя.
| String |
summary (чтение и запись) | Краткая информация веб-слоя. | String |
tags (чтение и запись) | Теги веб-слоя. Можно добавить несколько тегов с разделением запятой. | String |
useLimitations (чтение и запись) | Ограничения по использованию веб-слоя. | String |
Обзор метода
Метод | Описание |
exportToSDDraft (out_sddraft) | Конвертирует TileSharingDraft в файл черновика определения сервиса (.sddraft). |
Методы
exportToSDDraft (out_sddraft)
Параметр | Описание | Тип данных |
out_sddraft | Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса (.sddraft). | String |
После настройки TileSharingDraft, его можно сохранить в файл определения сервиса (.sddraft). Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Online, используя инструменты Промежуточный сервис и Выгрузить определение сервиса.
Пример кода
Следующий скрипт создает файл черновика определения сервиса веб-слоя листов (.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")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)
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 = "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")
Следующий скрипт публикует список слоев из карты как слой веб-листов в 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 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")
Следующий скрипт создает определение автономного сервиса для целевой версии портала и публикует его как веб-слой листов.
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")