Краткая информация
Данная функция конвертирует локатор адресов в файл черновика определения сервиса (.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) и ссылки на данные (копируются данные на сервер или нет).
Свойства сервера включают операции, такие как геокодирование и обратное геокодирование, поддерживаемое сервисом, максимальное количество кандидатов, возвращаемых сервисом при геокодировании отдельного адреса, или максимальное количество записей, обрабатываемых в каждом пакетном задании при выполнении пакетного геокодирования.
Эта функция возвращает словарь с ошибками и другими потенциальными проблемами, которые необходимо устранить до создания вашего файла определения сервиса Service Definition.
Файл черновика определения сервиса можно создать без знания конкретной информации о подключении к серверу. В этом случае параметр connection_file_path можно опустить; однако, следует предоставить параметр server_type . Подключение к серверу можно задать позже, когда файл черновика определения сервиса уже опубликован с помощью инструмента Загрузить определение сервиса (Upload Service Definition).
Файл черновика определения сервиса затем может быть конвертирован в полностью готовый файл определения сервиса (.sd) с помощью инструмента Промежуточный сервис (Stage Service). Во время подготовки компилируется вся информация, необходимая для успешной публикации ГИС-ресурса. Если данные не зарегистрированы на сервере, они будут добавлены после подготовки файла черновика определения сервиса. Наконец, файл определения сервиса можно загрузить и опубликовать как ГИС-сервис на заданном сервере ГИС с помощью инструмента Загрузить определение сервиса (Upload Service Definition). На этом шаге файл определения сервиса копируется на сервер, извлекается необходимая информация и публикуется ГИС-ресурс. Дополнительные сведения см. в разделе Обзор группы инструментов Публикация (Publishing).
Синтаксис
CreateGeocodeSDDraft (loc_path, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags}, {max_candidates}, {max_batch_size}, {suggested_batch_size}, {supported_operations})
Параметр | Объяснение | Тип данных |
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, SUGGEST]) | 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)