说明
要创建 ImageSharingDraft 对象,使用 CreateSharingDraft 函数。
- 要共享 Web 影像图层,将 server_type 参数设置为 FEDERATED_SERVER,并将 service_type 参数设置为 WEB_IMAGERY_LAYER。
- 要共享影像服务,将 server_type 参数设置为 STANDALONE_SERVER,将 service_type 参数设置为 IMAGE_SERVICE。
然后,可通过设置服务级别或图层级别属性配置 ImageSharingDraft 对象。 使用 targetServer 属性指定要发布影像服务和 Web 影像图层的服务器。
还可以通过修改 .sddraft 文件设置影像服务和 Web 图层属性。 如果属性值未指定,则将使用默认值。 您必须设置属性值,即使您要覆盖的影像服务或 Web 影像图层具有现有已配置属性。
注:
如果未设置元数据属性(credits、description、summary、tags 和 useLimitations)或其具有空字符串,则 Web 图层项目将从数据中获取元数据,具体取决于共享的内容。
配置 ImageSharingDraft 对象后,可以使用 exportToSDDraft 方法将其保存到服务定义草稿文件 (.sddraft)。 随后即可使用过渡服务和上传服务定义工具将其过渡和共享给 ArcGIS Enterprise 或 ArcGIS Server。
下方代码示例可用于以下用途:
属性
属性 | 说明 | 数据类型 |
allowAnalysis (可读写) | 指定“栅格分析”工具箱中的地理处理服务工具是否可以访问 Web 影像图层或影像服务。 | Boolean |
allowCopy (可读写) | 指定下载栅格地理处理服务工具是否可以访问 Web 影像图层或影像服务。 | Boolean |
allowCompressions (可读写) | 指定允许用于 Web 影像图层或影像服务的压缩方法。
| String |
allowedFields (可读写) | 要传输到客户端的字段。 以逗号分隔字符串或字符串列表的形式提供字段。 | String |
allowedItemMetadata (可读写) | 指定要传输到客户端的元数据项目:
| String |
allowedMensurationCapabilities (可读写) | 指定通过源的测量功能获得并作为数据集属性的一部分列出的方法。 这些方法用于确定可用于 Web 影像图层或影像服务的测量工具。
| String |
allowedMosaicMethods (可读写) | 指定允许用于 Web 影像图层或影像服务的镶嵌方法。
此属性仅适用于镶嵌数据集。 | String |
allowedTemplates (可读写) | 服务器端栅格函数名称。 以逗号分隔字符串或字符串列表的形式提供字段。 | String |
allowFunction (可读写) | 指定客户端是否可以访问和控制服务器端渲染和处理。 | Boolean |
cache.cacheOnDemand (可读写) | 指定未缓存的切片是否将按需(即当客户端应用程序请求时)创建。 默认值为 False。 | Boolean |
cache.configuration (可读写) | 由生成地图服务器缓存切片方案工具生成的预定义切片方案 .xml 文件的路径和文件名。 | String |
cache.exportTiles (可读写) | 指定是否允许客户端下载切片以供离线使用。 默认值为 False。 | Boolean |
cache.exportTilesCount (可读写) | 单个请求中可下载的最大切片数量。 仅在 cache.exportTiles 属性设置为 True 时支持此属性。 默认值为 100000。 | Integer |
cache.useExistingCache (可读写) | 指定是否从现有缓存中提取数据。 仅在 enableCache 属性设置为 True 时支持此属性。 默认值为 False。 | Boolean |
cacheControlMaxAge (可读写) | 允许浏览器使用缓存响应的时间。 | Integer |
colormapToRGB (可读写) | 指定是否通过将色彩映射表应用于影像将栅格数据集中的色彩映射表发布为 RGB 影像。 这会影响像素值,因为像素值将从单个值和关联色彩映射表更改为三波段像素值。 要保留色彩映射表并根据其色彩映射表查询像素,指定 False。 此属性仅适用于具有色彩映射表的栅格数据集,也适用于将栅格数据集图层或镶嵌数据集于 Colormap 函数搭配使用的情况。 | Boolean |
copyDataToServer (可读写) | 指定是否将数据复制到服务器。 值为 True 时,将复制所有数据,包括注册到服务器中的数据。 值为 False 时,仅会复制未在服务器中注册的数据。 服务将引用已在服务器中注册的数据。 默认值为 False。 | Boolean |
credits (可读写) | Web 影像图层或影像服务的配额。 | String |
defaultCompressionQuality (可读写) | 默认压缩质量。 提供介于 0 到 100 之间的值。 值 80 通常能在保证影像质量的同时提供大约八倍的压缩。 | Integer |
defaultCompressionTolerance (可读写) | 适用于每个像素的最大误差值,并非图像的平均值。 该值以镶嵌数据集的单位指定。 例如,如果误差为 10 厘米并且镶嵌数据集的单位为米,则使用值 0.1。 | Double |
defaultResamplingMethod (可读写) | 指定要在请求中使用的重采样方法。
| String |
defaultTemplate (可读写) | 默认服务器端栅格函数模板 (RFT) 名称。 | String |
DEM (可读写) | 要在测量时使用的高程源。 这样可以在 3D 模式下进行测量。 | String |
description (可读写) | Web 影像图层或影像服务的描述。 默认值为 None。 | String |
downloadDirectory (可读写) | 下载目录。 此属性用于将影像所在的物理目录映射到将在其中映射影像 URL 的虚拟目录。 如果允许下载,则服务必须使用指向镶嵌数据集的源栅格的目录。 当影像服务将文件从镶嵌数据集源目录复制到服务器输出目录时,这将避免可能出现的性能瓶颈问题。 将此属性与 virtualDownloadDirectory 属性配合使用。 | String |
enableCache (可读写) | 指定图层是否动态绘制或从缓存绘制。 默认值为 False。 | Boolean |
hasLiveData (可读写) | 指定服务是否将反映数据更改。 在将新栅格添加到 Web 影像图层或影像服务的镶嵌数据集后,源分辨率、空间范围、多维信息和时间范围等影像服务信息可能会过时。 可重新启动服务以反映数据更改。 如果您不允许服务出现任何中断,将此参数设置为 True 以在不重新启动服务的情况下反映数据更改。 | Boolean |
maxDownloadImageCount (可读写) | 用户一次可以下载的最大栅格数。 此属性仅适用于镶嵌数据集。 | Integer |
maxDownloadSizeLimit (可读写) | 一次可下载的兆字节 (MB) 总数。 此属性仅适用于镶嵌数据集。 | Integer |
maxImageHeight (可读写) | 可在客户端请求中使用的最大行数。 | Integer |
maxImageWidth (可读写) | 可在客户端请求中使用的最大列数。 | Integer |
maxMosaicImageCount (可读写) | 每次请求的最大可镶嵌栅格数。 这样可以防止服务器需要为单个请求打开大量栅格并对其进行处理。 | Integer |
maxRecordCount (可读写) | 将在查询期间返回的最大记录数。 默认值为 2000。 | Integer |
maxSampleCount (可读写) | 最大样本计数。 该操作可为给定几何生成源数据的采样点位置、像素值和相应的空间分辨率。 默认情况下,最大采样位置数为 1,000。 | Integer |
maxScale (可读写) | 缓存可用的最大比例的分母。 对于未缓存的服务,使用值 0。 | Double |
minScale (可读写) | 缓存可用的最小比例的分母。 对于未缓存的服务,使用值 0。 | Double |
offline (可读写) | 指定是否保存离线服务定义。
| Boolean |
overwriteExistingService (可读写) | 指定是否覆盖具有相同名称的现有服务。 | Boolean |
pooling.maxInstances (可读写) | 每台计算机的最大实例数 仅在 pooling.type 属性设置为 DEDICATED 时支持此属性。 | Integer |
pooling.minInstances (可读写) | 每台计算机的最小实例数: 仅在 pooling.type 属性设置为 DEDICATED 时支持此属性。 | Integer |
pooling.type (可读写) | 指定要使用的池化实例的类型。
| String |
portalFolder (可读写) | 门户中要发布的文件夹的名称。 默认文件夹是“我的内容”中的根文件夹。 仅当 serverType 属性设置为 FEDERATED_SERVER 时才支持此属性。 | String |
referenceImage (可读写) | 要用于对源栅格数据集进行地理配准的参考栅格数据集、镶嵌数据集或栅格图层。 | String |
returnJPGPNGAsJPG (可读写) | 指定是否要返回 JPG 图像。 当使用 JPGPNG 格式请求影像时,如果存在透明度,则返回 PNG 图像;否则返回 JPG 图像。 PNG 图像通常比 JPG 图像大很多,传输花费的时间可能更长。 如果不需要透明度并且您想要确保始终使用较小的图像大小来传输 Web 影像图层或影像服务,指定 True。 | Boolean |
serverFolder (可读写) | 服务将发布到的服务器文件夹的名称。 默认文件夹是服务器的根文件夹。 文件夹如果不存在将进行创建。 | String |
serverType (可读写) | 指定创建共享草稿和设置支持共享时所使用的服务器类型。
| String |
serviceName (只读) | 影像服务或 web 影像图层的名称。 用户可以看到该名称并使用该名称来识别服务。 名称只能包含字母数字字符和下划线。 对于 Web 影像图层,可以使用空格。 对于影像服务,不允许使用空格或特殊字符。 名称不能超过 120 个字符。 | String |
sharing.groups (可读写) | 以逗号分隔的组名称。 仅当 serverType 属性设置为 FEDERATED_SERVER 时,此属性才可用。 | String |
sharing.sharingLevel (可读写) | 指定 Web 图层的共享级别。 仅当 serverType 属性设置为 FEDERATED_SERVER 时,此属性才可用。
| String |
sortField (可读写) | 当 allowedMosaicMethods 属性设置为 ByAttribute 时,默认镶嵌规则的排序字段。 | String |
sortValue (可读写) | 当 allowedMosaicMethod 属性设置为 ByAttribute 时,默认镶嵌规则的排序基础值。 类型取决于属性类型。 | String |
summary (可读写) | 服务汇总。 在提供值后,该属性将替代数据集汇总,或当汇总不存在时,提供汇总。 提供的汇总不会应用于原始数据集。 默认值为 None。 | String |
tags (可读写) | 服务标签。 在提供值后,此属性将替代数据集上的标签,或在标签不存在时,提供标签。 提供的标签不会应用于原始数据集。 默认值为 None。 | String |
targetServer (可读写) | 要发布服务的服务器。 当 offline 属性设置为 False 时(这是默认设置),必须设置该属性。 当 serverType 属性设置为 FEDERATED_SERVER 时,提供 ArcGIS Enterprise 门户联合服务器的服务器 URL。 当 serverType 属性设置为 STANDALONE_SERVER 时,则支持以下内容:
| String |
useLimitations (可读写) | Web 图层的使用限制。 | String |
virtualDownloadDirectory (可读写) | 虚拟下载目录。 此属性用于将影像所在的物理目录映射到将在其中映射影像 URL 的虚拟目录。 如果允许下载,则服务必须使用指向镶嵌数据集的源栅格的目录。 当影像服务将文件从镶嵌数据集源目录复制到服务器输出目录时,这将避免可能出现的性能瓶颈问题。 将此属性与 downloadDirectory 属性配合使用。 | String |
方法概述
方法 | 说明 |
exportToSDDraft (out_sddraft) | 将 ImageSharingDraft 转换为服务定义草稿文件 (.sddraft)。 |
方法
exportToSDDraft (out_sddraft)
参数 | 说明 | 数据类型 |
out_sddraft | The path and file name for the output service definition draft file (.sddraft). | String |
代码示例
以下脚本将创建 Web 图像图层服务定义草稿文件 (.sddraft),并设置元数据属性。 建议在发布之前注册数据位置。 如果未注册数据位置,则数据将复制到 ArcGIS Server。 随后,Web 影像图层将发布到 ArcGIS Enterprise 中的文件夹并与所有人(公众)共享。 可使用 SignInToPortal 函数获取门户信息。
import arcpy
import os
# Sign in to portal
arcpy.SignInToPortal(portal_url="https://organization.example.com/webadaptorname", username="MyUserName", password="MyPassword")
# Set output file names
outdir = r"C:\Project\Output"
service_name = "ImageSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
datapath = r"C:\Project\data\Raster1.tif"
# Create ImageSharingDraft and set metadata, portal folder, and server folder properties
federated_server_url = "https://gisserver.example.com/webadaptor"
sddraft = arcpy.sharing.CreateSharingDraft(server_type="FEDERATED_SERVER", service_type="WEB_IMAGERY_LAYER",
service_name=service_name, draft_value=datapath)
sddraft.targetServer = federated_server_url
sddraft.credits = "These are credits"
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.useLimitations = "These are use limitations"
sddraft.portalFolder = "my folder name"
sddraft.serverFolder = "MyServerFolder"
sddraft.sharing.sharingLevel = "EVERYONE"
sddraft.sharing.groups = "" # Group names = "group1,group2"
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
print("Finish Publishing")
以下脚本将为影像服务创建服务定义草稿文件 (.sddraft),并设置元数据属性。 影像服务将发布到独立 ArcGIS Server 站点中的文件夹。
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service_name = "ImageSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
datapath = r"C:\Project\data\Raster2.crf"
# Create ImageSharingDraft and set metadata and server folder properties
target_server_connection = r"C:\Project\gisserver.ags.esri.com (publisher).ags"
sddraft = arcpy.sharing.CreateSharingDraft(server_type="STANDALONE_SERVER", service_type="IMAGE_SERVICE",
service_name=service_name, draft_value=datapath)
sddraft.targetServer = target_server_connection
sddraft.credits = "These are credits"
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.useLimitations = "These are use limitations"
sddraft.serverFolder = "MyServerFolder"
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Publish to server
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, target_server_connection)
print("Finish Publishing")
以下脚本将覆盖 Web 影像图层。 如果 Web 影像图层名称已存在,则将覆盖图层;否则,将创建新图层。 如果希望 Web 图层具有特定的属性,则必须设置属性值,即使要覆盖的 Web 图层已配置了属性。 否则,现有属性将被默认设置覆盖。
import arcpy
import os
# Sign in to portal
arcpy.SignInToPortal(portal_url="https://organization.example.com/webadaptorname", username="MyUserName", password="MyPassword")
# Set output file names
outdir = r"C:\Project\Output"
service_name = "ImageSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
datapath = r"C:\Project\data\Sample.gdb\Mosaic1"
# Create ImageSharingDraft and set overwrite property
federated_server_url = "https://gisserver.example.com/webadaptor"
sddraft = arcpy.sharing.CreateSharingDraft(server_type="FEDERATED_SERVER", service_type="WEB_IMAGERY_LAYER",
service_name=service_name, draft_value=datapath)
sddraft.targetServer = federated_server_url
sddraft.overwriteExistingService = True
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
print("Finish Publishing")
以下脚本将覆盖影像服务。 如果服务名称已存在,将覆盖该服务;否则,将创建新服务。 如果希望影像服务具有特定属性,则必须设置属性值,即使要覆盖的影像服务已配置属性。 否则,现有属性将被默认设置覆盖。
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service_name = "ImageSharingDraftExample"
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
datapath = r"C:\Project\data\Sample.gdb\Mosaic2"
# Create ImageSharingDraft and set metadata, and server folder properties
target_server_connection = r"C:\Project\gisserver.ags.esri.com (publisher).ags"
sddraft = arcpy.sharing.CreateSharingDraft(server_type="STANDALONE_SERVER", service_type="IMAGE_SERVICE",
service_name=service_name, draft_value=datapath)
sddraft.targetServer = target_server_connection
sddraft.overwriteExistingService = True
# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)
# Stage Service
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, target_server_connection)
print("Finish Publishing")