FeatureSharingDraft

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

Класс FeatureSharingDraft позволяет вам настраивать свойства векторного веб-слоя, который копирует все данные, и создавать файл черновика (.sddraft) определения сервиса, который может быть предоставлен либо ArcGIS Enterprise либо ArcGIS Online. Чтобы настроить свойства векторного веб-слоя, который ссылается на зарегистрированные данные, измените класс MapImageSharingDraft, чтобы разрешить доступ к объектам.

Обсуждение

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

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

Свойства

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

Булево значение, определяющее, могут ли пользователи экспортировать веб-слой в другие форматы.

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

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

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

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

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

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

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

Логическая переменная, которая определяет, перезаписывать ли существующий веб-слой или нет.

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

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

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

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

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

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

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

Строка со сводной информацией.

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

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

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

Строка с ограничениями использования.

String

Обзор метода

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

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

Методы

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

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

String

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

Пример кода

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

Следующий скрипт создает файл черновика (.sddraft) определения сервиса векторного веб-слоя для карты и устанавливает метаданные и свойства данных экспорта. Веб-векторный слой публикуется в папке в любом из 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, and export data properties
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.allowExporting = True

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

# Stage Service
print("Start Staging")
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.UploadServiceDefinition_server(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.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.UploadServiceDefinition_server(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()[0]
selected_table = m.listTables()[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.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.UploadServiceDefinition_server(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 property
server_type = "HOSTING_SERVER"
sddraft = m.getWebLayerSharingDraft(server_type, "FEATURE", service_name)
sddraft.offline = True

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

# Sign in to portal to upload and publish
arcpy.SignInToPortal("https://www.portal.domain.com/webadaptor", 
"MyUserName", "MyPassword")

# Stage Service
print("Start Staging")
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Start Uploading")
arcpy.UploadServiceDefinition_server(sd_output_filename, server_type)

print("Finish Publishing")