ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

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")
可通过右键单击结果窗口中的结果,并选择另存为来创建结果文件。

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

服务属性包括服务的地理处理功能和附加功能,例如,网络处理服务 (WPS)。这些功能不会显示为参数。如果需要修改值(或其他任何未显示的参数),您需要先发布 sddraft,然后通过使用 XML 库(例如 xml.dom.minidom)编辑此 .sddraft 来修改此草稿。有关库的用法,请参阅 sddraft 修改示例。尽管示例来自地图服务草稿,但可以对 GP 服务使用同一个库和方法,因为它是一个 XML 文件。

此函数返回 Python 字典,其中包含应在创建服务定义文件之前解决的错误和其他潜在问题。

可在特定服务器连接信息未知的情况下编写服务定义草稿。在这种情况下,可以忽略 connection_file_path 参数;但是必须提供 server_type。可在使用上载服务定义工具发布服务定义草稿后提供服务器连接。

随后可使用过渡服务工具将服务定义草稿转换为完全合并的服务定义 (.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})
参数说明数据类型
result
[result,...]

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

import arcpy
r1 = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
r2 = arcpy.GetCount_management("FireStations")
arcpy.CreateGPSDDraft([r1, r2], "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_SERVER —ArcGIS Server 服务器类型
  • FROM_CONNECTION_FILE —获取 connection_file_path 参数中所指定的 server_type

(默认值为 ARCGIS_SERVER)

String
connection_file_path

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

String
copy_data_to_server

指示 result 中所引用的数据是否复制到服务器的布尔值。copy_data_to_server 参数仅在 server_type 为 ARCGIS_SERVER 且 connection_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 脚本环境(ArcMap 之外)中创建结果图层,则将使用默认符号系统。要保留符号系统的控制权,您需要使用丰富的符号系统预先创建图层文件,然后使用其修改任务的输出符号系统。

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

(默认值为 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

返回值

数据类型说明
Dictionary

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

代码示例

CreateGPSDDraft 示例 1

以下脚本演示了通过 Python 脚本进行地理处理服务的完整发布。地理处理服务的自动发布使用 ArcPy 函数和发布工具集中的地理处理工具。工作流首先执行要发布的地理处理任务。成功执行地理处理任务并保存结果文件后,使用 ArcPy 函数 CreateGPSDDraft 创建服务定义草稿。请注意,使用摘要和标签参数会覆盖输入地理处理结果的“项目描述”、“摘要”和“标签”。接下来,应使用 AnalyzeForSD 函数对服务定义草稿进行分析,以找出可能会阻止成功发布的问题。分析服务定义草稿并解决严重问题后,即可开始过渡服务定义。过渡操作获取服务定义草稿并将发布服务所需的所有信息合并到完整的服务定义中。使用过渡服务地理处理工具过渡服务定义。最后,使用上传服务定义地理处理工具将服务定义上传到服务器并发布地理处理服务。

import arcpy
result = "c:/gis/gp/Analysis.rlt"
connectionPath = "c:/gis/conections/myServer.ags"
sddraft = "c:/gis/gp/drafts/AnalysisDraft.sddraft"
sd = "c:/gis/gp/sd/AnalysisDraft.sd"
serviceName = "AnalysisService"
# Create service definition draft
arcpy.CreateGPSDDraft(
    result, sddraft, serviceName, server_type="ARCGIS_SERVER",
    connection_file_path=connectionPath, 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)
# Analyze the service definition draft
analyzeMessages = arcpy.mapping.AnalyzeForSD(sddraft)
# 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
    arcpy.UploadServiceDefinition_server(sd, connectionPath)
else:
    # If the sddraft analysis contained errors, display them
    print(analyzeMessages['errors'])
CreateGPSDDraft 示例 2

该示例演示了提取数据工作流的创建与发布,并保证数据已注册到服务器。提取数据任务使用输入图层,允许用户提取感兴趣的区域并转换至另一个输出类型,接收 zip 格式的输出文件。“提取数据”工具仅使用图层作为输入。该示例使用“创建要素图层工具”创建多个图层,运行工具,创建服务定义草稿,上传用于创建服务的服务定义。在工作流的 Python 会话中创建的任意图层都将视作最终服务中的可能输入,并可作为一个选项。

import os
import arcpy
connPath = "c:/gis/conections/myServer.ags"
sddraft = "c:/gis/gp/drafts/ExtractionDraft.sddraft"
sd = "c:/gis/gp/sd/AnalysisDraft.sd"
serviceName = "DataExtractor"
arcpy.env.workspace = "c:/gis/citydata"
aoi = "c:/gis/citydata/extract.shp"
# Create layers which will be available as input
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/Cityhall',
                                  'CityHall')
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/Airport',
                                  'Airport')
arcpy.MakeFeatureLayer_management('Wiarton.gdb/places/FireStations',
                                  'FireStations')
# Run the extract data task and assign it to the 'result' variable
# only the cityhall layer was used as input, but the airport and
# firestation layers will be used in the service creation
result = arcpy.ExtractDataTask_server(
    "CityHall", aoi, "File Geodatabase - GDB - .gdb", "ESRI GRID - GRID",
    os.path.join(arcpy.env.scratchFolder, "output.zip"))
# Make sure the folder is registered with the server, if not, add
# it to the datastore
if arcpy.env.workspace not in [
        i[2] for i in arcpy.ListDataStoreItems(connPath, 'FOLDER')]:
    # both the client and server paths are the same
    dsStatus = arcpy.AddDataStoreItem(
        connPath, "FOLDER", "CityData", arcpy.env.workspace,
        arcpy.env.workspace)
    print("Data store : {0}".format(dsStatus))
# Create service definition draft
arcpy.CreateGPSDDraft(
    result, sddraft, serviceName, server_type="ARCGIS_SERVER",
    connection_file_path=connPath, copy_data_to_server=False,
    folder_name=None, summary="Extraction Service",
    tags="extract data, clip")
# Analyze the service definition draft
analyzeMessages = arcpy.mapping.AnalyzeForSD(sddraft)
# 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
    upStatus = arcpy.UploadServiceDefinition_server(sd, connPath)
    print("Completed upload")
else:
    # If the sddraft analysis contained errors, display them
    print(analyzeMessages['errors'])

相关主题

  • AnalyzeForSD
  • CreateImageSDDraft
  • CreateMapSDDraft

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明