exportToSDDraft
Краткая информация
Класс FeatureSharingDraft позволяет вам создать файл черновика определения сервиса (.sddraft) для векторного веб-слоя, который копирует все данные либо в ArcGIS Enterprise, либо в ArcGIS Online. Чтобы настроить свойства векторного веб-слоя, который ссылается на зарегистрированные данные, измените класс MapImageSharingDraft для включения векторного слоя.
Обсуждение
Чтобы создать объект FeatureSharingDraft, используйте метод Map объекта getWebLayerSharingDraft и установите для параметра service_type значение FEATURE. Объект FeatureSharingDraft можно настроить, задав свойства уровня сервиса и свойства метаданных.
Вы также можете задать свойства веб-слоя, изменив файл .sddraft. Если для свойства не задано значение, устанавливается значение по умолчанию. Вам необходимо задать соответствующие значения свойств, даже если вы перезаписываете веб-слой, имеющий существующие настроенные свойства.
Примечание:
Если свойства метаданных (credits, description, summary, tags и useLimitations) не заданы или состоят из пустых строк, элемент веб-слоя будет получать метаданные с карты или слоя, в зависимости от того, что опубликовано. Дополнительные сведения о том, как веб-слои являются источником метаданных, см. в разделе Метаданные веб-слоя.
После того, как объект FeatureSharingDraft сконфигурирован, его можно сохранить в файле черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Online, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Дополнительные сведения см. в разделе Что такое модуль arcpy.sharing.
Примеры кода доступны для следующего:
Синтаксис
exportToSDDraft()
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
allowExporting (Чтение / Запись) |
Указывает, можно ли экспортировать веб-слой в другие форматы. |
Boolean |
|
allowUpdateWithoutMValues (Чтение / Запись) |
Указывает, будет ли разрешено обновление геометрии до объектов с m-значениями без указания этого m-значения. Значение по умолчанию равно |
Boolean |
|
approvePublicDataCollection (Чтение / Запись) |
Указывает, будет ли доступно для всех редактирование в векторном веб-слое. |
Boolean |
|
checkUniqueIDAssignment (Чтение / Запись) |
Указывает, будет ли проводиться анализ карты для того, чтобы определить, включена ли опция Разрешить назначение уникальных числовых ID для публикуемых веб-слоев в Свойствах карты. Более подробно см. в Назначение ID слою. |
Boolean |
|
credits (Чтение / Запись) |
Кредиты веб-слоя. |
String |
|
description (Чтение / Запись) |
Описание веб-слоя. |
String |
|
featureCapabilities (Чтение / Запись) |
Включенные возможности, разделенные запятыми. Поддерживаются следующие возможности:
|
String |
|
maxRecordCount (Чтение / Запись) |
Максимальное количество записей, возвращаемых сервером во время запроса. Значением по умолчанию является 2000. |
Integer |
|
offline (Чтение / Запись) |
Указывает, требуется ли подключение к порталу. Если задано |
Boolean |
|
offlineTarget (Чтение / Запись) |
Версия целевого портала, для которой будет опубликовано определение сервиса. Указание версии позволяет быть уверенным в том, что в определении сервиса содержится ресурс, совместимый с вашим порталом. Это свойство поддерживается, только если для свойства
|
String |
|
overwriteExistingService (Чтение / Запись) |
Указывает, будет ли перезаписан существующий веб-слой. |
Boolean |
|
portalFolder (Чтение / Запись) |
Имя папки портала, в которой будет опубликован веб-слой. Папкой по умолчанию является корневая папка в Моих ресурсах. |
String |
|
preserveEditUsersAndTimestamps (Чтение / Запись) |
Указывает, будет ли сохраняться информация отслеживания изменений. Значение по умолчанию равно |
Boolean |
|
serviceName (Чтение / Запись) |
Имя веб-слоя. Это имя будут видеть пользователи и идентифицировать по нему веб-слой. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. |
String |
|
sharing.groups (Чтение / Запись) |
Имена групп, разделенные запятыми. |
String |
|
sharing.sharingLevel (Чтение / Запись) |
Уровень доступа веб-слоя.
|
String |
|
summary (Чтение / Запись) |
Краткая информация веб-слоя. |
String |
|
tags (Чтение / Запись) |
Теги веб-слоя. Можно добавить несколько тегов, разделенных запятыми. |
String |
|
useLimitations (Чтение / Запись) |
Ограничения по использованию веб-слоя. |
String |
|
serverType (Только для чтения) |
Тип сервера, который был указан при создании проекта публикации с помощью функции |
String |
|
timezone.ID (Чтение / Запись) |
Часовой пояс, в котором будут храниться значения дат. Строковое значение должно соответствовать одному из официальных ID часовых поясов, распознаваемых операционной системой Windows. Список часовых поясов приведен в разделе Часовые пояса в документации Microsoft. Примечание:Эта настройка применяется в следующем сценарии:
|
String |
|
timezone.DaylightSavingTime (Чтение / Запись) |
Указывает, учитывается ли в данном часовом поясе летнее время. Значение по умолчанию равно |
Boolean |
|
timezone.preferredTimezoneID (Чтение / Запись) |
Часовой пояс, который будет использовать ArcGIS Pro при отображении запросов из векторного веб-слоя. Строковое значение должно соответствовать одному из официальных ID часовых поясов, распознаваемых операционной системой Windows. Список часовых поясов приведен в разделе Часовые пояса в документации Microsoft. |
String |
|
timezone.preferredTimezoneIDDaylightSavingTime (Чтение / Запись) |
Указывает, учитывается ли в предпочтительном часовом поясе летнее время. Значение по умолчанию равно |
Boolean |
|
useCIMSymbols (Чтение / Запись) |
Указывает, будут ли использоваться символы Картографической информационной модели Esri (CIM), иначе называемые символами ArcGIS Pro. Установите на Это свойство работает только в том случае, если определение сервиса опубликовано в ArcGIS Online или ArcGIS Enterprise 11.3 или более поздней версии. |
Boolean |
|
zDefault.enable (Чтение / Запись) |
Указывает, будет ли разрешено редакторам добавлять или обновлять объекты через клиентов, которые не разрешают ввод z-значений. Значение по умолчанию равно |
Boolean |
|
zDefault.value (Чтение / Запись) |
Z-значение по умолчанию, которое будет использоваться для заполнения при добавлении или обновлении объектов. Это свойство поддерживается, только если для свойства |
Double |
Методы
exportToSDDraft(out_sddraft)
Конвертирует FeatureSharingDraft в файл черновика определения сервиса (.sddraft).
| Имя | Объяснение | Тип данных |
|---|---|---|
|
out_sddraft |
Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса ( |
String |
Пример кода
Следующий скрипт создает файл черновика определения сервиса векторного веб-слоя (.sddraft) для карты и задает метаданные, свойства данных для экспорта и символы CIM. Векторный веб-слой публикуется в папке в ArcGIS Online или ArcGIS Enterprise и попадает в общий доступ (публично). Информация о портале извлекается из функции 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 = "FeatureSharingDraftExample"
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 FeatureSharingDraft and set metadata, portal folder, export data properties, and CIM symbols
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", 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.featureCapabilities = "Extract"
sddraft.useCIMSymbols = True
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 = "FeatureSharingDraftExample"
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 FeatureSharingDraft and set overwrite property
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name)
sddraft.overwriteExistingService = True
# 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")
Следующий скрипт создает файл черновика определения сервиса векторного веб-слоя (.sddraft) и устанавливает возможности создания и синхронизации на векторном веб-слое. Затем файл .sddraft будет обработан, а веб-слой опубликован на портале с дополнительно заданным ID элемента.
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 = "FeatureSharingDraftExample"
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 FeatureSharingDraft
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name)
sddraft.featureCapabilities = "Create,Sync,Query"
# Create Service Definition Draft file
sddraft.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_feature_layer_id itemid"
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type, in_item_id=item_id)
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 = "FeatureSharingDraftExample"
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]
selected_layer = m.listLayers('States')[0]
selected_table = m.listTables('Capitals')[0]
# Create FeatureSharingDraft
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name, [selected_layer, selected_table])
# 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
# Set output file names
outdir = r"C:\Project\Output"
service_name = "FeatureSharingDraftExample"
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 FeatureSharingDraft and set offline and offlineTarget properties
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", 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")
Следующий скрипт создает файл черновика определения сервиса векторного веб-слоя (.sddraft), который включает свойство checkUniqueIDAssignment. В процессе обработки файл .sddraft анализируется. Если карта не настроена на назначение уникальных числовых ID для публикации веб-слоев, возвращается ошибка анализатора 00374 и печатается сообщение. Более подробно см. в Назначение ID слою.
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 = "FeatureSharingDraftExample"
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 FeatureSharingDraft and set the check unique ID assignment property
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name)
sddraft.checkUniqueIDAssignment = True
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
try:
# 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")
except Exception as stage_exception:
if "00374" in str(stage_exception):
print("The map is not set to allow assignment of unique IDs")
print("Analyzer errors encountered - {}".format(str(stage_exception)))
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
Следующий скрипт задает свойство useCompatibleFieldTypes из класса env, добавляет таблицу на карту и публикует размещенную таблицу в ArcGIS Enterprise.
import arcpy
import os
# Set useCompatibleFieldTypes property
arcpy.env.useCompatibleFieldTypes = True
data = r"C:\states.csv"
# Set output file names
outdir = r"C:\Project\Output"
service_name = "FeatureSharingDraftExample"
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)
# Open existing project, create a map with a basemap, and add data
aprx = arcpy.mp.ArcGISProject(os.path.join(outdir, r"C:\Project\World.aprx"))
m = aprx.createMap(service_name, "Map")
m.addBasemap("Topographic")
m.addDataFromPath(data)
print(f"Data added: {data}")
aprx.save()
print(f"Project saved: {aprx.filePath}")
# Sign in to portal
arcpy.SignInToPortal("https://organization.example.com/webadaptorname",
"MyUserName", "MyPassword")
# Create FeatureSharingDraft
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name)
# 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")