Краткая информация
Функция конвертирует объекты Result и файлы результата (.rlt) в файлы черновика определения сервиса (.sddraft).
Примечание:
Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.
Обсуждение
CreateGPSDDraft – это первый шаг для автоматизации публикации результатов геообработки на ГИС-сервере с помощью ArcPy. Результатом работы CreateGPSDDraft является файл Черновика определения сервиса (.sddraft). Черновик определения сервиса – это комбинация файла результата или объекта Result, информации о сервере и набора свойств сервиса. Объект Result может быть создан в скрипте Python путем задания переменной для выполнения инструмента. Например, в следующем выражении результат буферизации сохраняется в переменную result.
import arcpy
result = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
Информация о сервере содержит подключение к серверу, тип сервера, на который выполняется публикация, тип публикуемого сервиса, метаданные для сервиса (информация об элементе Item) и ссылки на данные (копируются данные на сервер или нет).
Эта функция возвращает словарь с ошибками, предупреждениями и сообщениями, которые необходимо устранить до создания файла определения сервиса.
Черновик определения сервиса затем должен быть конвертирован в полностью готовый файл определения сервиса (.sd) с помощью инструмента Промежуточный сервис. Во время подготовки компилируется вся информация, необходимая для успешной публикации ГИС-ресурса. Если данные не зарегистрированы на сервере, они будут добавлены после подготовки проекта определения сервиса. Наконец, файл определения сервиса можно загрузить и опубликовать как ГИС-сервис на заданном сервере ГИС с помощью инструмента Загрузить определение сервиса. На этом шаге файл определения сервиса копируется на сервер, извлекается необходимая информация и публикуется ГИС-ресурс. Дополнительные сведения см. в Обзоре группы инструментов Публикация.
Синтаксис
CreateGPSDDraft (result, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags}, {executionType}, {resultMapServer}, {showMessages}, {maximumRecords}, {minInstances}, {maxInstances}, {maxUsageTime}, {maxWaitTime}, {maxIdleTime}, {capabilities}, {constantValues})
Параметр | Описание | Тип данных |
result [result,...] | Ссылка на один или несколько объектов Result или файлов результата (.rlt) на диске. Множество результатов должно быть предоставлено в формате списка. Следующий пример демонстрирует использование множества результатов в качестве входных данных для функции CreateGPSDDraft.
| Result |
out_sddraft | Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса (.sddraft). | String |
service_name | Строка, представляющая имя сервиса. Это то имя, которое будут видеть другие пользователи и использовать для обозначения этого сервиса. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. | String |
server_type | Строка, представляющая тип сервера. Если параметр connection_file_path не указан, то должен быть предоставлен параметр server_type. Если параметр connection_file_path указан, то параметр server_type берется из файла подключения. В этом случае можно выбрать FROM_CONNECTION_FILE или пропустить весь параметр. Примечание:MY_HOSTED_SERVICES доступен только при создании файлов .sddraft в ArcGIS Pro.
(Значение по умолчанию — ARCGIS_SERVER) | String |
connection_file_path | Строка, содержащая путь и имя файла подключения к ArcGIS Server (.ags). | String |
copy_data_to_server | Булев параметр, указывающий на то, будут ли данные, на которые ссылается result, скопированы на сервер или нет. Параметр copy_data_to_server используется, только если параметр server_type содержит значение ARCGIS_SERVER, а параметр connection_file_path не задан. Если параметр connection_file_path указан, используются зарегистрированные хранилища данных сервера. Например, если данные в result зарегистрированы на сервере, то значение copy_data_to_server всегда будет равно False. И наоборот, если данные в result не зарегистрированы на сервере, значение copy_data_to_server всегда будет равно True. (Значение по умолчанию — False) | Boolean |
folder_name | Строка, содержащая имя папки, в которой требуется опубликовать определение сервиса. Если папка не существует, она будет создана. Папкой по умолчанию является корневая папка сервера. (Значение по умолчанию — None) | String |
summary | Строка, представляющая краткую информацию для элемента. Используйте этот параметр для замены сводки пользовательского интерфейса или введения сводки, если она не существует. Приведенная здесь краткая информация не будет сохранена в документе карты. (Значение по умолчанию — None) | String |
tags | Строка, представляющая теги описания элемента. Используйте этот параметр для замены тегов пользовательского интерфейса или для введения тегов, если они отсутствуют. Приведенные здесь теги не будут сохранены в документе карты. (Значение по умолчанию — None) | String |
executionType | Синхронность и асинхронность определяют, как клиент (приложение, использующее задачу) будет взаимодействовать с сервером и получать результаты выполнения задачи. Когда сервис настроен на синхронность, клиент ждет, пока задача будет закончена. Как правило, синхронная задача выполняется быстро – 5 секунд и меньше. Асинхронная задача обычно выполняется медленнее, а клиент должен периодически запрашивать сервер, выполнена ли задача, и если задача выполнена, получить результат. Веб-приложение, использующее асинхронную задачу, должно иметь реализованную логику для проверки статуса задания и обработки результата, когда выполнение завершено. Клиенты ArcGIS for Desktop поддерживают оба типа выполнения. (Значение по умолчанию — Asynchronous) | String |
resultMapServer | При публикации сервиса геообработки можно выбрать просмотр результата всех задач сервиса в виде карты (в дополнение к любым другим результатам задачи). Карта создается на сервере с помощью картографического сервиса (Map Service), а затем отправляется обратно клиенту в виде изображения (например, .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам вашего выходного слоя. Не забывайте, что если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, вам необходимо создать файлы слоя заново с расширенными возможностями символов, и использовать их для изменения выходных символов для вашей задачи. При выборе этой опции картографический сервис автоматически создается на сервере с тем же именем, что и сервис геообработки. (Значение по умолчанию — False) | Boolean |
showMessages | Строка, задающая уровень сообщения для сервиса геообработки. Далее приведен список доступных уровней сообщений, которые сервис будет возвращать :
(Значение по умолчанию — None) | String |
maximumRecords | Максимальное количество результатов, которое сервис может вернуть клиенту. Определение большего значения для этого параметра будет означать, что ГИС сервер сможет обрабатывать отправку большого числа отдельных записей или объектов клиенту. Если не нужно возвращать какие-либо объекты, установите для этого параметра значение 0 (нуль). Как правило, это значение равно нулю только при включенном параметре Просмотреть результат с помощью картографического сервиса. (Значение по умолчанию — 1000) | Integer |
minInstances | Целочисленное значение, представляющее минимальное число экземпляров, которые будут запущены сервисом и станут доступны для использования. Для сервисов с большой нагрузкой вам может понадобиться увеличить это значение. (Значение по умолчанию — 1) | Integer |
maxInstances | Целочисленное значение, представляющее максимальное число экземпляров, которые могут быть запущены сервисом и быть доступными для использования. Для сервисов с большой нагрузкой вам может понадобиться увеличить это значение. Убедитесь, что на сервере присутствует достаточное аппаратное обеспечение для поддержки того максимального числа экземпляров, которое вы установили. (Значение по умолчанию — 2) | Integer |
maxUsageTime | Максимальное время (в секундах) использования сервиса. Может понадобится увеличить значение по умолчанию, равное 600 секунд (10 мин), чтобы выполнять долгосрочные задачи геообработки. Кроме того, может понадобиться уменьшить это время, чтобы клиент не использовал сервисы чрезмерно. (Значение по умолчанию — 600) | Integer |
maxWaitTime | Максимальное время в секундах, в течение которого клиент будет ждать подключения к экземпляру, прежде чем истечет срок ожидания. Когда все экземпляры заняты обработкой запросов, последующий запросы добавляются в очередь. Если срок ожидания истекает до того, как экземпляр станет доступным, задача завершится со сбоем. Значение по умолчанию – 60 секунд (1 минута). (Значение по умолчанию — 60) | Integer |
maxIdleTime | Максимальное время в секундах, в течение которого экземпляр будет оставаться активным до сжатия пула. Любые экземпляры, которые превышают минимальное количество неиспользованных экземпляров, будут закрыты после истечения максимального времени в состоянии простоя. (Значение по умолчанию — 1800) | Integer |
capabilities | Определяет возможности, которые могут быть поддержаны в сервисе. В настоящее время поддерживается только UPLOADS. (Значение по умолчанию — None) | String |
constantValues [constantValues,...] | Список имен параметров, которые будут настроены в виде константы. Если содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["toolX.parameterA", "toolY.parameterD"]. (Значение по умолчанию — None) | String |
Тип данных | Описание |
Dictionary | Возвращает словарь информационных сообщений, предупреждений и сообщений об ошибках. |
Пример кода
Следующий скрипт демонстрирует полный процесс публикации веб-инструмента на интегрированном сервере. Автоматизация публикации веб-инструментов использует комбинацию функций ArcPy и инструментов геообработки в составе набора инструментов Публикация. Рабочий процесс начинается с выполнения задачи геообработки, которую вы хотите опубликовать. После успешного выполнения задачи геообработки, войдите на портал для продолжения. Затем используйте функцию ArcPy CreateGPSDDraft для создания черновика определения сервиса. Помните, что Описание элемента, Краткая информация и Теги во входном результате геообработки перезаписываются значениями параметров summary и tags. Функция возвращает словарь анализатора, определяющий проблемы, которые могут помешать успешной публикации. После исправления серьезных ошибок, определение сервиса может быть подготовлено. В ходе подготовки в черновике определения сервиса консолидируется вся информация, необходимая для публикации сервиса в полном определении сервиса. Воспользуйтесь инструментом Сервис подготовки для подготовки определения сервиса. Наконец, запустите инструмент Загрузить определение сервиса для загрузки определения сервиса на портал и публикации веб-инструмента.
import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
portalurl = "https://myportal.esri.com/portal"
portalusername = "username"
portalpassword = "password"
serverURL = "https://myserver.esri.com/server"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.MyCustomAnalysis_reports("c:/gis/data/parcels.gdb/taxlots",
"40", "MyOutput.pdf")
# Sign in Portal
arcpy.SignInToPortal(portalurl, portalusername, portalpassword)
# Create service definition draft and return analyzer messages
analyzeMessages = arcpy.CreateGPSDDraft(
result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES",
copy_data_to_server=True, folder_name=None,
summary="Analysis Service", tags="gp", executionType="Synchronous",
resultMapServer=False, showMessages="INFO", maximumRecords=5000,
minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10,
maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors
if analyzeMessages['errors'] == {}:
# Execute StageService
arcpy.StageService_server(sddraft, sd)
# Execute UploadServiceDefinition
# Use URL to a federated server
arcpy.UploadServiceDefinition_server(sd, serverURL)
else:
# If the sddraft analysis contained errors, display them
print(analyzeMessages['errors'])
Следующий скрипт демонстрирует полный процесс публикации сервиса геообработки на отдельном сервере. Рабочий процесс похож на публикацию на интегрированном сервере, кроме необходимости входа на портал. Кроме того, параметр типа сервер следует установить на ARCGIS_SERVER, а для функции .ags необходимо указать файл подключения к серверу CreateGPSDDraft. Файл подключения к серверу инструмента Загрузить определение сервиса также следует указать, вместе с файлом подключения к серверу .ags. Убедитесь, что в файле .ags есть данные учетной записи сервера.
import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
serverconnectionfile = "c:/gis/gp/myserver.ags"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object arcpy.ImportToolbox(toolbox) result = arcpy.MyCustomAnalysis_reports("c:/gis/data/parcels.gdb/taxlots", "40", "MyOutput.pdf")
# Create service definition draft and returns analyzer messages analyzeMessages = arcpy.CreateGPSDDraft( result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES", connection_file_path= serverconnectionfile,
copy_data_to_server=True, folder_name=None, summary="Analysis Service", tags="gp", executionType="Synchronous",
resultMapServer=False, showMessages="INFO", maximumRecords=5000, minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10, maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors if analyzeMessages['errors'] == {}:
# Execute StageService arcpy.StageService_server(sddraft, sd) # Execute UploadServiceDefinition # Use URL to a federated server arcpy.UploadServiceDefinition_server(sd, serverconnectionfile)
else:
# If the sddraft analysis contained errors, display them print(analyzeMessages['errors'])