GeoprocessingSharingDraft

摘要

可通过 GeoprocessingSharingDraft 类创建 ArcGIS EnterpriseWeb 工具服务定义文件 (.sddraft) 或 ArcGIS Server地理处理服务

说明

可使用 CreateSharingDraft 函数创建 GeoprocessingSharingDraft 对象,或使用关键字参数直接创建 GeoprocessingSharingDraft 对象。

  • 要共享 Web 工具,将 serverType 参数设置为 FEDERATED_SERVER,将 serviceType 参数设置为 WEB_TOOL
  • 要共享地理处理服务,将 serverType 参数设置为 STANDALONE_SERVER,将 serviceType 参数设置为 GP_SERVICE

配置 GeoprocessingSharingDraft 对象后,可以使用 exportToSDDraft 方法将其保存到服务定义草稿文件 (.sddraft)。 随后即可使用过渡服务上传服务定义工具将其过渡和共享给 ArcGIS EnterpriseArcGIS Server。 有关详细信息,请参阅 arcpy.sharing 简介

语法

 GeoprocessingSharingDraft (**kwargs)
参数说明数据类型
**kwargs

All properties supported by the GeoprocessingShaingDraft object can be used as keyword arguments.

String

属性

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

发布后数据类型将变为字符串的参数名称列表。 如果 web 工具中包含多个工具,则必须使用工具名称限定参数名称,例如 ["CreateHexagons.Input_Areal_Unit", "Select_Features.New_Expression"]。 这仅适用于面积单位、SQL 表达式、空间参考、坐标系、包络矩形和范围数据类型。 对其他数据类型的参数没有影响。 如果未在此列表中指定参数,并且发布的 ArcGIS GIS Server 计算机支持这些较新的类型,则默认情况下,数据类型将转换为适用的参数名称(例如 GPArealUnit)。

List
capabilities
(可读写)

指定服务将支持的功能。

  • Uploads - 客户端可以上传相关操作和资源。
  • None - 无需设置功能。 这是默认设置。
String
choiceLists
(可读写)

通过 Web 工具或地理处理服务中的选项列表输入模式,限制所有输入参数的值。

在使用此属性之前,必须先创建选项列表及其值;不能使用此属性向选项列表添加新值。 如果具有要素或栅格输入,则必须先为选项列表中的每个值创建图层,然后使用此属性限制这些值。

该属性使用一个字典,该字典以服务任务和参数名称为键,以字符串值列表为值,例如 {"ServiceTaskName.parameterName":["string1", "string2"]}。 默认值为 None

Dictionary
constantValues
(可读写)

要设置为常量的参数名称列表。 如果包含多个工具,则必须使用工具名称限定参数名称,例如 ["toolX.parameterA", "toolY.parameterD"]。 默认值为 None

List
convertFeatureLayerURL
(可读写)

指定要素图层 URL 是否将转换为文件地理数据库要素类。 此属性用于为工具输入、输出参数或工程数据保留要素图层或服务的 URL。 仅在发布到 ArcGIS EnterpriseArcGIS Server 11.2 及更高版本时使用此参数。

  • True - 要素图层 URL 将转换为文件地理数据库要素类。 这是默认设置。
  • False - 将保留要素图层 URL。
Boolean
copyDataToServer
(可读写)

指定是否将结果中引用的数据复制到服务器。 如果值为 True,则将复制结果中的所有数据,包括注册到服务器的数据。 如果值为 False,则只会复制未在服务器上注册的数据。 服务将引用已在联合服务器中注册的数据。 默认值为 False

Boolean
description
(可读写)

Web 工具或地理处理服务的描述。 默认值为 None

String
draftValue
(可读写)

用于创建服务定义草稿的地理处理 Result 对象列表。 如果使用关键字参数而不运行 CreateSharingDraft 函数,则它为必填项。

List
enableOutputFeatureService
(可读写)

指定可选的输出要素服务名称参数是否可使用名称 esri_out_feature_service_name。 默认值为 None

要将此属性设置为 TrueresultMapService 值必须为 FalseexecutionType 值必须为 Asynchronous,且 serviceType 值必须为 WEB_TOOL

如果未指定,则当满足以下所有条件时,此属性将自动设置为 True

  • resultMapService 值为 False 或未指定。
  • executionType 值为 Asynchronous 或未指定。
  • serviceType 值为 WEB_TOOL 或未指定。

有关输出要素服务的详细信息,请参阅将 Web 工具与输出要素服务一起使用

Boolean
enableOutputImageService
(可读写)

指定可选的输出影像服务参数是否可使用名称 esri_out_image_service。 默认值为 False

要将此属性设置为 TrueresultMapService 值必须为 FalseexecutionType 值必须为 Asynchronous

