Сводка
Данная функция преобразует локатор в файл черновика определения сервиса (.sddraft), который может быть использован для создания определения сервиса, необходимого для публикации сервиса геокодирования.
Внимание:
Файлы черновиков определения сервиса (.sddraft) должны быть преобразованы в файлы определения сервиса (.sd) перед тем, как их можно будет использовать для публикации на ArcGIS Server.
Примечание:
Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.
Описание
CreateGeocodeSDDraft – это первый шаг для автоматизации процесса публикации локатора на сервисе геокодирования с помощью ArcPy. Результатом работы CreateGeocodeSDDraft является файл Черновика определения сервиса (.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})
Parameter | Объяснение | Тип данных |
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=True)
# 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:
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.
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"
# Sign into the Portal that is federated with the in_server
arcpy.SignInToPortal("https://machinename.domainname.com/portal", "username", "password")
# 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=True)
# 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, 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)