创作和共享地理处理服务快速浏览

创作地理处理服务需要在服务中创作任务。创作任务就是选择或创建工具,定义任务的输入和输出参数以及任务使用的所有数据的位置。下面详细介绍了各步骤:

示例:简单的供需模型

下图以使用模型构建器创建的将包括到任务中的工具为例。该模型(和发布的任务)是一个非常简单的供需分配模型;给定一组用于表示提供服务的点位置(例如应急响应或零售设施点),以及另一组用于表示需求的点位置(例如需要服务提供的家庭和商店),目的是将需求点分配给最近设施点,为各设施点创建贸易区,并汇总设施点贸易区中的全部需求。输出是一组面,每个输入设施点对应一个面,这些设施点的属性包含面内的全部请求。

简单的供需分配模型

请注意,在上面的模型中,设施点需求点输出泰森多边形变量都是模型的参数(它们旁边有一个 P)。这些模型参数将作为任务的参数,由任务的客户端在执行任务时提供。

模型参数显示在工具对话框中,如下所示,其中,模型工具从目录 窗口打开。

从“目录”窗口打开模型工具以打开其工具对话框

模型作为工具运行时,结果将写入到结果 窗口中,如下图所示。结果中包含了 ArcGIS 构造任务所需的全部信息。

结果包含 ArcGIS 用于构造地理处理任务所需的全部信息

注注:
在模型构建器中运行模型时不会创建结果。必须使用模型的工具对话框或 Python 窗口执行模型才能创建结果。

结果的另一个重要方面是它是 ArcMap 会话的一部分,因此其对内容列表 中的所有图层和表格具有访问权限,发布的任务也可对这些图层具有访问权限。上图所示的内容列表仅包含两个输入图层和一个输出,但它也可以包含更多可用于任务的客户端的图层(例如零售点位置图层)。

地理处理服务及其初始任务的创建方法是右键单击结果并选择共享为 > 地理处理服务。这将打开共享为服务 向导,并且在选择了服务器连接和服务名称之后,将打开服务编辑器 对话框。服务编辑器 用于定义服务的属性和设置以及各任务参数的属性。下图显示了如何设置 Facilities 参数的输入模式。在本例中,输入模式设置为用户定义值,也就是说,客户端将提供一组具有文本属性 FacilityName 的点。

在服务编辑器中定义输入模式

这里的关键点是服务编辑器 可详细地控制任务的输入和输出的定义。虽然这发生在共享进程中,但它会影响您创作工具的方式。

示例:其他输入模式

生成近邻表工具是一种系统工具,用于计算距离输入要素最近的要素并在表中返回结果。在本例中,生成近邻表用于返回在任何输入点五英里范围内的所有小学、中学、消防站、杂货店和零售店。这里,输入点被视为待售房屋 - 这是一个用于帮助购房者评估待售房屋的简单服务。输入的所有数据集都是 ArcMap 内容列表中的图层。

使用“生成近邻表”系统工具创建结果并共享为服务

结果共享为地理处理任务时,邻近要素可以是一个要搜索的邻近要素的选择列表,如下所示。客户端将指定这些图层中的一个或多个。例如,客户端可能仅对最近的中学和小学感兴趣,而对其他图层不感兴趣。

使用选择列表作为输入模式

或者,邻近要素可以是固定值(常量值),在这种情况下,它不再是任务的参数,并且客户端不控制要返回的邻近要素;它们始终获取所有最近要素表。

使用常量值作为输入模式

输入模式

在在上面的示例中,您已经看到了设置输入模式是一个多么重要的任务设计和创作决策。输入模式在服务编辑器 中进行设置,因为这仅涉及地理处理任务,而不涉及基础工具。输入要素有三种输入模式:

了解有关输入模式和数据类型的详细信息

示例:脚本工具

也可使用脚本工具来创建任务。下图显示了脚本工具的属性页,该脚本工具所做的工作与上面所创建的简单供需模型完全相同,唯一的区别是使用 Python 脚本语言而不是使用模型构建器。它所包含的参数与模型相同,并且使用相同的步骤来创建任务:运行该工具创建结果,然后将结果共享为地理处理服务。

脚本工具属性页
脚本工具及其参数属性

项目数据和数据存储

项目数据是地理处理用来描述非参数的输入数据的术语;即数据不是由工具或任务的用户提供,但工具或任务可内部使用。例如,下面模型中的 San Francisco Network Dataset 变量就是一个项目数据,它被模型使用但并不显示为参数。一般地,模型的项目数据表示为一个蓝色椭圆,旁边没有 P。

模型中的项目数据

项目数据也可以显示在脚本中,如下面的 Python 代码片段中所示。

import arcpy

# The inputPoints variable is considered to be project data 
#   since it is not an input parameter.
#  
inputPoints = r"c:\data\Toronto\residential.gdb\shelters"

arcpy.Buffer_analysis(inputPoints, 'shelterBuffers', '1500 Meters')

服务编辑器 中,输入模式常量值的输入数据参数相当于项目数据 - 它是由工具使用的数据,但不显示为任务参数。可以将常量值输入模式视为移除模型构建器中变量参数旁的 P。

