CreateGPSDDraft (arcpy)

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

Данная функция конвертирует объекты Result и файлы результата (.rlt) в файлы черновика определения сервиса (Service Definition Draft) (.sddraft).

ПримечаниеПримечание:

Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.

Обсуждение

CreateGPSDDraft – это первый шаг для автоматизации публикации результатов геообработки на ГИС-сервере с помощью ArcPy. Результатом работы CreateGPSDDraft является файл черновика определения сервиса (Service Definition Draft) (.sddraft). Черновик определения сервиса (Service Definition Draft) – это комбинация файла результата или объекта Result, информации о сервере и набора свойств сервиса. Объект Результат (Result) может быть создан в скрипте Python с помощью задания переменной при выполнении инструмента, например, следующий результат буфера будет сохранен в переменную с названием result.

import arcpy
result = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
Файлы результата можно создать, щелкнув правой кнопкой на результате в окне Результаты (Results) и выбрав Сохранить как (Save As).

Информация о сервере содержит подключение к серверу, тип сервера, на который выполняется публикация, тип публикуемого сервиса, метаданные для сервиса (информация об элементе Item) и ссылки на данные (копируются данные на сервер или нет).

Свойства сервиса включают геообработку и дополнительные возможности сервиса, такие как Web Processing Services (WPS). Эти возможности сервиса не представлены в виде параметра. Если вам необходимо изменить значение (или любой другой параметр, который не представлен), вам необходимо опубликовать сначала sddraft, а затем изменить черновик путем редактирования .sddraft с помощью библиотек XML, таких как xml.dom.minidom. Для ознакомления с использованием библиотеки, см. пример изменения sddraft. Хотя этот пример предназначен для черновика картографического сервиса, вы можете использовать ту же библиотеку и метод для черновика сервиса геообработки, поскольку он представлен в виде файла XML.

Эта функция возвращает словарь Python с ошибками и другими потенциальными проблемами, которые необходимо устранить до создания вашего файла определения сервиса Service Definition.

Проект определения сервиса можно создать без информации о подключении к серверу. В этом случае параметр connection_file_path можно опустить, однако параметр server_type необходимо задать. Подключение к серверу можно задать позже, когда черновик определения сервиса уже опубликован с помощью инструмента Загрузить определение сервиса (Upload Service Definition).

Черновик определения сервиса (Service Definition Draft) затем может быть конвертирован в полностью готовый файл определения сервиса (.sd) с помощью инструмента Промежуточный сервис (Stage Service) . Во время подготовки компилируется вся информация, необходимая для успешной публикации ГИС-ресурса. Если данные не зарегистрированы на сервере, они будут добавлены после подготовки проекта определения сервиса. Наконец, файл определения сервиса можно загрузить и опубликовать как ГИС-сервис на заданном сервере ГИС с помощью инструмента Загрузить определение сервиса (Upload Service Definition). На этом шаге файл определения сервиса копируется на сервер, извлекается необходимая информация и публикуется ГИС-ресурс. Дополнительные сведения см. в разделе Обзор группы инструментов Публикация (Publishing).

Синтаксис

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})
ПараметрОбъяснениеТип данных
result
[result,...]

Ссылка на один или несколько объектов Результат (Result) или файлов результата (.rlt) на диске. Множество результатов должно быть предоставлено в формате списка. Следующий пример демонстрирует использование множества результатов в качестве входных данных для функции CreateGPSDDraft.

import arcpy
r1 = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
r2 = arcpy.GetCount_management("FireStations")
arcpy.CreateGPSDDraft([r1, r2], "output.sddraft", "myservice")
Result
out_sddraft

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

String
service_name

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

String
server_type

Строка, представляющая тип сервера. Если параметр connection_file_path не указан, следует предоставить параметр server_type. Если параметр connection_file_path не указан, параметр server_type берется из файла подключения. В этом случае можно выбрать FROM_CONNECTION_FILE или пропустить весь параметр.

  • ARCGIS_SERVERArcGIS for Server тип сервера
  • FROM_CONNECTION_FILEПолучите server_type, указанный в параметре connection_file_path

(Значение по умолчанию — ARCGIS_SERVER)

String
connection_file_path

Строка, содержащая путь и имя файла подключения ArcGIS for 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 (вне ArcMap), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, вам необходимо создать файлы слоя заново с расширенными возможностями символов, и использовать их для изменения выходных символов для вашей задачи.

При выборе этой опции картографический сервис автоматически создается на сервере с тем же именем, что и сервис геообработки.

(Значение по умолчанию — False)

Boolean
showMessages

Строка, задающая уровень сообщения для сервиса геообработки. Далее приведен список доступных уровней сообщений, которые сервис будет возвращать клиенту.

  • NoneКлиенту не возвращаются сообщения геообработки, только сообщение о том, что выполнение было завершено успешно или со сбоем.
  • ОшибкаКлиенту возвращаются только сообщения об инструменте, вызвавшем ошибку.
  • ПредупреждениеКлиенту возвращаются все сообщения об ошибках и предупреждениях инструмента.
  • ИнформацияКлиенту возвращаются все сообщения, касающиеся выполнения инструмента.