有关输出影像服务的详细信息,请参阅将 Web 工具与输出影像服务一起使用

Boolean
executionType
(可读写)

指定客户端(使用任务的应用程序)如何与服务器进行交互以及如何从任务获取结果。 ArcGIS Pro 可以本地处理两种处理类型。 默认值为 Asynchronous

  • Synchronous - 客户端将等待任务完成。 通常,同步任务可以快速执行(不超过五秒)。
  • Asynchronous - 任务通常需要更长的时间运行,客户端必须定期向服务器查询任务状态,如果任务已完成,则获取结果。 使用异步任务的 Web 应用程序必须已实施逻辑,才能在处理完成后检查任务状态并处理结果。 ArcGIS Pro 可以本地处理两种处理类型。

String
maxInstances
(可读写)

Web 工具或服务可以启动并可供使用的最大实例数。 对于频繁使用的 Web 工具或服务,您可以提高该值。 请确保服务器具有的硬件足以支持指明的最大实例数。

Integer
maxUsageTime
(可读写)

一个服务能被使用的最长时间(以秒计)。 对于长时间运行的地理处理任务,可以将默认值 600 秒(10 分钟)延长。 或者,您可以减少这一时间,以确保客户端不会错误地应用服务。 默认值为 600。

Integer
maxWaitTime
(可读写)

客户端在超时之前将等待连接到实例的最长时间(以秒为单位)。 当所有实例都在忙于处理请求时,随后的请求将排队。 如果在实例变为可用状态之前超时,则任务会失败。 默认值为 60。

Integer
maximumRecords
(可读写)

Web 工具或服务可以返回给客户端的最大结果数。 将此值设置成一个较大数值意味着 GIS 服务器可以将该数量的单个记录或要素发送到客户端。 如果您不希望返回任何要素,请将此值设为 0(零)。 通常情况下,只有当您启用通过地图服务查看结果时才将此值设为零。 默认值为 1000。

Integer
messageLevel
(可读写)

指定将用于 Web 工具或地理处理服务的消息级别。 以下是服务返回到客户端的有效消息级别的列表:

  • None - 除了注明与处理成功或失败有关的消息外,不会向客户端返回地理处理消息。
  • Error - 仅会向客户端返回产生错误的工具消息。
  • Warning - 将向客户端返回所有工具错误和警告消息。
  • Info - 将向客户端返回所有处理产生的工具消息。

默认值为 Error

String
minInstances
(可读写)

服务将要启动并可供使用的最少实例数。 对于频繁使用的服务,您可以提高该值。 默认值为 1。

Integer
offline
(可读写)

指定是否保存离线服务定义。 默认值为 False

  • False - 如果使用类的 exportToSDDraft 方法创建连接的服务定义草稿文件 (.sddraft),则使用。 如果 serverType 属性已设置为 FEDERATED_SERVER,登录门户。 如果 serverType 属性已设置为 STANDALONE_SERVER,则向类的 targetServer 属性提供服务器 URL 或服务器连接文件 (.ags)。
  • True - 如果使用类的 exportToSDDraft 方法创建离线的服务定义草稿文件 (.sddraft),则使用。 如果 serverType 属性已设置为 FEDERATED_SERVER,则无需登录门户,或者如果 serverType 属性已设置为 STANDALONE_SERVER,则无需提供服务器连接文件或 URL。
Boolean
offlineTarget
(可读写)

指定将发布服务定义的目标服务器版本。 指定一个版本可确保服务定义包含与服务器兼容的内容。 仅在属性 offline 设置为 True 时支持此属性。 可通过以下方式使用该属性:

  • 版本整数编号 - 使用服务器的准确版本号,而非指定目标服务器版本。 如果 convertFeatureLayerURL 属性设置为 False,且 offline 属性设置为 True,您必须使用版本整数编号。
    • 11.4 - 340
    • 11.3 - 330
    • 11.2 - 320
    • 11.1 - 310
    • 11.0 - 300
    • 10.9.1 - 209
    • 10.8.1 - 206
    • 10.7.1 - 204
  • 10x - 当发布服务器与 ArcGIS Server 10.9.1 或较早版本兼容时使用。
  • 11 - 当发布服务器与 ArcGIS Server 11.0 或更高版本兼容时使用。 准确的服务器版本取决于发布期间 ArcGIS Pro 的版本。 可以在 Web 工具兼容性中使用兼容和等效 ArcGIS ProArcGIS Server 版本的完整列表。
String
overwriteExistingService
(可读写)

指定是否覆盖现有 Web 工具或地理处理服务。 默认值为 False

Boolean
portalFolder
(可读写)

将作为 Web 工具发布的门户文件夹的名称。 默认文件夹是“我的内容”中的根文件夹。 此属性仅在 serverTypeFEDERATED_SERVER 时才可用。

