描述
将 ArcGIS 工程中的地图、图层或图层列表转换为服务定义草稿 (.sddraft) 文件。
讨论
旧版本:
ArcGIS Pro 2.2 中引入了 arcpy.sharing 模块,以便在共享 web 图层时提供比先前的现有函数 CreateWebLayerSDDraft 更好的体验。仍然会提供原始函数,不过仅仅是为了能够继续向后兼容。有关详细信息,请参阅共享模块简介。CreateWebLayerSDDraft 是使用 ArcPy 将地图、图层或图层列表自动发布到托管 Web 图层的第一步。通过 CreateWebLayerSDDraft 创建的输出是服务定义草稿 (.sddraft) 文件。
要共享 Web 图层,您必须具备以下条件:
- 在线组织的帐户
- 拥有帐户的“发布者”或“管理员”角色的成员资格
随后可使用过渡服务工具将服务定义草稿转换为完全合并的服务定义 (.sd) 文件。过渡过程会编译成功发布 GIS 资源所需的所有必要信息。最后,可以使用上载服务定义工具上载服务定义文件并将其作为 GIS 服务发布到特定的在线组织。此步骤将获取服务定义文件,将其复制到服务器,提取所需信息并发布 GIS 资源。
将托管服务发布到 ArcGIS Online 时,使用启动 ArcGIS Pro 时系统提示您输入的用户名和密码获取登录信息。
语法
CreateWebLayerSDDraft (map_or_layers, out_sddraft, service_name, {server_type}, {service_type}, {folder_name}, {overwrite_existing_service}, {copy_data_to_server}, {enable_editing}, {allow_exporting}, {enable_sync}, {summary}, {tags}, {description}, {credits}, {use_limitations})
参数 | 说明 | 数据类型 |
map_or_layers | 引用 Map对象、Layer 对象或 Layer 对象列表的变量。如果发布 Layer 对象列表,则这些对象必须出自同一地图。 | Object |
out_sddraft | 用于表示输出服务定义草稿 (.sddraft) 文件的路径和文件名的字符串。 | String |
service_name | 用于表示服务名称的字符串。用户可以看到该名称并使用该名称来识别服务。名称只能包含字母数字字符和下划线。不允许使用空格或特殊字符。名称长度不能超过 120 个字符。 | String |
server_type | 表示服务器类型的字符串。当前唯一支持的值为 ArcGIS Online 的 MY_HOSTED_SERVICES。 (默认值为 MY_HOSTED_SERVICES) | String |
service_type | 表示服务类型的字符串。
注:地图影像图层和地图服务都不是 CreateWebLayerSDDraft 函数中受支持的服务类型。相反,应使用 arcpy.sharing 模块。 (默认值为 FEATURE_ACCESS) | String |
folder_name | 用于表示您要向其中发布服务定义的文件夹名称的字符串。如果该文件夹当前不存在,则将创建该文件夹。默认的文件夹为服务器根级别。 (默认值为 None) | String |
overwrite_existing_service | 决定是否覆盖现有服务的布尔值。 (默认值为 False) | Boolean |
copy_data_to_server | 指示地图或图层中所引用的数据是否复制到服务器的布尔值。 (默认值为 False) | Boolean |
enable_editing | 决定是否启用要素服务编辑功能的布尔值。始终开启查询功能。编辑功能为可选功能。 (默认值为 False) | Boolean |
allow_exporting | 决定用户是否可以将服务导出为不同格式的布尔值。 (默认值为 False) | Boolean |
enable_sync | 决定用户是否可以在离线时使用数据的本地副本并在上线时同步更改的布尔值。 (默认值为 False) | Boolean |
summary | 用于表示摘要的字符串。 (默认值为 None) | String |
tags | 用于表示标签的字符串。可以添加多个标签,标签之间用逗号或分号进行分隔。 (默认值为 None) | String |
description | 用于表示描述的字符串。 (默认值为 None) | String |
credits | 用于表示制作者名单的字符串。 (默认值为 None) | String |
use_limitations | 用于表示使用限制的字符串。 (默认值为 None) | String |
代码示例
以下脚本将地图作为要素访问图层发布至 ArcGIS Online。
import arcpy
aprx = arcpy.mp.ArcGISProject('C:/Project/Counties.aprx')
m = aprx.listMaps('USA Counties')[0]
arcpy.mp.CreateWebLayerSDDraft(m, 'C:/Project/Counties.sddraft', 'Counties', 'MY_HOSTED_SERVICES', 'FEATURE_ACCESS')
arcpy.StageService_server('C:/Project/Counties.sddraft', 'C:/Project/Counties.sd')
arcpy.UploadServiceDefinition_server('C:/Project/Counties.sd', 'My Hosted Services')
以下脚本将图层列表作为切片图层发布至 ArcGIS Online。
import arcpy
aprx = arcpy.mp.ArcGISProject('C:/Project/Counties.aprx')
m = aprx.listMaps('USA Counties')[0]
lyrs=[]
lyrs.append(m.listLayers('Cities')[0])
lyrs.append(m.listLayers('Counties')[0])
arcpy.mp.CreateWebLayerSDDraft(lyrs, 'C:/Project/Counties.sddraft', 'Counties', 'MY_HOSTED_SERVICES', 'TILED')
arcpy.StageService_server('C:/Project/Counties.sddraft', 'C:/Project/Counties.sd')
arcpy.UploadServiceDefinition_server('C:/Project/Counties.sd', 'My Hosted Services')
以下脚本将单个图层作为要素访问图层发布至 ArcGIS Online。
import arcpy
aprx = arcpy.mp.ArcGISProject('C:/Project/Counties.aprx')
m = aprx.listMaps('USA Counties')[0]
lyr = m.listLayers('Cities')[0]
arcpy.mp.CreateWebLayerSDDraft(lyr, 'C:/Project/Cities.sddraft', 'Cities', 'MY_HOSTED_SERVICES', 'FEATURE_ACCESS')
arcpy.StageService_server('C:/Project/Cities.sddraft', 'C:/Project/Cities.sd')
arcpy.UploadServiceDefinition_server('C:/Project/Cities.sd', 'My Hosted Services')