CreateGPSDDraft

摘要

该函数将 Result 对象和结果文件 (.rlt) 转换为服务定义草稿 (.sddraft) 文件。

注:

草稿服务定义不包含数据。草稿服务不能单独用于发布服务。

说明

CreateGPSDDraft 是使用 ArcPy 将地理处理结果自动发布到 GIS Server 的第一步。通过 CreateGPSDDraft 创建的输出是服务定义草稿 (.sddraft) 文件。服务定义草稿由结果文件或 Result 对象、服务器信息和一组服务属性组合而成。可通过设置执行工具的变量,从而在 Python 脚本中创建 Result 对象。例如,以下缓冲结果保存至名为 result 的变量中。

import arcpy
result = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")

服务器信息包括服务器连接,要发布至的服务器的类型,正在发布的服务的类型,服务的元数据(项目信息)和数据参考(是否向服务器复制数据)。

此函数会返回字典,其中包含应在创建服务定义文件之前解决的错误、警告和消息。

需要使用过渡服务工具将服务定义草稿转换为完全合并的服务定义 (.sd) 文件。过渡过程会编译成功发布 GIS 资源所需的所有必要信息。如果未将数据注册到服务器,将在过渡服务定义草稿时添加这些数据。最后,可以使用上传服务定义工具上传服务定义文件并将其作为 GIS 服务发布到特定的 GIS 服务器。此步骤将获取服务定义文件,将其复制到服务器,提取所需信息并发布 GIS 资源。有关详细信息,请参阅发布工具集概述

语法

CreateGPSDDraft (result, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags}, {executionType}, {resultMapServer}, {showMessages}, {maximumRecords}, {minInstances}, {maxInstances}, {maxUsageTime}, {maxWaitTime}, {maxIdleTime}, {capabilities}, {constantValues})
参数说明数据类型
result
[result,...]

引用磁盘上的一个或多个 Result 对象或结果文件 (.rlt)。多个结果必须以列表格式提供。以下示例演示了多个结果作为 CreateGPSDDraft 函数的输入。

import arcpy
result1 = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
result2 = arcpy.GetCount_management("FireStations")
arcpy.CreateGPSDDraft([result1, result2], "output.sddraft", "myservice")
Result
out_sddraft

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

String
service_name

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

String
server_type

表示服务器类型的字符串。如果未提供 connection_file_path 参数,则必须提供 server_type。如果提供了 connection_file_path 参数,则可从连接文件获取 server_type。在这种情况下,您可以选择 FROM_CONNECTION_FILE 或完全跳过该参数。

注:

仅当从 ArcGIS Pro 创建 .sddraft 文件时,MY_HOSTED_SERVICES 才可用。

  • ARCGIS_SERVERArcGIS Server 服务器类型。
  • FROM_CONNECTION_FILE获取 connection_file_path 参数中所指定的 server_type
  • MY_HOSTED_SERVICES创建要发布到当前门户的 .sddraft 文件。

(默认值为 ARCGIS_SERVER)

String
connection_file_path

用于表示 ArcGIS Server 连接文件 (.ags) 的路径和文件名的字符串。

String
copy_data_to_server

指示 result 中所引用的数据是否复制到服务器的布尔值。copy_data_to_server 参数仅在 server_typeARCGIS_SERVERconnection_file_path 未指定的情况下使用。如果 connection_file_path 已指定,则会使用服务器的已注册数据存储。例如,如果 result 中的数据已注册到服务器,则 copy_data_to_server 将始终为 False。相反,如果 result 中的数据未注册到服务器,则 copy_data_to_server 将始终为 True

(默认值为 False)

Boolean
folder_name

用于表示您要向其中发布服务定义的文件夹名称的字符串。如果该文件夹当前不存在,则将创建该文件夹。默认的文件夹为服务器根级别。

(默认值为 None)

String
summary

用于表示项目描述摘要的字符串。

使用此参数可以覆盖用户界面摘要,如果摘要不存在,则将提供摘要。此处提供的摘要不会保留在地图文档中。

(默认值为 None)

String
tags

用于表示项目描述标签的字符串。

使用此参数可以覆盖用户界面标签,如果标签不存在,则将提供标签。此处提供的标签不会保留在地图文档中。

(默认值为 None)

String
executionType

同步和异步定义了客户端(使用任务的应用程序)如何与服务器进行交互以及如何获取任务结果。服务设置为同步时,客户端将等待任务完成。通常,同步任务的执行速度很快,大概需要 5 秒或更短。异步任务的执行往往花费的时间较长,客户端必须定期向服务器发出询问以确定任务是否已完成,如果完成,则获取结果。使用异步任务的 Web 应用程序必须添加函数逻辑来检查任务状态,并在执行完毕后处理结果。ArcGIS Desktop 客户端可以处理这两种执行类型。

(默认值为 Asynchronous)

String
resultMapServer

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

选择此选项后,服务器上会自动生成一个地图服务,其名称与您的地理处理服务相同。

(默认值为 False)

Boolean
showMessages

用于设置地理处理服务消息级别的字符串。以下是服务返回到客户端的有效消息级别的列表:

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