String
removeDefaultValues
(可读写)

将在 Web 工具中删除默认值的参数名称列表。 如果 web 工具中包含多个工具,则必须使用工具名称限定参数名称,例如 ["BufferModel.Output_Feature_Class", "BufferModel.Distance_value_or_field"]。 要删除所有参数的默认值,请使用关键字 REMOVE_ALL,格式为 ["BufferModel.REMOVE_ALL"]

List
resultMapService
(可读写)

指定是否可采用地图形式查看服务所有任务的结果(以及任务的其他结果)。 当使用 True,地图将使用地图服务创建在服务器上,以将其以影像形式(如 .jpeg 文件)传输回客户端。 返回地图的符号系统、标注、透明度和所有其他属性与输出图层的设置完全相同。 如果您在 Python 脚本环境(ArcGIS Pro 之外)中创建结果图层,则将使用默认符号系统。 要保留符号系统的控制权,请使用符号系统创建图层文件,然后将其用于修改任务的输出符号系统。

使用 True 时,则服务器上会自动创建一个地图服务,其名称与 Web 工具或地理处理服务相同。 默认值为 False

Boolean
serverFolder
(可读写)

要发布到服务器的文件夹名称。 如果该文件夹当前不存在,则将创建该文件夹。 默认的文件夹为服务器根级别。 默认值为 None

String
serverType
(可读写)

指定创建共享草稿和设置支持共享时所使用的服务器类型。

  • FEDERATED_SERVER - ArcGIS Enterprise 门户联合服务器支持共享。
  • STANDALONE_SERVER - 独立 ArcGIS Server 站点支持共享。 这是默认设置。
String
serviceName
(可读写)

Web 工具或地理处理服务的名称。 用户可以看到该名称并使用该名称来识别服务。 名称只能包含字母数字字符和下划线。 对于 Web 工具,允许使用空格。 对于地理处理服务,不允许使用空格或特殊字符。 名称不能超过 120 个字符。 默认值为 None。 如果使用关键字参数而不运行 CreateSharingDraft 函数,则它为必填项。

String
serviceType
(可读写)

指定创建共享草稿时和共享时使用的服务类型。

  • WEB_TOOL - 如果 serverType 设置为 FEDERATED_SERVER,则会共享 Web 工具
  • GP_SERVICE - 如果 serverType 设置为 STANDALONE_SERVER,则会共享地理处理服务。 这是默认设置。
String
summary
(可读写)

Web 工具或服务摘要。 使用此属性可以覆盖用户界面摘要,如果摘要不存在,则将提供摘要。 此处提供的摘要不会保留回原始地理处理工具中。 默认值为 None

String
tags
(可读写)

Web 工具或服务标签。 使用此属性可以覆盖用户界面标签,如果标签不存在,则将提供标签。 此处提供的标签不会保留回原始地理处理工具中。 默认值为 None

String
targetServer
(可读写)

将发布 Web 工具地理处理服务的服务器。 如果 offline 属性设置为 False(默认设置),则此属性是必需的。

如果 serverType 属性已设置为 FEDERATED_SERVER,请提供 ArcGIS Enterprise 门户联合服务器的服务器 URL。

如果 serverType 属性已设置为 STANDALONE_SERVER,则支持以下内容:

  • ArcGIS Server 连接 - 您可以使用在 ArcGIS Pro 工程窗口中服务器节点下列出的 ArcGIS Server 连接,也可以浏览至存储服务器连接文件 (.ags) 的文件夹。
  • ArcGIS Server 的 URL - 如果已将 ArcGIS Server管理员连接添加到 ArcGIS Pro 工程,且您正在脚本中打开工程或在 ArcGIS Pro 中运行工具,则可以指定 ArcGIS Server 的 URL。

String

方法概述

方法说明
analyzeSDDraft ()

analyzeSDDraft 方法会在过渡服务之前分析服务定义草稿。 该方法可以返回许多错误和警告,例如缺少元数据、将数据复制到服务器或参数不兼容。

在成功运行 exportToSDDraft 方法后使用此方法。 如果没有生成服务定义草稿文件,则尝试使用此方法时将会出错。

exportToSDDraft (out_sddraft)

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

方法

analyzeSDDraft ()
返回值
数据类型说明
Dictionary

包含分析器错误和警告的字典。

字典中的错误和警告都将以元组列表的形式提供,如果存在元组,那么每个元组中都有分析器代码和分析器消息。 如果没有错误或警告,则字典中的 errorswarnings 键会具有空列表作为值。

以下是 analyzeSDDraft 函数的返回示例,显示无分析器错误,但有一个分析器警告:

