Сводка
Класс MapImageSharingDraft позволяет настроить свойства слоя изображений карты и создать черновой файл определения сервиса (.sddraft) , который затем может быть опубликован на ArcGIS Enterprise.
Описание
Чтобы создать объект класса MapImageSharingDraft, используйте функцию класса map getWebLayerSharingDraft и задайте для параметра service_type значение MAP_IMAGE. Объект класса MapImageSharingDraft может затем быть настроен указанием свойств на уровне сервиса. Используйте параметр federatedServerUrl, чтобы указать, на каком интегрированном сервере будет опубликован данный веб-слой. После настройки объекта класса MapImageSharingDraft, его можно сохранить в файл определения сервиса (.sddraft) с помощью функции exportToSDDraft. Затем он может быть опубликован в ArcGIS Enterprise с помощью инструментов Промежуточный сервис и Загрузить определение сервиса. Для получения дополнительной информации см. Введение в модуль Общего доступа.
Свойства
Владение | Объяснение | Тип данных |
copyDataToServer (чтение и запись) | Булев параметр, указывающий на то, будут ли данные этой карты копироваться на сервер или нет. Если значение True, то будут скопированы все данные на карте, в том числе данные, которые зарегистрированы на интегрированном сервере. При значении False будут скопированы только данные, которые не зарегистрированы на интегрированном сервере, сервис будет на них ссылаться. | Boolean |
credits (чтение и запись) | Строка со сведениями об авторах. | String |
description (чтение и запись) | Строка с описанием. | String |
federatedServerUrl (чтение и запись) | Строка, содержащая URL-адрес интегрированного сервера портала ArcGIS Enterprise. Подсказка:URL интегрированного сервера также может использоваться в параметре in_server для инструмента Выгрузить определение сервиса. Примеры кода ниже демонстрируют это. | String |
offline (чтение и запись) | Булево значение, определяющее использовать ли подключение к порталу. Если для offline задано значение False, то вы должны войти на портал и указать URL-адрес интегрированного сервера портала ArcGIS Enterprise в качестве значения параметра federatedServerUrl, чтобы создать файл черновика определения сервиса (.sddraft), используя функцию exportToSDDraft. Если для offline задано значение True, то в этом случае файл черновика определения сервиса может быть создан без выполнения входа в портал и без указания параметра federatedServerUrl. | Boolean |
overwriteExistingService (чтение и запись) | Булева переменная, которая определяет, перезаписывать ли существующий веб-слой или нет. | Boolean |
portalFolder (чтение и запись) | Строка, содержащая имя папки портала, в который вы желаете опубликовать веб-слой. Папкой по умолчанию является корневая папка в Моих ресурсах. | String |
serverFolder (чтение и запись) | Строка, содержащая название папки сервера, в которой вы хотели бы опубликовать этот сервис. По умолчанию будет использоваться корневой каталог интегрированного сервера. | String |
serverType (только чтение) | Возвращает строку, предоставляющую данные о типе сервера, как указано при создании публикуемого черновика с помощью функции getWebLayerSharingDraft из класса map. Единственно возможное значение, которое возвращается из serverType для MapImageSharingDraft – FEDERATED_SERVER. serverType дляFEDERATED_SERVER указывает на поддержку публикации на ArcGIS Enterprise интегрированный сервер портала. | String |
serviceName (чтение и запись) | Строка, представляющая имя веб-слоя. Это – то имя, которое будут видеть другие пользователи и использовать для обозначения этого сервиса. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. | String |
summary (чтение и запись) | Строка со сводной информацией. | String |
tags (чтение и запись) | Строка, с тегами. Можно добавить несколько тегов с разделением запятой или точкой с запятой. | String |
useLimitations (чтение и запись) | Строка с ограничениями использования. | String |
Обзор метода
Метод | Объяснение |
exportToSDDraft (out_sddraft) | Конвертирует MapImageSharingDraft в файл черновика определения сервиса (.sddraft). |
Методы
exportToSDDraft (out_sddraft)
Parameter | Объяснение | Тип данных |
out_sddraft | Строка, в которой указан путь и имя файла для выходного файла черновика определения сервиса (.sddraft). | String |
После настройки MapImageSharingDraft можно сохранить как файл черновика определения сервиса (.sddraft). Затем он может быть опубликован на интегрированном сервере портала ArcGIS Enterprise с помощью инструментов Промежуточный сервис и Загрузить определение сервиса.
Подсказка:
Если для параметра offline задано значение False, то после входа в портал необходимо указать URL-адрес интегрированного сервера портала ArcGIS Enterprise в качестве значения параметра federatedServerUrl, чтобы создать файл черновика определения сервиса (.sddraft), используя функцию exportToSDDraft. Но, если для offline задано значение True, то в этом случае файл черновика определения сервиса может быть создан без выполнения входа в портал и без указания параметра federatedServerUrl.
Пример кода
Следующий скрипт опубликует карту как слой изображений карты на интегрированном сервере портала ArcGIS Enterprise. Информацию о портале можно получить на странице Portals в ArcGIS Pro.
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service = "MapImageSharingDraftExample"
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]
# Create MapImageSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("FEDERATED_SERVER", "MAP_IMAGE", service)
sharing_draft.federatedServerUrl = "https://MyFederatedServer.esri.com/server"
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, "https://MyFederatedServer.esri.com/server")
print("Successfully Uploaded service.")
Следующий скрипт создает для карты черновик файла определения сервиса слоя изображений карты (.sddraft). Затем он разрешит доступ к объекту в слое изображений карты, изменив черновик файла определения сервиса с помощью стандартной библиотеки Python xml.dom.minidom. Затем измененный файл определения сервиса будет опубликован на интегрированном сервере портала ArcGIS Enterprise. Информацию о портале можно получить на странице Portals в ArcGIS Pro.
import arcpy
import os
import xml.dom.minidom as DOM
# Set output file names.
outdir = r"C:\Project\Output"
service = "MapImage_ModifyXML_EnableFeatureAccess"
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]
# Create MapImageSharingDraft and set service properties.
sddraft = m.getWebLayerSharingDraft('FEDERATED_SERVER', 'MAP_IMAGE', service)
sddraft.federatedServerUrl = "https://MyFederatedServer.esri.com/server"
# Create Service Definition Draft file.
sddraft.exportToSDDraft(sddraft_output_filename)
# Read the sddraft xml.
doc = DOM.parse(sddraft_output_filename)
# Find all elements named TypeName. This is where the server object extension
# (SOE) names are defined.
typeNames = doc.getElementsByTagName('TypeName')
for typeName in typeNames:
# Get the TypeName we want to enable.
if typeName.firstChild.data == "FeatureServer":
extension = typeName.parentNode
for extElement in extension.childNodes:
# Enable Feature Access.
if extElement.tagName == 'Enabled':
extElement.firstChild.data = 'true'
# Output to a new sddraft.
sddraft_mod_xml = service + '_mod_xml' + '.sddraft'
sddraft_mod_xml_file = os.path.join(outdir, sddraft_mod_xml)
f = open(sddraft_mod_xml_file, 'w')
doc.writexml(f)
f.close()
# Stage Service.
sd_filename = service + '.sd'
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_mod_xml_file, sd_output_filename)
# Share to portal.
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "https://MyFederatedServer.esri.com/server")
print("Successfully Uploaded service.")