(默认值为 None)

String
maximumRecords

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

(默认值为 1000)

Integer
minInstances

用于表示服务将要启动并可供使用的最少实例数的整数值。对于频繁使用的服务,您可能希望提高该值。

(默认值为 1)

Integer
maxInstances

用于表示服务可以启动并可供使用的最大实例数的整数值。对于频繁使用的服务,您可能需要提高该值。请确保服务器具有的硬件足以支持您要允许的最大实例数。

(默认值为 2)

Integer
maxUsageTime

一个服务能被使用的最长时间,以秒为单位。您可能需要延长默认值 600 秒(10分钟),以服务于长时间运行的地理处理任务。或者,您可能需要减少此时间,以确保客户端不会滥用您的服务。

(默认值为 600)

Integer
maxWaitTime

超时之前客户端连接一个实例需要等待的最长时间(以秒计)。当所有实例都忙于处理请求时,随后的请求将进入排队状态。如果在实例可被使用之前超时,任务会失败。默认值为 60 秒(1 分钟)。

(默认值为 60)

Integer
maxIdleTime

池收缩之前一个实例能继续保持活跃的最长时间(以秒计)。对于所有超出最小实例数且未被使用的实例,一旦达到最长空闲时间,即会被关闭。

(默认值为 1800)

Integer
capabilities

指定服务可以支持的功能。目前,仅支持 UPLOADS

(默认值为 None)

String
constantValues
[constantValues,...]

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

(默认值为 None)

String
返回值
数据类型说明
Dictionary

返回由信息性消息、警告和错误组成的字典。

代码示例

CreateGPSDDraft 示例 1:发布到联合服务器

以下脚本演示了将 web 工具发布到联合服务器的完整过程。Web 工具的自动发布使用 ArcPy 函数和发布工具集中的地理处理工具。工作流首先执行要发布的地理处理任务。成功运行地理处理任务后,请登录门户以继续。然后使用 ArcPy 函数 CreateGPSDDraft 创建服务定义草稿。请注意,使用摘要和标签参数会覆盖输入地理处理结果的“项目描述”、“摘要”和“标签”。该函数会返回一个分析程序字典,用于识别可能阻止成功发布的问题。解决所有严重问题后,即可过渡服务定义。过渡操作获取服务定义草稿并将发布服务所需的所有信息合并到完整的服务定义中。使用过渡服务工具过渡服务定义。最后,使用上传服务定义工具将服务定义上传到门户并发布 web 工具。

import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
portalurl = "https://myportal.esri.com/portal"
portalusername = "username"
portalpassword = "password"
serverURL = "https://myserver.esri.com/server"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.MyCustomAnalysis_reports("c:/gis/data/parcels.gdb/taxlots",
    "40", "MyOutput.pdf")
# Sign in Portal
arcpy.SignInToPortal(portalurl, portalusername, portalpassword)
# Create service definition draft and return analyzer messages
analyzeMessages = arcpy.CreateGPSDDraft(
    result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES",
    copy_data_to_server=True, folder_name=None, 
    summary="Analysis Service", tags="gp", executionType="Synchronous",
    resultMapServer=False, showMessages="INFO", maximumRecords=5000,
    minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10,
    maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors
if analyzeMessages['errors'] == {}:
    # Execute StageService
    arcpy.StageService_server(sddraft, sd)
    # Execute UploadServiceDefinition
    # Use URL to a federated server
    arcpy.UploadServiceDefinition_server(sd, serverURL)
else:
    # If the sddraft analysis contained errors, display them
    print(analyzeMessages['errors'])
CreateGPSDDraft 示例 2:发布到独立服务器

以下脚本演示了将地理处理服务发布到独立服务器的完整过程。此工作流与发布到联合服务器类似,但您无需登录到门户。此外,参数服务器类型应设置为 ARCGIS_SERVER,且需要为 CreateGPSDDraft 函数提供服务器连接 .ags 文件。上传服务定义工具的服务器连接文件还需提供服务器连接 .ags 文件。请确保预先存在的 .ags 文件具有服务器登录凭据。

import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
serverconnectionfile = "c:/gis/gp/myserver.ags"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object arcpy.ImportToolbox(toolbox) result = arcpy.MyCustomAnalysis_reports("c:/gis/data/parcels.gdb/taxlots",                                        "40", "MyOutput.pdf")
# Create service definition draft and returns analyzer messages analyzeMessages = arcpy.CreateGPSDDraft(    result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES",      connection_file_path= serverconnectionfile,
    copy_data_to_server=True, folder_name=None,     summary="Analysis Service", tags="gp", executionType="Synchronous",
    resultMapServer=False, showMessages="INFO", maximumRecords=5000,    minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10,    maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors if analyzeMessages['errors'] == {}:
    # Execute StageService    arcpy.StageService_server(sddraft, sd)    # Execute UploadServiceDefinition    # Use URL to a federated server     arcpy.UploadServiceDefinition_server(sd, serverconnectionfile)
else:
    # If the sddraft analysis contained errors, display them    print(analyzeMessages['errors'])

相关主题