(Значение по умолчанию — 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
Возвращено значение
Тип данныхОбъяснение
Dictionary

Возвращает словарь информационных сообщений, предупреждений и сообщений об ошибках Python.

Пример кода

CreateGPSDDraft пример 1

Следующий скрипт демонстрирует полный процесс публикации сервиса геообработки с использованием скриптов Python. Автоматизация сервисов геообработки использует комбинацию функций ArcPy и инструментов геообработки в составе набора инструментов Публикация (Publishing). Рабочий процесс начинается с выполнения задачи геообработки, которую вы хотите опубликовать. После успешного запуска задачи геообработки и сохранения файла результата, используйте функцию ArcPy CreateGPSDDraft для создания черновика определения сервиса. Помните, что Описание элемента (Item Description), Сводка (Summary) и Теги (Tags) во входном результате геообработки перезаписываются значениями параметров summary и tags. Затем воспользуйтесь функцией AnalyzeForSD, чтобы проанализировать черновик определения сервиса на предмет ошибок, которые могут помешать успешной публикации сервиса. После анализа черновика определения сервиса и устранения ошибок можно подготовить определение сервиса. В ходе подготовки в черновике определения сервиса консолидируется вся информация, необходимая для публикации сервиса в полном определении сервиса. Воспользуйтесь инструментом геообработки Разместить сервис (Stage Service) для подготовки определения сервиса. Наконец, запустите инструмент геообработки Загрузить определение сервиса (Upload Service Definition) для отправки определения сервиса на сервер и публикации сервиса геообработки.

import arcpy

result = "c:/gis/gp/Analysis.rlt"
connectionPath = "c:/gis/conections/myServer.ags"
sddraft = "c:/gis/gp/drafts/AnalysisDraft.sddraft"
sd = "c:/gis/gp/sd/AnalysisDraft.sd"
serviceName = "AnalysisService"

# Create service definition draft
arcpy.CreateGPSDDraft(
    result, sddraft, serviceName, server_type="ARCGIS_SERVER",
    connection_file_path=connectionPath, 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)

# Analyze the service definition draft
analyzeMessages = arcpy.mapping.AnalyzeForSD(sddraft)

# 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
    arcpy.UploadServiceDefinition_server(sd, connectionPath)
else:
    # If the sddraft analysis contained errors, display them
    print analyzeMessages['errors']
CreateGPSDDraft пример 2

Этот пример демонстрирует создание и публикацию рабочего процесса извлечения данных и проверяет, что данные зарегистрированы на сервере. Задача Извлечь данные (Extract Data) получает входные слои и позволяет пользователю извлечь область интереса, конвертировать в другой тип выходных данных и получить файл архива zip в качестве выходных данных. Для инструмента Извлечь данные (Extract Data) входными данными могут быть только слои. В данном примере создается несколько слоев с помощью инструмента Создать векторный слой (Make Feature Layer), запускается инструмент, создается черновик определения сервиса и передается определение сервиса, которое будет использовано при создании сервиса. Любой слой, созданный в сеансе Python для этого рабочего процесса, будет рассматриваться, как возможные входные данные для итогового сервиса, и будет доступен в качестве варианта выбора.

import os
import arcpy

connPath = "c:/gis/conections/myServer.ags"
sddraft = "c:/gis/gp/drafts/ExtractionDraft.sddraft"
sd = "c:/gis/gp/sd/AnalysisDraft.sd"
serviceName = "DataExtractor"
arcpy.env.workspace = "c:/gis/citydata"
aoi = "c:/gis/citydata/extract.shp"

# Create layers which will be available as input
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/Cityhall',
                                  'CityHall')
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/Airport',
                                  'Airport')
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/FireStations',
                                  'FireStations')

# Run the extract data task and assign it to the 'result' variable
# only the cityhall layer was used as input, but the airport and
# firestation layers will be used in the service creation
result = arcpy.ExtractDataTask_server(
    "CityHall", aoi, "File Geodatabase - GDB - .gdb", "ESRI GRID - GRID",
    os.path.join(arcpy.env.scratchFolder, "output.zip"))

# Make sure the folder is registered with the server, if not, add
# it to the datastore
if arcpy.env.workspace not in [
        i[2] for i in arcpy.ListDataStoreItems(connPath, 'FOLDER')]:
    # both the client and server paths are the same
    dsStatus = arcpy.AddDataStoreItem(
        connPath, "FOLDER", "CityData", arcpy.env.workspace,
        arcpy.env.workspace)
    print("Data store : {0}".format(dsStatus))

# Create service definition draft
arcpy.CreateGPSDDraft(
    result, sddraft, serviceName, server_type="ARCGIS_SERVER",
    connection_file_path=connPath, copy_data_to_server=False,
    folder_name=None, summary="Extraction Service",
    tags="extract data, clip")

# Analyze the service definition draft
analyzeMessages = arcpy.mapping.AnalyzeForSD(sddraft)

# 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
    upStatus = arcpy.UploadServiceDefinition_server(sd, connPath)
    print("Completed upload")
else:
    # If the sddraft analysis contained errors, display them
    print(analyzeMessages['errors'])

Связанные темы

5/10/2014