创作和共享任务时,需要重点考虑项目数据,因为在执行任务时,服务器必须可访问项目数据。地理处理服务往往会使用不同的位置上的许多不同的数据。通常情况下,服务中所存在的问题都可追溯为项目数据访问问题。

发布结果时,发布进程将对用于生成结果的所有模型和脚本进行扫描,查找其中的项目数据。然后确定如何使用该数据。只有两种选择:

  1. 如果可在服务器的数据存储中找到项目数据,那么发布的任务就会使用数据存储中的数据。
  2. 如果无法在服务器的数据存储中找到项目数据,那么数据会首先复制到服务器,置于服务器上一个可访问的已知位置(服务器的输入目录)然后发布的任务才使用复制的数据。复制的数据不会成为服务器的数据存储的一部分。如果重新发布该任务,则将再次复制数据。

关于数据存储

ArcGIS Server 的每次安装都将包含一个数据存储。数据存储是一种用户为服务器提供服务器可访问的一系列数据位置的方式。如果服务器可以访问数据,则在发布时,不会将在本地计算机上找到的数据复制到服务器。

有关将数据注册到 ArcGIS Server 的详细信息,请参阅:

简单数据输入,简单数据输出

GIS 服务必须使用所有客户端中的最简单客户端:没有任何 GIS 功能的计算机上运行的 Web 浏览器。这些简单的客户端仅知道如何向服务器发送简单数据包,例如文本、数字、表和地理要素及其属性。而不知道您在 ArcGIS for Desktop 中所使用的任何更高级的地理数据表达,例如网络数据集、拓扑、TIN、关系类、几何网络等。这些数据集称为复杂数据集;它们用于对简单要素之间的复杂关系进行建模。复杂数据集不能通过 Internet 进行传输;通过 Internet 只能传输简单的要素、表、栅格和文件。

创作任务时,您需要清楚的一点是,所有客户端(无论它们是 Web 应用程序、ArcGIS Explorer 还是 ArcGIS for Desktop)都仅仅知道如何发送和接收(传输)这些简单数据集。即便您知道服务将仅由复杂客户端访问,例如 ArcMap,创作任务时也应限制为简单输入数据。

有关可传输和不可传输数据集的详细信息,请参阅输入模式和参数数据类型主题。

使用地图服务绘制任务结果

发布地理处理服务时,可以选择以地图形式查看任务结果(以及任务的所有其他结果)。地图将在服务器上使用 ArcMap 创建,创建完毕后再将地图传输回客户端。返回地图的符号系统、标注、透明度和所有其他属性与当前 ArcMap 会话中的输出图层相同。创建结果地图服务的工作流非常简单:

如果输出图层要绘制唯一值,则可能需要取消选中图层属性中的 <所有其他值> 以在绘制之前强制重新计算唯一值。有关详细信息,请参阅创建图层符号系统文件主题。

编写任务文档

如果您希望尽可能多的人发现、了解和使用服务,至关重要的一点是编写服务和任务的文档。

良好的文档的编写从创建要发布的结果的工具开始。系统中的每个工具都具有项目描述,可通过在目录 窗口中右键单击工具并选择项目描述来查看和编辑详细的描述信息。

了解有关编写地理处理服务和任务文档的详细信息

地理处理环境设置

地理处理环境设置是影响工具执行结果的附加参数。这些参数与常规工具参数的区别在于它们不会显示在工具对话框中(存在某些例外情况)。更确切地说,这些参数是先前使用独立对话框设置的值,工具在运行时将询问和使用这些参数。

环境设置等级

可采用多种方法更改环境设置,并且可以将更改的地方视为等级中的级别。环境设置逐级别进行传递。在每个级别上,都可以用其他设置覆盖所传入的环境设置。

  • 应用程序级别 - 在主菜单中,单击地理处理 > 环境。在此所做的更改将影响所有工具的执行。
  • 工具级别 - 在工具的对话框中,单击环境按钮。将打开环境设置 对话框。请注意,无论工具是否支持所有环境设置,这些环境设置都会列出在环境设置 对话框中。您需要查阅工具的参考页面以确定工具是否支持该环境设置。在此所做的更改将会覆盖在应用程序级别上所做的原始设置。这些设置仅应用于工具的执行;不会覆盖应用程序级别设置。
  • 模型、模型过程或脚本级别 - 在模型或脚本中,可以高度控制环境设置。可以更改模型或脚本中某一特定工具、一组工具或所有工具的环境设置。在此级别所做的设置会覆盖在工具或应用程序级别所做的所有设置。

环境设置存储在结果中

结果 窗口中的结果将存储在应用程序或工具级别所做的所有环境设置。在服务器上执行任务时,任务执行期间将使用结果中的环境设置。但是,在模型或脚本级别所做的设置不会显示在结果中,但在任务执行期间将使用这些设置。可以将结果中的环境设置视为传递到模型或脚本工具,然后将覆盖设置。

相关主题

9/15/2013