CreateGeocodeSDDraft

Краткая информация

Функция CreateGeocodeSDDraft преобразует локатор в файл Черновика определения сервиса (.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 не задано, необходимо его задать. Если для аргумента connection_file_path указано значение, оно берется из файла подключения; в этом случае можно выбрать FROM_CONNECTION_FILE или пропустить этот аргумент.

  • ARCGIS_SERVERThe ArcGIS Server server type.
  • FROM_CONNECTION_FILEGet the server_type value as specified by the connection_file_path argument.

(Значение по умолчанию — 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

Определяет, будут ли копироваться на сервер данные, которые используются локатором. Этот аргумент используется только тогда, когда значение аргумента server_type равно ARCGIS_SERVER и для аргумента connection_file_path не указано значение. Если для аргумента connection_file_path указано значение, будут использоваться зарегистрированные хранилища данных сервера. Например, если данные в локаторе зарегистрированы на сервере, то значением аргумента всегда будет False. И наоборот, если данные в локаторе не зарегистрированы на сервере, то значением аргумента всегда будет True.

  • FalseThe data will not be copied to the server. This is the default.
  • TrueThe data will be copied to the server.

(Значение по умолчанию — 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—The service will allow finding addresses or geocoding a table of addresses.
  • REVERSE_GEOCODE—The service will allow reverse geocoding operations.
  • SUGGEST—The service will allow suggest operations.
  • BATCH_GEOCODE—The service will allow geocoding large tables or .csv files.
    Примечание:

    This option is only supported when publishing a locator to ArcGIS Enterprise 11.5 or later. When the locator is published with this capability, two services are created: a GeocodeServer service and a GPServer service. Enabling this capability is necessary to use the shared GPServer service as the Input Batch Service parameter value in the Batch Geocode tool.

  • FIND_ADDRESS_CANDIDATES—The service will allow find address operations.
    Примечание:

    This option is only available when sharing a locator to ArcGIS Enterprise 11.5 or later. This operation will not be recognized by ArcGIS Enterprise 11.4 or earlier.

  • GEOCODE_ADDRESSES—The service will allow geocoding a table of addresses.
    Примечание:

    This option is only available when sharing a locator to ArcGIS Enterprise 11.5 or later. This operation will not be recognized by ArcGIS Enterprise 11.4 or earlier.

Например, чтобы поддерживались только операции геокодирования, используйте значение ["GEOCODE"]. Чтобы указать, что сервис поддерживает только поиск адресов, предложения и обратное геокодирование при публикации в ArcGIS Enterprise 11.5 или более поздней версии, используйте значение ["FIND_ADDRESS_CANDIDATES", "SUGGEST", "REVERSE_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"

# Specify the supported operations for the service based on the version
# of server the locator will be published to.
supported_operations = ["FIND_ADDRESS_CANDIDATES", "REVERSE_GEOCODE", "SUGGEST"]

# 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, supported_operations=supported_operations,
				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

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

# Specify the supported operations for the service based on the version
# of ArcGIS Enterprise the locator is shared to.
supported_operations = ["FIND_ADDRESS_CANDIDATES", "REVERSE_GEOCODE", "SUGGEST"]

# 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, supported_operations=supported_operations, 
				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)

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