MapImageSharingDraft

描述

MapImageSharingDraft 类允许您配置地图图像图层属性并创建服务定义草稿 (.sddraft) 文件,且随后可将该文件与 ArcGIS Enterprise 共享。

讨论

要创建 MapImageSharingDraft 类对象,请使用地图类函数 getWebLayerSharingDraft 并将 service_type 参数设置为 MAP_IMAGE。随后即可通过设置服务级别属性来配置 MapImageSharingDraft 类对象。使用 federatedServerUrl 属性以指定将 web 图层发布到哪个联合服务器。在 MapImageSharingDraft 类对象配置完成后,可以使用 exportToSDDraft 函数将其保存到服务定义草稿 (.sddraft) 文件。然后可以使用过渡服务上传服务定义工具将其过渡并共享到 ArcGIS Enterprise。有关详细信息,请参阅共享模块简介

属性

属性说明数据类型
copyDataToServer
(可读写)

用于指示地图中的数据是否复制到服务器的布尔值。值为 True 时,将复制地图中的所有数据 - 包括在联合服务器中注册的数据。值为 False 时,将仅复制未在联合服务器中注册的数据 - 服务将引用已在联合服务器中注册的数据。

Boolean
credits
(可读写)

用于表示制作者名单的字符串。

String
description
(可读写)

用于表示描述的字符串。

String
federatedServerUrl
(可读写)

用于表示 ArcGIS Enterprise 门户联合服务器 URL 的字符串。

提示:

联合服务器 URL 也可以用于上传服务定义工具中的 in_server 参数。以下代码示例对此进行了演示。

String
offline
(可读写)

用于决定是否使用门户连接的布尔值。如果将 offline 设置为 False,则您必须登录门户,同时向 federatedServerUrl 属性提供 ArcGIS Enterprise 门户联合服务器 URL,从而使用 exportToSDDraft 函数创建服务定义草稿 (.sddraft) 文件。如果将 offline 设置为 True,则可以在不登录门户、不填充 federatedServerUrl 属性的情况下创建服务定义草稿文件。

Boolean
overwriteExistingService
(可读写)

决定是否覆盖现有 web 图层的布尔值。

Boolean
portalFolder
(可读写)

表示要将 Web 图层发布到的门户文件夹的名称的字符串。默认文件夹是“我的内容”中的根文件夹。

String
serverFolder
(可读写)

用于表示要将服务发布到的服务器文件夹名称的字符串。默认文件夹是联合服务器的根文件夹。

String
serverType
(只读)

返回一个字符串,以表示根据地图类中的 getWebLayerSharingDraft 函数创建共享草稿时指定的服务器类型。从 serverType 返回的 MapImageSharingDraft 唯一可能的值为 FEDERATED_SERVERFEDERATED_SERVERserverType 表示支持共享至 ArcGIS Enterprise 门户联合服务器。

String
serviceName
(可读写)

用于表示 web 图层名称的字符串。用户可以看到该名称并使用该名称来识别服务。名称只能包含字母数字字符和下划线。不允许使用空格或特殊字符。名称长度不能超过 120 个字符。

String
summary
(可读写)

用于表示摘要的字符串。

String
tags
(可读写)

用于表示标签的字符串。可以添加多个标签,标签之间用逗号或分号进行分隔。

String
useLimitations
(可读写)

用于表示使用限制的字符串。

String

方法概述

方法说明
exportToSDDraft (out_sddraft)

MapImageSharingDraft 转换为服务定义草稿 (.sddraft) 文件。

方法

exportToSDDraft (out_sddraft)
参数说明数据类型
out_sddraft

用于表示输出服务定义草稿 (.sddraft) 文件的路径和文件名的字符串。

String

MapImageSharingDraft 配置完成后,即可将其作为服务定义草稿 (.sddraft) 文件进行保存。然后可以使用过渡服务上传服务定义工具将其过渡并共享到 ArcGIS Enterprise 门户联合服务器。

提示:

如果 offline 属性设置为 False,则您必须登录门户,同时向 federatedServerUrl 属性提供 ArcGIS Enterprise 门户联合服务器 URL,从而使用 exportToSDDraft 函数创建服务定义草稿 (.sddraft) 文件。但是,如果将 offline 设置为 True,则可以在不登录门户、不填充 federatedServerUrl 属性的情况下创建服务定义草稿文件。

代码示例

MapImageSharingDraft 示例

以下脚本可将地图作为地图图像图层发布到 ArcGIS Enterprise 门户联合服务器。门户信息可从 ArcGIS Pro门户页面中获得。

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service = "MapImageSharingDraftExample"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps("World")[0]

# Create MapImageSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("FEDERATED_SERVER", "MAP_IMAGE", service)
sharing_draft.federatedServerUrl = "https://MyFederatedServer.esri.com/server"
sharing_draft.summary = "My Summary"
sharing_draft.tags = "My Tags"
sharing_draft.description = "My Description"
sharing_draft.credits = "My Credits"
sharing_draft.useLimitations = "My Use Limitations"

# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)

# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "https://MyFederatedServer.esri.com/server")

print("Successfully Uploaded service.")
修改 SDDraft 示例

以下脚本可以为地图创建地图图像图层服务定义草稿 (.sddraft) 文件。然后该脚本可通过使用 xml.dom.minidom 标准 Python 库,修改服务定义草稿文件,从而在地图图像图层上启用要素访问。然后,修改后的服务定义文件会发布到 ArcGIS Enterprise 门户联合服务器。门户信息可从 ArcGIS Pro门户页面中获得。

import arcpy
import os
import xml.dom.minidom as DOM

# Set output file names.
outdir = r"C:\Project\Output"
service = "MapImage_ModifyXML_EnableFeatureAccess"
sddraft_filename = service + '.sddraft'
sddraft_output_filename = os.path.join(outdir, sddraft_filename)

# Reference map to publish.
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps('World')[0]

# Create MapImageSharingDraft and set service properties.
sddraft = m.getWebLayerSharingDraft('FEDERATED_SERVER', 'MAP_IMAGE', service)
sddraft.federatedServerUrl = "https://MyFederatedServer.esri.com/server"

# Create Service Definition Draft file.
sddraft.exportToSDDraft(sddraft_output_filename)

# Read the sddraft xml.
doc = DOM.parse(sddraft_output_filename)

# Find all elements named TypeName. This is where the server object extension
# (SOE) names are defined.
typeNames = doc.getElementsByTagName('TypeName')
for typeName in typeNames:
    # Get the TypeName we want to enable.
    if typeName.firstChild.data == "FeatureServer":
        extension = typeName.parentNode
        for extElement in extension.childNodes:
            # Enable Feature Access.
            if extElement.tagName == 'Enabled':
                extElement.firstChild.data = 'true'
				
# Output to a new sddraft.  
sddraft_mod_xml = service + '_mod_xml' + '.sddraft'
sddraft_mod_xml_file = os.path.join(outdir, sddraft_mod_xml)
f = open(sddraft_mod_xml_file, 'w')     
doc.writexml(f)     
f.close() 

# Stage Service.
sd_filename = service + '.sd'
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_mod_xml_file, sd_output_filename)

# Share to portal.
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "https://MyFederatedServer.esri.com/server")

print("Successfully Uploaded service.")