摘要
Publish 函数将 SceneLayerSharingDraft 对象作为具有关联 Web 要素图层的 Web 场景图层发布到 ArcGIS Online 或 ArcGIS Enterprise。 如果将引用注册数据的 Web 场景图层发布到 ArcGIS Enterprise,则还会包含关联的地图影像图层。 Web 场景图层和关联的 Web 图层发布后,服务器上就会开始缓存。
您可以使用 item_id 参数为 Web 场景图层和关联 Web 图层指定项目 ID。 必须提供项目 ID 才能成功发布。 当共享到 ArcGIS Enterprise 10.8.1 或更高版本时,参数适用于 Web 场景图层和 Web 要素图层。 对于地图影像图层,共享到 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、REST URL 和缓存作业 ID 的字典。 |
代码示例
以下脚本为场景中的图层创建 Web 场景图层共享草稿。 为 Web 场景图层和关联的 Web 图层指定项目 ID。 Web 场景图层将发布至 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")