TileSharingDraft

Краткая информация

Класс TileSharingDraft позволяет создавать файл черновика определения сервиса (.sddraft) для веб-слоя листов, который копирует все данные в ArcGIS Enterprise или ArcGIS Online.

Обсуждение

Чтобы создать объект TileSharingDraft, используйте метод getWebLayerSharingDraft объекта Map и установите для параметра service_type значение TILE. Объект TileSharingDraft можно настроить, задав свойства уровня сервиса и свойства метаданных.

Примечание:

Если свойства метаданных (credits, description, summary, tags и useLimitations) не заданы или состоят из пустых строк, элемент веб-слоя будет получать метаданные с карты или слоя, в зависимости от того, что опубликовано. Дополнительные сведения о том, как веб-слои являются источником метаданных, см. в разделе Метаданные веб-слоя.

После настройки объекта TileSharingDraft он может быть сохранен в файле черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Online, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Дополнительные сведения см. в разделе Введение в arcpy.sharing.

Примеры кода доступны для следующего:

Свойства

СвойствоОписаниеТип данных
credits
(чтение и запись)

Строка со сведениями об авторах.

String
description
(чтение и запись)

Строка с описанием.

String
offline
(чтение и запись)

Булево значение, определяющее использование подключения к порталу. Если для offline задано значение False, вы должны войти на портал, чтобы создать файл черновика определения сервиса (.sddraft) с помощью функции exportToSDDraft. Если offline задан как True, файл черновика определения сервиса может быть создан без входа на портал.

Boolean
offlineTarget
(чтение и запись)

Строка, определяющая версию целевого портала, на который будет опубликовано определение сервиса. Указание версии позволяет быть уверенным в том, что в определении сервиса содержится ресурс, совместимый с вашим порталом. Это свойство поддерживается, только если для offline задано True.

  • ENTERPRISE_10x - ресурс будет совместим с ArcGIS Enterprise 10.9.1 или более ранней версией. Используется по умолчанию.
  • ENTERPRISE_11 - ресурс будет совместим с ArcGIS Enterprise 11.0 или более поздней версией.
  • ONLINE - ресурс будет совместим с ArcGIS Online.
String
portalFolder
(чтение и запись)

Строка, содержащая имя папки портала, в который вы желаете опубликовать веб-слой. Папкой по умолчанию является корневая папка в Моих ресурсах.

String
serverType
(только чтение)

Возвращает строку, предоставляющую данные о типе сервера, как указано при создании публикуемого черновика с помощью функции getWebLayerSharingDraft из класса map. Единственно возможное значение, которое возвращается из serverType для TileSharingDraftHOSTING_SERVER. serverType HOSTING_SERVER указывает на поддержку публикации в ArcGIS Enterprise или ArcGIS Online.

String
serviceName
(чтение и запись)

Строка, представляющая имя веб-слоя. Это имя будут видеть пользователи и идентифицировать по нему веб-слой. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов.

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
import xml.dom.minidom as DOM

# 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"

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

# Read the .sddraft file
docs = DOM.parse(sddraft_output_filename)
key_list = docs.getElementsByTagName('Key')
value_list = docs.getElementsByTagName('Value')

# Change following to "true" to share
SharetoOrganization = "false"
SharetoEveryone = "true"
SharetoGroup = "false"
# If SharetoGroup is set to "true", uncomment line below and provide group IDs
GroupID = ""    # GroupID = "f07fab920d71339cb7b1291e3059b7a8, e0fb8fff410b1d7bae1992700567f54a"

# Each key has a corresponding value. In all the cases value of key_list[i] is value_list[i]
for i in range(key_list.length):
    if key_list[i].firstChild.nodeValue == "PackageUnderMyOrg":
        value_list[i].firstChild.nodeValue = SharetoOrganization
    if key_list[i].firstChild.nodeValue == "PackageIsPublic":
        value_list[i].firstChild.nodeValue = SharetoEveryone
    if key_list[i].firstChild.nodeValue == "PackageShareGroups":
        value_list[i].firstChild.nodeValue = SharetoGroup
    if SharetoGroup == "true" and key_list[i].firstChild.nodeValue == "PackageGroupIDs":
        value_list[i].firstChild.nodeValue = GroupID

# Write to the .sddraft file
f = open(sddraft_output_filename, 'w')
docs.writexml(f)
f.close()

# 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")
Публикация списка слоев

Следующий скрипт публикует список слоев из карты как слой веб-листов в 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 = "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 metadata 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.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")

Связанные разделы