FeatureSharingDraft

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

Класс 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.

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

Свойства

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

Указывает, можно ли экспортировать веб-слой в другие форматы.

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

Указывает, разрешено ли обновление геометрии до объектов с m-значениями без указания этого m-значения. Значение по умолчанию равно True.

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

Указывает, доступно ли для общественности редактирование на векторном веб-слое.

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

Указывает, будет ли проводиться анализ карты для того, чтобы определить, включена ли опция Разрешить назначение уникальных числовых ID для публикуемых веб-слоев в Свойствах карты. Более подробно см. в Назначение ID слою.

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

Кредиты веб-слоя.

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

Описание веб-слоя.

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

Включенные возможности, разделенные запятыми. Поддерживаются следующие возможности:

  • Query
  • Create
  • Update
  • Delete
  • Sync
  • Extract
  • Editing

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

Максимальное количество записей, возвращаемых сервером во время запроса. Значением по умолчанию является 2000.

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

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

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

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

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

Указывает, будет ли перезаписан существующий веб-слой.

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

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

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

Указывает, будет ли сохраняться информация отслеживания изменений. Значение по умолчанию равно False.

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

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

String
sharing.groups
(чтение и запись)

Имена групп, разделенные запятыми.

String
sharing.sharingLevel
(чтение и запись)

Уровень доступа веб-слоя.

  • ВЛАДЕЛЕЦ — доступ к элементу могут получить только владелец и участники организации, имеющие права на просмотр ресурсов, принадлежащих другим участникам.
  • ОРГАНИЗАЦИЯ - поделитесь своими ресурсами со всеми аутентифицированными пользователями в вашей организации.
  • ДЛЯ ВСЕХ — поделитесь своими ресурсами с другими. Любой сможет получить доступ и видеть сцену.

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

Краткая информация веб-слоя.

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

Теги веб-слоя. Можно добавить несколько тегов с разделением запятой.

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

Ограничения по использованию веб-слоя.

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

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

String
timezone.ID
(чтение и запись)

Часовой пояс, в котором хранятся значения дат. Строковое значение должно соответствовать одному из официальных ID часовых поясов, распознаваемых операционной системой Windows. Список часовых поясов приведен в разделе Часовые пояса в документации Microsoft.

String
timezone.DaylightSavingTime
(чтение и запись)

Указывает, учитывается ли в данном часовом поясе летнее время. Значение по умолчанию равно False.

Boolean
timezone.preferredTimezoneID
(чтение и запись)

Часовой пояс для ArcGIS Pro, который будет использоваться при отображении запросов из векторного веб-слоя. Строковое значение должно соответствовать одному из официальных ID часовых поясов, распознаваемых операционной системой Windows. Список часовых поясов приведен в разделе Часовые пояса в документации Microsoft.

String
timezone.preferredTimezoneIDDaylightSavingTime
(чтение и запись)

Указывает, учитывается ли в предпочтительном часовом поясе летнее время. Значение по умолчанию равно False.

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

Указывает, будут ли использоваться символы Картографической информационной модели Esri (CIM), иначе называемые символами ArcGIS Pro. Установите на False, чтобы использовать символы, которые могут отображаться всеми клиентами. Установите на True, чтобы использовать символы CIM, которые поддерживаются в более новых клиентах, таких как ArcGIS API for JavaScript 4.x.

Это свойство работает только в том случае, если определение сервиса опубликовано в ArcGIS Online или ArcGIS Enterprise 11.3 или более поздней версии.

Boolean
zDefault.enable
(чтение и запись)

Указывает, будет ли разрешено редакторам добавлять или обновлять объекты через клиентов, которые не разрешают ввод z-значений. Значение по умолчанию равно True.

Boolean
zDefault.value
(чтение и запись)

Z-значение по умолчанию для заполнения при добавлении или обновлении объектов. Это свойство поддерживается, только если для свойства zDefault.enable задано True. По умолчанию значение равно 0.

Double

Обзор метода

МетодОписание
exportToSDDraft (out_sddraft)

Конвертирует FeatureSharingDraft в файл черновика определения сервиса (.sddraft).

Методы

exportToSDDraft (out_sddraft)
ПараметрОписаниеТип данных
out_sddraft

Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса (.sddraft).

String

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

Пример кода

Публикация векторного веб-слоя в папке портала

Следующий скрипт создает файл черновика определения сервиса векторного веб-слоя (.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")
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 = "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 будет обработан и опубликован на портале.

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor",
                     "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)

# 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 = "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://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")
Анализируйте, чтобы убедиться, что карта настроена так, чтобы разрешить присвоение уникальных числовых ID

Следующий скрипт создает файл черновика определения сервиса векторного веб-слоя (.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))
Публикация таблицы с использованием типов полей, совместимые с более ранними версиями ArcGIS Pro

Следующий скрипт задает свойство 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://portal.domain.com/webadaptor",
                 "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")

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