Краткая информация
Преобразует локатор в файл черновика определения сервиса (.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})
Параметр | Описание | Тип данных |
loc_path | The catalog path to the locator files (.loc) in a file folder. | String |
out_sddraft | The path and file name for the output Service Definition Draft file (.sddraft). | String |
service_name | The name of the service. This is the name people will see and use to identify the service. The name can only contain alphanumeric characters and underscores. No spaces or special characters are allowed. The name cannot be more than 120 characters. | String |
server_type | The server type. If a connection_file_path parameter value is not supplied, a server_type value must be provided. If a connection_file_path parameter value is supplied, the server_type value is taken from the connection file. In this case, you can choose FROM_CONNECTION_FILE or skip the parameter entirely.
(Значение по умолчанию — ARCGIS_SERVER) | String |
connection_file_path | The path and file name to an ArcGIS Server connection file (.ags). To publish a geocoding service in ArcGIS Pro, you will need an .ags file that has been created with publisher or administrator credentials for ArcGIS Server 10.6 or later. You can create a connection file using ArcGIS Pro and use the path to that file when publishing in ArcGIS Pro. | String |
copy_data_to_server | A Boolean that indicates whether the data referenced in the locator will be copied to the server. The copy_data_to_server parameter is only used if the server_type value is ARCGIS_SERVER and the connection_file_path value is not specified. If the connection_file_path value is specified, the server's registered data stores are used. For example, if the data in the locator is registered with the server, copy_data_to_server will always be False. Conversely, if the data in the locator is not registered with the server, copy_data_to_server will always be True.
(Значение по умолчанию — False) | Boolean |
folder_name | The folder name where the service definition will be published. If the folder does not exist, it will be created when the service definition is published as a service. The default folder is the server root level. (Значение по умолчанию — None) | String |
summary | The Item Description Summary. Use this parameter to override the user interface summary or to provide a summary if one does not exist. (Значение по умолчанию — None) | String |
tags | The Item Description Tags. Use this parameter to override the user interface tags or to provide tags if they do not exist. To specify multiple tags, separate each tag with a comma in the string. (Значение по умолчанию — None) | String |
max_result_size | The maximum number of candidates returned by the service when geocoding a single address. (Значение по умолчанию — 500) | Integer |
max_batch_size | The maximum number of records to be processed in each batch job when performing batch geocoding. (Значение по умолчанию — 1000) | Integer |
suggested_batch_size | The recommended number of records to pass in each batch job when performing batch geocoding. (Значение по умолчанию — 1000) | Integer |
supported_operations [supported_operations,...] | The built-in operations that will be supported by the service. The parameter should be specified as a list containing one or more of the following string keywords:
For example, to specify that the service will only support geocoding operations and will not allow reverse geocoding operations, specify the parameter as ["GEOCODE"]. (Значение по умолчанию — [GEOCODE, REVERSE_GEOCODE, SUGGEST]) | String |
overwrite_existing_service | Specifies whether an existing service on the server will be overwritten by a new service with the same service_name value. If the service_name value is unique, this parameter is not applicable. | 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:
# 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.
Примечание:
Если вы работаете с локаторами на своем портале, убедитесь, что выполнили вход и задали его в качестве активного в 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:
# 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)