Краткая информация
Класс GeoprocessingSharingDraft позволяет создавать черновик файла определения сервиса (.sddraft) для веб-инструмента для ArcGIS Enterprise илисервиса геообработки для ArcGIS Server.
Обсуждение
Чтобы создать объект GeoprocessingSharingDraft, используйте функцию CreateSharingDraft или создайте объект GeoprocessingSharingDraft напрямую, используя аргументы - ключевые слова.
- Чтобы опубликовать веб-инструмент, задайте параметр serverType как FEDERATED_SERVER, а параметр serviceType как WEB_TOOL.
- Чтобы опубликовать сервис геообработки, задайте параметр serverType как STANDALONE_SERVER, а параметр serviceType как GP_SERVICE.
После настройки объекта GeoprocessingSharingDraft он может быть сохранен в файле черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Server, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Дополнительные сведения см. в разделе Введение в arcpy.sharing.
Синтаксис
GeoprocessingSharingDraft (**kwargs)
Параметр | Описание | Тип данных |
**kwargs | All properties supported by the GeoprocessingShaingDraft object can be used as keyword arguments. | String |
Свойства
Свойство | Описание | Тип данных |
GPStringValues (чтение и запись) | Список наименований параметров для которых тип данных станет текстовым после публикации. Если в веб-инструменте содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["CreateHexagons.Input_Areal_Unit", "Select_Features.New_Expression"]. Это применимо только для типов данных единиц площади, SQL выражений, пространственной привязки, описанного прямоугольника и экстента. Это не повлияет на параметры с другими типами данных. Если не указать параметр в этом списке, а компьютер ArcGIS GIS Server, на котором происходит публикация, поддерживает эти новые типы, то типы данных будут преобразованы к применимому имени параметра (например, GPArealUnit) по умолчанию. | List |
capabilities (чтение и запись) | Определяет возможности, которые будут поддерживаться сервисом.
| String |
choiceLists (чтение и запись) | Ограничивает значения для любого входного параметра с помощью режима ввода списка выбора в веб-инструменте или сервисе геообработки. Список выбора вариантов и его значения должны быть созданы перед использованием этого свойства; вы не можете использовать это свойство для добавления новых значений в список выбора. Если есть входной объект или растр, необходимо сначала создать слой для каждого значения в списке выбора и использовать это свойство для ограничения значений. Свойство использует словарь с именем задачи сервиса и именем параметра в качестве ключа, а также список строковых значений в качестве значения, например, {"ServiceTaskName.parameterName":["string1", "string2"]}. Значение по умолчанию равно None. | Dictionary |
constantValues (чтение и запись) | Список имен параметров, которые будут настроены в виде константы. Если содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["toolX.parameterA", "toolY.parameterD"]. Значение по умолчанию равно None. | List |
convertFeatureLayerURL (чтение и запись) | Определяет, будет ли URL-адрес векторного слоя преобразован в класс объектов файловой базы геоданных. Это свойство используется для сохранения URL-адреса векторного слоя или сервиса для входных или выходных параметров инструмента или данных проекта. Его можно использовать только при публикации в ArcGIS Enterprise или ArcGIS Server 11.2 или более поздней версии.
| Boolean |
copyDataToServer (чтение и запись) | Определяет, будут ли копироваться на сервер данные результата. Если значение равно True, то будут скопированы все данные результата, в том числе данные, которые зарегистрированы на сервере. Если значение равно False, то будут скопированы только данные, которые не зарегистрированы на сервере. Сервис будет использовать данные, которые зарегистрированы на интегрированном сервере. Значение по умолчанию равно False. | Boolean |
description (чтение и запись) | Описание веб-инструмента или сервиса геообработки. Значение по умолчанию равно None. | String |
draftValue (чтение и запись) | Список объектов геообработки Result используется для создания черновика описания сервиса. Это необходимо, если используется аргументы с ключевыми словами без запуска функции CreateSharingDraft. | List |
enableOutputFeatureService (чтение и запись) | Определяет, будет ли доступен дополнительный параметр Имя выходного сервиса объектов с именем esri_out_feature_service_name. Значение по умолчанию равно None. Чтобы установить для этого свойства значение True, значение resultMapService должно быть False, значение executionType должно быть Asynchronous и значение serviceTypeдолжно быть WEB_TOOL. Если не указано, для этого свойства будет автоматически задано True при выполнении всех следующих условий:
Подробнее о выходном сервисе объектов см. раздел Использование веб-инструментов с выходным сервисом объектов. | Boolean |
enableOutputImageService (чтение и запись) | Определяет, будет ли доступен дополнительный параметр Выходной сервис объектов с именем esri_out_image_service. Значение по умолчанию равно False. Чтобы задать для этого свойства значение True, значение resultMapService должно быть False, а значение executionType должно быть Asynchronous. Подробнее о выходных сервисах изображений см. раздел Использование веб-инструментов с выходным сервисом изображений. | Boolean |
executionType (чтение и запись) | Определяет, как клиент (приложение, использующее задачу) будет взаимодействовать с сервером и получать результаты выполнения задачи. ArcGIS Pro поддерживает оба типа обработки. Значение по умолчанию равно Asynchronous.
| String |
maxInstances (чтение и запись) | Максимальное число экземпляров, которые могут быть запущены веб-инструментом или сервисом и доступны для использования. Для сервисов и веб-инструментов с большой нагрузкой можно увеличить это значение. Убедитесь, что на сервере присутствует достаточное аппаратное обеспечение для поддержки указанного максимального числа экземпляров. | Integer |
maxUsageTime (чтение и запись) | Максимальное время (в секундах) использования сервиса. Вы можете увеличить значение по умолчанию, равное 600 секунд (10 мин), чтобы выполнять долгосрочные задачи геообработки. Кроме того, можно уменьшить это время, чтобы клиент не применял сервисы неправильно. Значение по умолчанию – 600. | Integer |
maxWaitTime (чтение и запись) | Максимальное время, в секундах, в течение которого клиент будет ждать подключения к экземпляру, прежде чем истечет срок ожидания. Когда все экземпляры заняты обработкой запросов, последующий запросы добавляются в очередь. Если срок ожидания истекает до того, как экземпляр станет доступным, задача завершится со сбоем. Значение по умолчанию – 60. | Integer |
maximumRecords (чтение и запись) | Максимальное число результатов, которые веб-инструмент или сервис могут возвратить клиенту. Чем большее значение будет задано для этого параметра, тем большее число записей или объектов, направляемых клиенту, сможет обрабатывать ГИС-сервер. Если не нужно возвращать какие-либо объекты, установите для этого параметра значение 0 (нуль). Как правило, это значение равно нулю только при включенном параметре Просмотреть результат с помощью картографического сервиса. Значением по умолчанию является 1000. | Integer |
messageLevel (чтение и запись) | Определяет уровень сообщения, который будет использоваться для веб-инструмента или сервиса геообработки. Далее приведен список доступных уровней сообщений, которые сервис будет возвращать :
По умолчанию – Error. | String |
minInstances (чтение и запись) | Минимальное число экземпляров, которые будут запущены сервисом и станут доступны для использования. Для сервисов с большой нагрузкой можно увеличить это значение. Значение по умолчанию равно 1. | Integer |
offline (чтение и запись) | Определяет, будет ли сохраняться определение сервиса офлайн. Значение по умолчанию равно False.
| Boolean |
offlineTarget (чтение и запись) | Указывает версию целевого сервера, для которой будет опубликовано определение сервиса. Задание версии позволяет быть уверенным в том, что в определении сервиса содержится контент, совместимый с вашим сервером. Это свойство поддерживается, только если для свойства offline задано True. Это свойство можно использовать следующими способами:
| String |
overwriteExistingService (чтение и запись) | Определяет, будет ли перезаписан имеющийся веб-инструмент или сервис геообработки. Значение по умолчанию равно False. | Boolean |
portalFolder (чтение и запись) | Имя папки портала, которая будет публиковаться, как веб-инструмент. Папкой по умолчанию является корневая папка в Моих ресурсах. Это свойство доступно только если для serverType задано FEDERATED_SERVER. | String |
removeDefaultValues (чтение и запись) | Список имен параметров, для которых значения по умолчанию будут удалены в веб-инструменте. Если в веб-инструменте содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["BufferModel.Output_Feature_Class", "BufferModel.Distance_value_or_field"]. Чтобы удалить значения по умолчанию для всех параметров, используйте ключевое слово REMOVE_ALL в формате ["BufferModel.REMOVE_ALL"]. | List |
resultMapService (чтение и запись) | Определяет, будут ли результаты всех задач сервиса отображаться в виде карты (в дополнение к другим результатам задачи). При True карта создается на сервере с помощью картографического сервиса, а затем отправляется обратно клиенту в виде изображения (например, файла .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам выходного слоя. Если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, создайте файлы слоя с возможностями символов и использовать их для изменения выходных символов для задачи. При True картографический сервис автоматически создается на сервере с тем же именем, что и у веб-инструмента или сервиса геообработки. Значение по умолчанию равно False. | Boolean |
serverFolder (чтение и запись) | Название папки, которая будет опубликована на сервере. Если папка не существует, она будет создана. Папкой по умолчанию является корневая папка сервера. Значение по умолчанию равно None. | String |
serverType (чтение и запись) | Указывает тип сервера, который использовался при создании публикуемого черновика и поддерживается для публикации.
| String |
serviceName (чтение и запись) | Имя веб-инструмента или сервиса геообработки. Это имя будут видеть пользователи и идентифицировать по нему сервис. Имя может содержать только буквы, цифры и знак подчеркивания. Для веб-инструмента допускается использование пробелов. Для сервиса геообработки не допускается использование пробелов и специальных символов. Длина имени не должна превышать 120 символов. Значение по умолчанию равно None. Это необходимо, если используется аргументы с ключевыми словами без запуска функции CreateSharingDraft. | String |
serviceType (чтение и запись) | Указывает тип сервиса, который использовался при создании публикуемого черновика и будет публиковаться.
| String |
summary (чтение и запись) | Краткая информация о веб-инструменте или сервисе. Используйте это свойство для замены краткой информации пользовательского интерфейса или создания этой информации, если она не существует. Приведенная здесь краткая информация не будет сохранена в исходном инструменте геообработки. Значение по умолчанию равно None. | String |
tags (чтение и запись) | Теги веб-инструмента или сервиса. Используйте это свойство для замены тегов пользовательского интерфейса или введения тегов, если они отсутствуют. Приведенные здесь теги не будут сохранены в исходном инструменте геообработки. Значение по умолчанию равно None. | String |
targetServer (чтение и запись) | Сервер, на котором будет опубликован веб-инструмент или сервис геообработки. Это свойство необходимо, если для свойства offline задано False, которое является значение по умолчанию. Если для свойства serverType задано FEDERATED_SERVER, укажите адрес URL сервера к интегрированному с сервером порталу ArcGIS Enterprise. Если для свойства serverType задано STANDALONE_SERVER, поддерживаются следующие варианты:
| String |
Обзор метода
Метод | Описание |
analyzeSDDraft () | Метод analyzeSDDraft анализирует черновик определения сервиса перед созданием сервиса. Метод может возвращать ряд ошибок и предупреждений, связанных, например, с отсутствием метаданных, копированием данных на сервер или несовместимыми параметрами. Используйте этот метод после успешного выполнения метода exportToSDDraft. Если файл шаблона определения сервиса не создан, при попытке использовать этот метод возникнет ошибка. |
exportToSDDraft (out_sddraft) | Конвертирует GeoprocessingSharingDraft в файл черновика определения сервиса (.sddraft). |
Методы
analyzeSDDraft ()
Тип данных | Описание |
Dictionary | Словарь, содержащий ошибки и предупреждения анализатора. Как ошибки, так и предупреждения в словаре будут представлены в виде списка кортежей, содержащих коды и сообщения анализаторов, если таковые имеются. Если ошибок или предупреждений нет, то ключ errors или ключ warnings в словаре будет содержать пустой список в качестве значения. |
Ниже приводится пример возврата функции analyzeSDDraft, не показывающий ошибок анализатора, но отображающий одно предупреждение анализатора:
{
'errors': [],
'warnings': [
(24032, 'Data source used by CustomizedModel is not registered with the server and will be copied to the server: raster_data')
],
'messages': []
}
exportToSDDraft (out_sddraft)
Параметр | Описание | Тип данных |
out_sddraft | A string that represents the path and file name for the output service definition draft file (.sddraft). | String |
Пример кода
Следующий скрипт создает объект GeoprocessingSharingDraft с помощью аргументов - ключевых слов. После завершения работы скрипта будет опубликован веб-инструмент в ArcGIS Enterprise. Поскольку входным параметром инструмента является векторный слой, режимом ввода параметра веб-инструмента является список вариантов, и анализатор выдаст предупреждение о копировании данных в интегрированный ArcGIS Server.
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"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://server.domain.com/webadaptor"
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)
# Run the tool and set the history to a result object
arcpy.ImportToolbox(os.path.join(outdir, "MyAnalysisTools.atbx"))
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")
# Create GeoprocessingSharingDraft using keyword arguments
sddraft = arcpy.sharing.GeoprocessingSharingDraft(serverType="FEDERATED_SERVER", serviceType="WEB_TOOL",
serviceName=service_name, draftValue=[result], targetServer=federated_server_url,
GPStringValues=["Input_Areal_Unit"])
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Get the analyzer messages
analyzer_results = sddraft.analyzeSDDraft()
if len(analyzer_results["errors"]) > 0:
# Display the analyzer error or processing error messages
for code, message in analyzer_results["errors"]:
print (message)
# Raise an exception and exit the script
raise arcpy.ExecuteError
# Display the analyzer warning messages using the analyze function
for code, message in analyzer_results["warnings"]:
print (message)
# Run Stage Service tool
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Share to portal
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
Следующий скрипт создаст файл черновика определения сервиса веб-инструмента (.sddraft). Затем файл черновика определения сервиса размещается и публикуется в ArcGIS Enterprise как веб-инструмент. Поскольку первый входной параметр инструмента - это класс объектов, входным режимом параметра веб-инструмента является значение, определенное пользователем.
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"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")
# Create GeoprocessingSharingDraft and set its properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
try:
# Run Stage Service tool
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Display the analyzer warning messages
print(arcpy.GetMessages(1))
# Share to portal
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
# Display the analyzer error or processing error messages
print(arcpy.GetMessages(2))
Следующий скрипт перезаписывает файл черновика определения сервиса веб-инструмента (.sddraft). Если имя сервиса уже существует, веб-инструмент будет перезаписан. В противном случае будет создан новый веб-инструмент. Поскольку первым входным параметром инструмента является слой, а параметр choiceLists класса GeoprocessingSharingDraft содержит два слоя, входным режимом параметра веб-инструмента является список выбора, который содержит два слоя.
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 = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)
# Run the tool and set to a result object
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots1"), "taxlotslayer1")
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots2"), "taxlotslayer2")
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis("taxlotslayer1", "40", "MyOutput.pdf")
# Create GeoprocessingSharingDraft and set overwrite and choicelists properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"
sddraft.overwriteExistingService = True
sddraft.choicelists = {"mywebtooltask.parameter1": ["taxlotslayer1", "taxlotslayer2"]}
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
try:
# Run Stage Service tool
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Display the analyzer warning messages
print(arcpy.GetMessages(1))
# Share to portal
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
# Display the analyzer error or processing error messages
print(arcpy.GetMessages(2))
Следующий скрипт создает определение автономного сервиса для целевой версии портала и публикует его как веб-инструмент.
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "50", "MyOutput.pdf")
# Create GeoprocessingSharingDraft and set offline and offlineTarget properties
server_type = "FEDERATED_SERVER"
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.offline = True
# Set offlineTarget property to "11" for ArcGIS Enterprise 11.0 or later
# The default is ArcGIS Enterprise 10.9.1 or earlier
sddraft.offlineTarget = "10x"
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Run Stage Service tool
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Sign in to portal to upload and publish
arcpy.SignInToPortal("https://portal.domain.com/webadaptor",
"MyUserName", "MyPassword")
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)
print("Finish Publishing")
Следующий скрипт создает черновик файла определения сервиса сервиса геообработки (.sddraft). Затем файл скрипта черновика определения сервиса размещается и публикуется в ArcGIS Server как сервис геообработки. Поскольку первый входной параметр инструмента - это класс объектов, входным режимом параметра геообработки является значение, определенное пользователем.
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")
# Create GeoprocessingSharingDraft
target_server_connection = os.path.join(outdir, "gp_publisher_conn.ags")
sddraft = arcpy.sharing.CreateSharingDraft("STANDALONE_SERVER", "GP_SERVICE", service_name, result)
sddraft.targetServer = target_server_connection
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
try:
# Run Stage Service tool
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Display the analyzer warning messages
print(arcpy.GetMessages(1))
# Publish to stand-alone server
arcpy.server.UploadServiceDefinition(sd_output_filename, target_server_connection)
except arcpy.ExecuteError:
# Display the analyzer error or processing error messages
print(arcpy.GetMessages(2))