Краткая информация
Функция Publish публикует объект SceneLayerSharingDraft как слой веб-сцены со связанным векторным веб-слоем в ArcGIS Online или ArcGIS Enterprise. Если вы публикуете слой веб-сцены, ссылающийся на зарегистрированные данные, в ArcGIS Enterprise, связанный с ним слой изображений карты также включается. Как только слой веб-сцены и связанные с ним веб-слои будут опубликованы, на сервере начнется кэширование.
Вы можете использовать параметр item_id для указания ID элементов для слоя веб-сцены и связанных с ним веб-слоев. Для успешной публикации ID элементов должны быть доступны. Этот параметр учитывается для слоев веб-сцен и векторных веб-слоев при публикации в ArcGIS Enterprise 10.8.1 или более поздней версии. Этот параметр учитывается для слоев изображений карты при публикации в ArcGIS Enterprise 11.2 или более поздней версии.
Синтаксис
Publish (object, {item_id})
Параметр | Описание | Тип данных |
object | The SceneLayerSharingDraft object that will be published. | Object |
item_id | An optional dictionary of items IDs that will be honored when publishing. The ID must be available and contain 32 alphanumeric values ranging from the letters a to f and numbers 0 to 9. An item ID will be automatically created if no ID is specified. | Dictionary |
Тип данных | Описание |
Dictionary | Возвращает словарь, содержащий URL-адрес элемента, URL-адрес REST и ID задания кэширования. |
Пример кода
Следующий сценарий создает черновик публикации слоя веб-сцены для слоя в сцене. ID элементов указаны для слоя веб-сцены и связанных с ним веб-слоев. Слой веб-сцены публикуется в ArcGIS Enterprise. Информация о портале извлекается из функции SignInToPortal.
import arcpy
# Sign in to portal
arcpy.SignInToPortal("https://organization.example.com/webadaptorname",
"MyUserName", "MyPassword")
# Reference layer to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]
lyr = m.listLayers('Cities')
# Create SceneLayerSharingDraft
server_type = "FEDERATED_SERVER"
service_type = "SCENE_LAYER"
service_name = "SceneLayerSharingDraftExample"
scene_draft = m.getWebLayerSharingDraft(server_type, service_type, service_name, lyr)
# Publish scene layer using the SceneLayerSharingDraft object and specific item ID
# The ID must be available and contain 32 alphanumeric values ranging from the letters a to f and numbers 0 to 9
item_id = {
"web_scene_layer_id": "itemid1",
"web_feature_layer_id": "itemid2",
"map_image_layer_id": "itemid3"
}
# Share to portal
print("Start Publishing")
res = arcpy.sharing.Publish(scene_draft, item_id)
print(r"item_url: " + res["web_scene_layer"]["item_url"])
print(r"rest_url: " + res["web_scene_layer"]["rest_url"])
print(r"cache_job_id: " + res["web_scene_layer"]["cache_job_id"])
print("Finish Publishing")