CreateImageSDDraft (arcpy)
Краткая информация
Функция The CreateImageSDDraft является первым шагом в автоматизации публикации набора данных мозаики или набора растровых данных как сервиса изображений (Image Service) с помощью ArcPy. В результате функции CreateImageSDDraft создается файл черновика определения сервиса (.sddraft), который является комбинацией набора данных мозаики в базе геоданных или набора растровых данных, информации о сервере и набора свойств сервиса. Этот черновик определения сервиса может быть указан в качестве определения сервиса, а затем загружен на выбранный сервер ArcGIS в качестве сервиса изображений.
Информация о сервере содержит подключение к серверу или тип сервера, на который выполняется публикация, тип публикуемого сервиса, метаданные для сервиса (информация об элементе) и ссылки на данные (копируются данные на сервер или нет).
Проект определения сервиса не содержит данные. Проект сервиса сам по себе не может использоваться для публикации сервиса.
Синтаксис
Параметр | Объяснение | Тип данных |
raster_or_mosaic_layer |
Растровый слой или слой мозаики, который вы хотите опубликовать. | String |
out_sddraft |
Строка, представляющая путь и имя файла для выходного файла черновика определения сервиса (Service Definition Draft) (.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 for Server (.ags). (Значение по умолчанию — None) | 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 |
Пример кода
Создайте файл черновика определения сервиса изображений.
import arcpy
ws = "C:/workspace"
mdpath = os.path.join(ws, "fgdb.gdb/mdDEM")
con = os.path.join(ws, "myserver_6080 (publisher).ags")
service = 'dem_service'
sddraft = os.path.join(ws, service + '.sddraft')
arcpy.CreateImageSDDraft(mdpath, sddraft, service, 'ARCGIS_SERVER',
con, True, None, "Publish las MD",
"las,image service")
Опубликуйте сервис изображений из набора данных мозаики.
# It is recommended that you set the default mosaic dataset properly before
# publishing. A connection to ArcGIS Server must be established in the
# Catalog window of ArcMap before running this script
import arcpy
import os
import sys
# Define local variables:
# The folder for service definition draft and service definition files
MyWorkspace = r"\\myserver\ArcPyPublishing"
Name = "OrthoImageService"
InputData = r"\\myserver\ArcPyPublishing\fgdb.gdb\ortho_images"
Sddraft = os.path.join(MyWorkspace, Name + ".sddraft")
Sd = os.path.join(MyWorkspace, Name + ".sd")
con = os.path.join(MyWorkspace, "arcgis on myserver_6080 (admin).ags")
# Create service definition draft
try:
print("Creating SD draft")
arcpy.CreateImageSDDraft(InputData, Sddraft, Name, 'ARCGIS_SERVER', con,
False, None, "Ortho Images",
"ortho images,image service")
except Exception as err:
print(err[0] + "\n\n")
sys.exit("Failed to create SD draft")
# Analyze the service definition draft
analysis = arcpy.mapping.AnalyzeForSD(Sddraft)
print("The following was returned during analysis of the image service:")
for key in analysis.keys():
print("---{}---".format(key.upper()))
for ((message, code), layerlist) in analysis[key].iteritems():
print(" {} (CODE {})".format(message, code))
print(" applies to: {}".format(
" ".join([layer.name for layer in layerlist])))
# Stage and upload the service if the sddraft analysis did not contain errors
if analysis['errors'] == {}:
try:
print("Adding data path to data store to avoid copying data to server")
arcpy.AddDataStoreItem(con, "FOLDER", "Images", MyWorkspace,
MyWorkspace)
print "Staging service to create service definition"
arcpy.StageService_server(Sddraft, Sd)
print "Uploading the service definition and publishing image service"
arcpy.UploadServiceDefinition_server(Sd, con)
print "Service successfully published"
except arcpy.ExecuteError:
print(arcpy.GetMessages() + "\n\n")
sys.exit("Failed to stage and upload service")
except Exception as err:
print(err[0] + "\n\n")
sys.exit("Failed to stage and upload service")
else:
print("Service was not published because of errors found during analysis.")
print(analysis['errors'])