创作地理处理服务需要在服务中创作任务。创作任务就是选择或创建工具,定义任务的输入和输出参数以及任务使用的所有数据的位置。下面详细介绍了各步骤:
- 选择一个或多个要作为服务中的任务的地理处理工具。可以使用 ArcGIS 所提供的若干系统工具中的一个,或者使用模型构建器或 Python 脚本创建自己的工具。
- 收集执行工具所需的输入数据。通常,这些数据集是 ArcMap 内容列表中的图层。
- 执行工具在结果 窗口中创建结果。
- 如果必要,定义输入和输出数据集的符号系统。
- 将结果共享为地理处理服务。共享结果时,使用服务编辑器 定义数据集的输入模式(如下所述)以及服务和其任务的其他属性。
示例:简单的供需模型
下图以使用模型构建器创建的将包括到任务中的工具为例。该模型(和发布的任务)是一个非常简单的供需分配模型;给定一组用于表示提供服务的点位置(例如应急响应或零售设施点),以及另一组用于表示需求的点位置(例如需要服务提供的家庭和商店),目的是将需求点分配给最近设施点,为各设施点创建贸易区,并汇总设施点贸易区中的全部需求。输出是一组面,每个输入设施点对应一个面,这些设施点的属性包含面内的全部请求。
请注意,在上面的模型中,设施点、需求点和输出泰森多边形变量都是模型的参数(它们旁边有一个 P)。这些模型参数将作为任务的参数,由任务的客户端在执行任务时提供。
模型参数显示在工具对话框中,如下所示,其中,模型工具从目录 窗口打开。
模型作为工具运行时,结果将写入到结果 窗口中,如下图所示。结果中包含了 ArcGIS 构造任务所需的全部信息。
- 用于创建结果的工具箱和工具的名称和位置。
- 运行该工具所生成的输出结果 (ThiessenPolys1)。
- 输出结果的方案(要素类型和属性)。
- 输出结果的符号系统。在此示例中,输出符号系统是分级色彩,具体取决于各面要素内的需求总和。
- 工具的输入(Fire Stations 和 Hazardous Material Sites 图层)。
- 各输入的方案(要素类型和属性)。本例中,Fire Stations 具有一个文本属性:FacilityName。Hazardous Material Sites 也具有一个属性:Demand,长整型。
- 输入的符号系统。在此示例中,Fire Stations 图层使用消防站符号对各位置点进行符号化,Demand 图层使用分级圆圈进行符号化。
工具执行时的地理处理环境设置。
结果的另一个重要方面是它是 ArcMap 会话的一部分,因此其对内容列表 中的所有图层和表格具有访问权限,发布的任务也可对这些图层具有访问权限。上图所示的内容列表仅包含两个输入图层和一个输出,但它也可以包含更多可用于任务的客户端的图层(例如零售点位置图层)。
地理处理服务及其初始任务的创建方法是右键单击结果并选择共享为 > 地理处理服务。这将打开共享为服务 向导,并且在选择了服务器连接和服务名称之后,将打开服务编辑器 对话框。服务编辑器 用于定义服务的属性和设置以及各任务参数的属性。下图显示了如何设置 Facilities 参数的输入模式。在本例中,输入模式设置为用户定义值,也就是说,客户端将提供一组具有文本属性 FacilityName 的点。
这里的关键点是服务编辑器 可详细地控制任务的输入和输出的定义。虽然这发生在共享进程中,但它会影响您创作工具的方式。
示例:其他输入模式
生成近邻表工具是一种系统工具,用于计算距离输入要素最近的要素并在表中返回结果。在本例中,生成近邻表用于返回在任何输入点五英里范围内的所有小学、中学、消防站、杂货店和零售店。这里,输入点被视为待售房屋 - 这是一个用于帮助购房者评估待售房屋的简单服务。输入的所有数据集都是 ArcMap 内容列表中的图层。
结果共享为地理处理任务时,邻近要素可以是一个要搜索的邻近要素的选择列表,如下所示。客户端将指定这些图层中的一个或多个。例如,客户端可能仅对最近的中学和小学感兴趣,而对其他图层不感兴趣。
或者,邻近要素可以是固定值(常量值),在这种情况下,它不再是任务的参数,并且客户端不控制要返回的邻近要素;它们始终获取所有最近要素表。
输入模式
在在上面的示例中,您已经看到了设置输入模式是一个多么重要的任务设计和创作决策。输入模式在服务编辑器 中进行设置,因为这仅涉及地理处理任务,而不涉及基础工具。输入要素有三种输入模式:
用户定义值:客户端将创建一个要素集,其将通过 Internet 传输以供任务读取。指定用户定义值作为输入模式时,输入图层的要素类型、属性、空间参考和符号系统都存储在要素集中。客户端可检索此方案并使用它将要素数字化到要素集中或将要素从磁盘上的文件中加载到要素集中。对于输入表而言,包含一个对应的记录集用于存储表的属性方案。
选择列表:客户端可输入您在图层列表中选中的一个或多个图层的名称。客户端是否可输入多个图层将取决于工具本身。上面所示的生成近邻表工具允许输入多个图层。其他工具(例如缓冲区)则仅允许输入选择列表中的一个图层。
常量值:任务将使用您运行工具时所指定的值。常量值与移除参数相同 - 图层(数据集)由任务内部地使用,而不提供给客户端。