Краткая информация
Преобразует локатор в файл черновика определения сервиса (.sddraft), который может быть использован для создания определения сервиса, необходимого для публикации сервиса геокодирования.
Внимание:
Файлы черновиков определения сервиса должны быть преобразованы в файлы определения сервиса (.sd) перед тем, как их можно будет использовать для публикации в ArcGIS Server.
Примечание:
Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.
Обсуждение
Эта функция является первым шагом для автоматизации процесса публикации локатора на сервисе геокодирования с помощью ArcPy. Функция создает файл черновика определения сервиса (.sddraft), который представляет комбинацию свойств локатора, информации о сервере и свойств сервиса.
Локатор необходим для любых сервисов геокодирования. Локатор – это основной инструмент геокодирования в ArcGIS, который содержит все данные, необходимые для выполнения сопоставления адресов. В ArcGIS Pro используйте инструмент Создать локатор или Создать локатор объектов, чтобы создать локатор. Инструкции по созданию локатора см. в разделе Создание локатора или Создание локатора объектов. Составные локаторы, объединяющие несколько локаторов в одном, также могут быть опубликованы на ArcGIS Server. Более подробно см. Объединение нескольких локаторов в составной.
Информация о сервере включает подключение к серверу, тип сервера, на который выполняется публикация, метаданные для сервиса (информация об элементе Item) и ссылки на данные (копируются данные на сервер).
Свойства сервера включают операции, такие как геокодирование и обратное геокодирование, поддерживаемое сервисом, максимальное количество кандидатов, возвращаемых сервисом при геокодировании отдельного адреса, или максимальное количество записей, обрабатываемых в каждом пакетном задании при выполнении пакетного геокодирования.
Примечание:
Свойства слияния для сервисов, такие как минимальное или максимальное количество экземпляров, которые могут работать на одном компьютере, не используются для этой функции. Вместо этого, сначала опубликуйте файл .sddraft и измените черновик, отредактировав файл .sddraft с помощью таких библиотек XML, как xml.dom.minidom.
Эта функция возвращает словарь с ошибками и другими потенциальными проблемами, которые необходимо устранить до создания файла определения сервиса Service Definition.
Файл черновика определения сервиса можно создать без знания конкретной информации о подключении к серверу. В этом случае аргумент connection_file_path можно опустить; однако, следует задать значение server_type. Подключение к серверу можно задать позже, когда файл черновика определения сервиса уже опубликован с помощью инструмента Загрузить определение сервиса.
Файл черновика определения сервиса затем может быть конвертирован в полностью готовый файл определения сервиса (.sd) с помощью инструмента Промежуточный сервис. Во время подготовки компилируется вся информация, необходимая для успешной публикации ГИС-ресурса. Если данные не зарегистрированы на сервере, они будут добавлены после подготовки файла Черновика определения сервиса. Файл определения сервиса можно загрузить и опубликовать как ГИС-сервис на заданном сервере ГИС с помощью инструмента Загрузить определение сервиса. На этом шаге файл определения сервиса копируется на сервер, извлекается необходимая информация и публикуется Дополнительные сведения см. в Обзоре группы инструментов Публикация.
Синтаксис
CreateGeocodeSDDraft (loc_path, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags}, {max_result_size}, {max_batch_size}, {suggested_batch_size}, {supported_operations}, {overwrite_existing_service})
Параметр | Описание | Тип данных |
loc_path | Путь в каталоге к файлам локатора (.loc) в папке с файлами. | String |
out_sddraft | Путь и имя файла для выходного файла черновика определения сервиса (.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 Server (.ags). Для публикации сервиса геокодирования в ArcGIS Pro вам потребуется файл .ags, созданный с использованием учетной записи издателя или администратора для ArcGIS Server 10.6 или более поздней версии. Вы можете создать файл подключения с помощью ArcGIS Pro и использовать путь к этому файлу при публикации в ArcGIS Pro. | String |
copy_data_to_server | Определяет, будут ли копироваться на сервер данные, которые используются локатором. Параметр copy_data_to_server используется только в том случае, если значение server_type равно 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_result_size | Максимальное число кандидатов, возвращаемое сервисом при геокодировании одного адреса. (Значение по умолчанию — 500) | Integer |
max_batch_size | Максимальное число записей, обрабатываемое каждым пакетным заданием при выполнении пакетного геокодирования. (Значение по умолчанию — 1000) | Integer |
suggested_batch_size | Рекомендуемое число записей для каждого пакетного задания при выполнении пакетного геокодирования. (Значение по умолчанию — 1000) | Integer |
supported_operations [supported_operations,...] | Встроенные операции, которые будут поддерживаться данным сервисом. Параметр должен быть задан в виде списка, содержащего одно или более следующих ключевых слов:
Например, чтобы указать, что сервис будет поддерживать только операции геокодирования и не будет разрешать операции обратного геокодирования, этот параметр должен быть установлен на ["GEOCODE"]. (Значение по умолчанию — [GEOCODE, REVERSE_GEOCODE, SUGGEST]) | String |
overwrite_existing_service | Определяет, будет ли существующий сервис на сервере перезаписан на новый сервис с тем же значением service_name. Если значение service_name уникальное, то этот параметр неприменим. | Boolean |
Тип данных | Описание |
Dictionary | Словарь информационных сообщений, предупреждений и сообщений об ошибках. |
Пример кода
Следующий скрипт демонстрирует полный рабочий процесс для публикации адресного локатора, как сервиса геокодирования на автономном сервере. Первым шагом в рабочем процессе публикации является создание файла Черновика определения сервиса (.sddraft) из локатора адресов с помощью функции CreateGeocodeSDDraft. Затем создайте файл Определения сервиса (.sd) из файла Черновика определения сервиса с помощью функции StageService. Последним шагом является публикация файла определения сервиса в качестве сервиса на ГИС-сервер с помощью функции UploadServiceDefinition.
Если сервис геокодирования уже существует, задайте для аргумента overwrite_existing_service True для успешной публикации сервисом. Если вы используете хранилище данных для публикации локатора, задайте для аргумента copy_data_to_server значение False.
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"
# Create an AGS connection file to your standalone server
# in ArcGIS Pro
gis_server_connection_file = "C:\\Data\\server_connection"
# Create the sd draft file
analyze_messages = arcpy.CreateGeocodeSDDraft(locator_path, sddraft_file, service_name,
connection_file_path=gis_server_connection_file,
copy_data_to_server=True,
summary=summary, tags=tags, max_result_size=20,
max_batch_size=500, suggested_batch_size=150,
overwrite_existing_service=False)
# Stage and upload the service if the sddraft analysis did not contain errors
if analyze_messages['errors'] == {}:
try:
# Run StageService to convert sddraft file to a service definition
# (sd) file
arcpy.server.StageService(sddraft_file, sd_file)
# Run 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:
print("An error occurred")
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)
Следующий скрипт демонстрирует полный рабочий процесс для публикации адресного локатора, как сервиса геокодирования в ArcGIS Enterprise. Первым шагом в рабочем процессе публикации является создание файла Черновика определения сервиса (.sddraft) из локатора адресов с помощью функции CreateGeocodeSDDraft. Затем создайте файл Определения сервиса (.sd) из файла Черновика определения сервиса с помощью функции StageService. Последним шагом является публикация файла определения сервиса в качестве сервиса на ГИС-сервер с помощью функции UploadServiceDefinition.
Если сервис геокодирования уже существует, задайте для аргумента overwrite_existing_service True для успешной публикации сервисом. Если вы используете хранилище данных для публикации локатора, задайте для аргумента copy_data_to_server значение False.
Примечание:
Если вы работаете с локаторами на своем портале, убедитесь, что выполнили вход и задали его в качестве активного в ArcGIS Pro. Для доступа к локатору, расположенному на портале, отличном от активного, можно выполнить аутентификацию через SignInToPortal.
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"
# The URL of the federated server you are publishing to
in_server = "https://machinename.domainname.com/server"
# Create the sd draft file
analyze_messages = arcpy.CreateGeocodeSDDraft(locator_path, sddraft_file, service_name,
copy_data_to_server=True,
summary=summary, tags=tags, max_result_size=20,
max_batch_size=500, suggested_batch_size=150,
overwrite_existing_service=False)
# Stage and upload the service if the sddraft analysis did not contain errors
if analyze_messages['errors'] == {}:
try:
# Run StageService to convert sddraft file to a service definition
# (sd) file
arcpy.server.StageService(sddraft_file, sd_file)
# Run UploadServiceDefinition to publish the service definition
# file as a service
arcpy.server.UploadServiceDefinition(sd_file, in_server)
print("The geocode service was successfully published")
except arcpy.ExecuteError:
print("An error occurred")
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)