{
  'errors': [], 
  'warnings': [
    (24032, 'Data source used by CustomizedModel is not registered with the server and will be copied to the server: raster_data')
  ], 
  'messages': []
}
exportToSDDraft (out_sddraft)
参数说明数据类型
out_sddraft

A string that represents the path and file name for the output service definition draft file (.sddraft).

String

代码示例

GeoprocessingSharingDraft 示例 1

以下脚本可使用关键字参数创建一个 GeoprocessingSharingDraft 对象。 当脚本运行完成时,会将一个 Web 工具发布到 ArcGIS Enterprise。 由于工具的输入参数是要素图层,Web 工具参数的输入模式是选项列表,因此会发出有关复制到联合 ArcGIS Server 的数据的分析器警告。

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUsername", "MyPassword")

# Set output file names
outdir = r"C:\Project"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://server.domain.com/webadaptor"
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)

# Run the tool and set the history to a result object
arcpy.ImportToolbox(os.path.join(outdir, "MyAnalysisTools.atbx"))
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft using keyword arguments
sddraft = arcpy.sharing.GeoprocessingSharingDraft(serverType="FEDERATED_SERVER", serviceType="WEB_TOOL",
              serviceName=service_name, draftValue=[result], targetServer=federated_server_url,
              GPStringValues=["Input_Areal_Unit"])

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

# Get the analyzer messages
analyzer_results = sddraft.analyzeSDDraft()

if len(analyzer_results["errors"]) > 0:
    # Display the analyzer error or processing error messages
    for code, message in analyzer_results["errors"]:
        print (message)
    # Raise an exception and exit the script
    raise arcpy.ExecuteError
    
# Display the analyzer warning messages using the analyze function
for code, message in analyzer_results["warnings"]:
    print (message)

# Run Stage Service tool
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Share to portal
arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
GeoprocessingSharingDraft 示例 2

以下脚本可以创建 Web 工具服务定义草稿文件 (.sddraft)。 然后,系统会将服务定义草稿文件过渡并作为 Web 工具发布到 ArcGIS Enterprise。 由于工具的第一个工具输入参数是要素类,因此 Web 工具参数的输入模式用户定义

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUsername", "MyPassword")

# Set output file names
outdir = r"C:\Project"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set its properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"

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

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Share to portal
    arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
    # Display the analyzer error or processing error messages
    print(arcpy.GetMessages(2))
GeoprocessingSharingDraft 示例 3

以下脚本可以覆盖 Web 工具服务定义草稿文件 (.sddraft)。 如果服务名称已存在,则将覆盖该 web 工具。 否则,将创建新 web 工具。 由于第一个工具输入参数是图层,而 GeoprocessingSharingDraft 类的 choiceLists 参数包含两个图层,web 工具参数的输入模式为包含两个图层的选项列表

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUsername", "MyPassword")

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)

# Run the tool and set to a result object
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots1"), "taxlotslayer1")
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots2"), "taxlotslayer2")
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis("taxlotslayer1", "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set overwrite and choicelists properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"
sddraft.overwriteExistingService = True
sddraft.choicelists = {"mywebtooltask.parameter1": ["taxlotslayer1", "taxlotslayer2"]}

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

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Share to portal
    arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
    # Display the analyzer error or processing error messages
    print(arcpy.GetMessages(2))
GeoprocessingSharingDraft 示例 4

以下脚本将为目标门户版本创建离线服务定义,并将其发布为 Web 工具。

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "50", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set offline and offlineTarget properties
server_type = "FEDERATED_SERVER"
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.offline = True
# Set offlineTarget property to "11" for ArcGIS Enterprise 11.0 or later
# The default is ArcGIS Enterprise 10.9.1 or earlier
sddraft.offlineTarget = "10x"

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

# Run Stage Service tool
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Sign in to portal to upload and publish
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUserName", "MyPassword")
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)

print("Finish Publishing")
GeoprocessingSharingDraft 示例 5

以下脚本将创建地理处理服务的服务定义草稿文件 (.sddraft)。 然后,系统会将脚本服务定义草稿文件过渡并作为地理处理服务发布到 ArcGIS Server。 由于工具的第一个工具输入参数是要素类,地理处理参数的输入模式用户定义

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
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)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft
target_server_connection = os.path.join(outdir, "gp_publisher_conn.ags")
sddraft = arcpy.sharing.CreateSharingDraft("STANDALONE_SERVER", "GP_SERVICE", service_name, result)
sddraft.targetServer = target_server_connection
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"

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

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Publish to stand-alone server
    arcpy.server.UploadServiceDefinition(sd_output_filename, target_server_connection)
except arcpy.ExecuteError:
    # Display the analyzer error or processing error messages
    print(arcpy.GetMessages(2))