CreateGeocodeSDDraft (arcpy)
Краткая информация
Данная функция конвертирует локатор адресов в файл черновика определения сервиса (.sddraft), который может быть использован для создания определения сервиса, необходимого для публикации сервиса геокодирования.
Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.
Обсуждение
CreateGeocodeSDDraft – это первый шаг для автоматизации публикации локатора адресов в сервис геокодирования с помощью ArcPy. Результатом работы CreateGeocodeSDDraft является файл черновика определения сервиса (Service Definition Draft) (.sddraft). Черновик определения сервиса – это комбинация свойств локатора адресов, информации о сервере и набора свойств сервиса.
Для всех сервисов геокодирования необходим локатор адресов. Локатор адресов – это основной инструмент геокодирования в ArcGIS, который содержит все данные, необходимые для выполнения сопоставления адресов. Можно использовать ArcCatalog, окно Каталог (Catalog) в ArcGIS for Desktop или инструмент геообработки Создать локатор адресов (Create Address Locator), чтобы создать локатор адресов. Пошаговые инструкции см. в разделе справки по ArcGIS Создание локатора адресов (Creating an address locator). Составные локаторы, объединяющие несколько локаторов в одном, также могут быть опубликованы на ArcGIS Server. Дополнительные сведения см. в разделе Создание составного локатора адресов.
Информация о сервере включает подключение к серверу, тип сервера, на который выполняется публикация, метаданные для сервиса (информация об элементе Item) и ссылки на данные (копируются данные на сервер или нет).
Свойства сервера включают операции, такие как геокодирование и обратное геокодирование, поддерживаемое сервисом, максимальное количество кандидатов, возвращаемых сервисом при геокодировании отдельного адреса, или максимальное количество записей, обрабатываемых в каждом пакетном задании при выполнении пакетного геокодирования.
Свойства слияния для сервисов, такие как минимальное или максимальное количество экземпляров, которые могут работать на одном компьютере, не используются в качестве параметров для данной функции. Если вам необходимо изменить значения (или любой другой параметр, который не представлен), вам необходимо опубликовать сначала sddraft, а затем изменить черновик путем редактирования файла .sddraft с помощью библиотек XML, таких как xml.dom.minidom. Ознакомьтесь с примером изменения черновика sddraft для использования библиотеки. Хотя этот пример предназначен для черновика картографического сервиса, вы можете использовать ту же библиотеку и метод для черновика сервиса геокодирования, поскольку он представлен в виде файла XML.
Эта функция возвращает словарь с ошибками и другими потенциальными проблемами, которые необходимо устранить до создания вашего файла определения сервиса Service Definition.
Проект определения сервиса можно создать без информации о подключении к серверу. В этом случае параметр connection_file_path можно опустить, однако следует предоставить параметр server_type. Подключение к серверу можно задать позже, когда черновик определения сервиса уже опубликован с помощью инструмента Загрузить определение сервиса (Upload Service Definition).
Черновик определения сервиса затем может быть конвертирован в полностью готовый файл определения сервиса (.sd) с помощью инструмента Промежуточный сервис (Stage Service). Во время подготовки компилируется вся информация, необходимая для успешной публикации ГИС-ресурса. Если данные не зарегистрированы на сервере, они будут добавлены после подготовки проекта определения сервиса. Наконец, файл определения сервиса можно загрузить и опубликовать как ГИС-сервис на заданном сервере ГИС с помощью инструмента Загрузить определение сервиса (Upload Service Definition). На этом шаге файл определения сервиса копируется на сервер, извлекается необходимая информация и публикуется ГИС-ресурс. Дополнительные сведения см. в разделе Обзор группы инструментов Публикация (Publishing).
Синтаксис
Параметр | Объяснение | Тип данных |
loc_path | Текстовая строка, представляющая путь каталога к локатору адресов. Допустимые форматы для локатора адресов – это файлы локатора (.loc) в папке файлов или локаторы в базе геоданных. | String |
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_SERVER) | String |
connection_file_path |
Строка, содержащая путь и имя файла подключения ArcGIS for Server (.ags). Новый файл подключения должен быть создан, используя функцию CreateGISServerConnectionFile. | String |
copy_data_to_server |
Логический параметр, указывающий на то, будут ли данные, связанные с локатором адресов, скопированы на сервер или нет. Параметр copy_data_to_server используется, только если не заданы параметры server_type is ARCGIS_SERVER и connection_file_path. Если параметр connection_file_path указан, используются зарегистрированные хранилища данных сервера. Например, если данные в локаторе адресов зарегистрированы на сервере, то значением copy_data_to_server всегда будет False. И наоборот, если данные в локаторе адресов не зарегистрированы на сервере, то значением copy_data_to_server всегда будет True. (Значение по умолчанию — False) | Boolean |
folder_name |
Строка, представляющая имя папки, в которой требуется опубликовать определение сервиса. Если папка не существует, она будет создана, когда определение сервиса будет опубликовано, как сервис. Папкой по умолчанию является корневая папка сервера. (Значение по умолчанию — None) | String |
summary | Строка, представляющая сводку описания элемента. Используйте этот параметр для замены сводки пользовательского интерфейса или предоставления сводки, если она не существует. (Значение по умолчанию — None) | String |
tags | Строка, представляющая теги описания элемента. Используйте этот параметр для замены тегов пользовательского интерфейса или введения тегов, если они отсутствуют. Чтобы указать несколько тегов, разделите теги в строке с помощью запятых. (Значение по умолчанию — None) | String |
max_candidates | Максимальное число кандидатов, возвращаемое сервисом при геокодировании одного адреса. (Значение по умолчанию — 500) | Integer |
max_batch_size | Максимальное число записей, обрабатываемое каждым пакетным заданием при выполнении пакетного геокодирования. (Значение по умолчанию — 1000) | Integer |
suggested_batch_size | Рекомендуемое число записей для каждого пакетного задания при выполнении пакетного геокодирования. (Значение по умолчанию — 1000) | Integer |
supported_operations [supported_operations,...] | Встроенные операции, поддерживаемые данным сервисом. Параметр должен быть задан в виде списка, содержащего одно или более следующих ключевых слов:
Например, чтобы указать, что сервис поддерживает только операции геокодирования и не разрешает операций обратного геокодирования, этот параметр должен быть установлен на ["GEOCODE"]. (Значение по умолчанию — [GEOCODE, REVERSE_GEOCODE]) | List |
Тип данных | Объяснение |
Dictionary |
Возвращает словарь информационных сообщений, предупреждений и сообщений об ошибках. |
Пример кода
Следующий скрипт демонстрирует полный рабочий процесс для публикации адресного локатора, как сервиса геокодирования. Первым шагом в рабочем процессе публикации является создание файла черновика определения сервиса (.sddraft) из адресного локатора с помощью функции CreateGeocodeSDDraft. Следующим шагом является создание файла определения сервиса (.sd) из файла черновика определения сервиса с помощью функции StageService. Последним шагом является публикация файла определения сервиса в качестве сервиса на ГИС-сервер с помощью функции UploadServiceDefinition.
import arcpy
import pprint
#Overwrite any existing outputs
arcpy.env.overwriteOutput = True
locator_path = "C:\\Data\\Locators\Atlanta"
sddraft_file = "C:\\Output\\Atlanta.sddraft"
sd_file = "C:\\Output\\Atlanta.sd"
service_name = "Atlanta"
summary = "Address locator for the city of Atlanta"
tags = "address, locator, geocode"
gis_server_connection_file = "C:\\Data\\server_connection.ags"
#Create the sd draft file
analyze_messages = arcpy.CreateGeocodeSDDraft(locator_path, sddraft_file, service_name,
connection_file_path=gis_server_connection_file,
summary=summary, tags=tags, max_result_size=20,
max_batch_size=500, suggested_batch_size=150)
#stage and upload the service if the sddraft analysis did not contain errors
if analyze_messages['errors'] == {}:
try:
# Execute StageService to convert sddraft file to a service definition (sd) file
arcpy.server.StageService(sddraft_file, sd_file)
# Execute UploadServiceDefinition to publish the service definition file as a service
arcpy.server.UploadServiceDefinition(sd_file, gis_server_connection_file)
print "The geocode service was successfully published"
except arcpy.ExecuteError as ex:
print "An error occured"
print arcpy.GetMessages(2)
else:
# if the sddraft analysis contained errors, display them
print "Error were returned when creating service definition draft"
pprint.pprint(analyze_messages['errors'], indent=2)