CreateGeocodeSDDraft

Сводка

Данная функция преобразует локатор в файл черновика определения сервиса (.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Тип сервера ArcGIS Server.
  • FROM_CONNECTION_FILEПолучить server_type, как указано в параметре connection_file_path.

(Значение по умолчанию — 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 - сервис разрешает операции геокодирования.
  • REVERSE_GEOCODE – сервис разрешает операции обратного геокодирования.
  • SUGGEST - cервис разрешает предполагаемые операции.

Например, чтобы указать, что сервис поддерживает только операции геокодирования и не разрешает операций обратного геокодирования, этот параметр должен быть установлен на ["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

Следующий скрипт демонстрирует полный рабочий процесс для публикации адресного локатора, как сервиса геокодирования в 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)

Связанные разделы