教程:发布地理处理服务
通过 ArcGIS Server,您可以发布地理处理服务,且发布的服务可将作业提交到服务器并返回一组结果。服务器会访问模型并做相应处理,然后释放计算机资源并消除多副本共享的问题。
大多数的 ArcGIS 应用程序都可以使用地理处理服务,包括 ArcMap、ArcGIS Explorer 以及通过 ArcGIS Server 创建的 Web 制图应用程序。本教程着重讲述在 Web 制图应用程序中调用的地理处理服务的构建过程。如果您对主要用在 ArcMap 中的地理处理服务的构建感兴趣,请参阅各种地理处理服务示例指南。
概念
在开始学习创建地理处理服务之前,您应该了解以下内容:
创建地理处理服务的要求是什么?
构建地理处理服务要求首先使用 ArcGIS Desktop 中的模型构建器 创建模型。创建的模型是一个由多个地理处理工具以及可帮助您实现 GIS 自动化操作的脚本组成的逻辑序列。模型中包含多个地理处理工具,并根据需要可加入您所编写的用于帮助自动化处理的脚本。通常,不能将一个工具或脚本发布为地理处理服务,而只能发布地理处理模型。不过,您可以发布仅包含一个工具或脚本的模型。
如果您之前从未在 ArcGIS 中使用过模型或者需要对模型知识进行回顾,建议从 ArcGIS Desktop 帮助中的什么是模型构建器学起。
模型中可以使用哪些类型的数据?
地理处理服务支持一组限定的输入和输出数据类型。要使模型能够在服务器端正确运行,您需要验证地理处理服务是否支持模型中所使用的所有输入和输出数据类型。Esri 提供了多种策略用于对模型进行修改,以使模型仅使用支持的输入和输出数据类型。在地理处理服务的关键概念主题中,您可以找到这些策略以及所有支持的数据类型的列表。
服务器作业目录
在安装 ArcGIS Server 时,会为地理处理服务的执行创建一个目录。这就是服务器作业目录,默认情况下,位于 c:\arcgisserver\arcgisjobs。当使用地理处理服务时,模型所产生的中间数据和输出数据都会存储在服务器作业目录中。每次执行模型或作业都会在服务器作业目录中创建唯一的专属文件夹。这就允许多个用户同时使用同一服务且不会产生混乱。
因为服务器作业目录负责管理中间数据和输出数据,所以您无需担心在模型环境中设置临时工作空间和当前工作空间的问题。
实现过程
该示例引导您了解简单模型的构建、将模型发布为地理处理服务以及在 Web 制图应用程序中运行此服务的整个过程。步骤中还给出了使用地理处理服务的相关提示和最佳做法。
构建模型
该示例中将要创建的模型会用到两个工具:缓冲区工具和裁剪工具。若要运行模型,需要交互式地定义一组地图上的点以及缓冲距离。模型运行时,将根据所指定的距离对这些点做缓冲区分析。如果要排除海洋中的区域,模型将在之后按照表示海岸线的要素类的形状裁剪生成的缓冲区。
要构建该模型,可使用您所拥有的任何数据,但最好是一个表示边界或海岸线的要素类,这样就可以按照这个要素类进行裁剪。该示例中的插图所使用的是加利福尼亚州圣地亚哥市的数据。模型将数据按照要素类 Land 进行裁剪。
该模型还要求之前在磁盘上的某个位置已保存了一个点图层文件,其中包含输入点使用的符号系统。
请按照以下步骤构建模型:
- 启动 ArcMap,然后单击确定,打开一个新的空白地图。
- 在目录 窗口中,浏览至已选择的用于本教程数据处理的磁盘位置并新建一个名为 scratch 的文件夹。如果数据存储在本地配置文件中(例如,C:\Documents and Settings\<user name>\...),请将它移出配置文件,使其更接近于磁盘根目录(例如,C:\Data\GeoprocessingTutorial)。
- 单击地理处理 > 环境,打开环境设置。
- 请展开工作空间,并取消选中当前工作空间的复选框。
- 浏览至刚刚创建的 scratch 文件夹并将其设置为临时工作空间。然后单击确定,关闭环境设置。在本教程后面的部分中您将看到,临时工作空间用于存储模型运行过程中所创建的中间数据。
- 单击地理处理 > 地理处理选项。在后台处理选项下,取消选中启用复选框。
禁用后台处理便于在 ArcMap 中设计模型时可方便地运行模型。本教程在模型设计过程中并不包括运行模型这一步,但是一旦需要在设计阶段运行您自己的模型,那么就需要包括该步骤。
- 将地图文档保存在本教程中所使用的数据当前存放的文件夹中。该文件夹将作为地图的主目录文件夹。
-
在目录 窗口中,通过右键单击我的工具箱,再单击新建 > 工具箱,在主目录文件夹中创建一个新的工具箱。您可将该工具箱命名为 GeoprocessingTutorial。该名称之后会自动追加 .tbx 扩展名。
-
要创建一个新的模型,请右键单击该工具箱,再单击新建 > 模型。默认情况下,名称即为“模型”。您可在之后更改此名称。
- 在创建新模型时,会打开模型构建器 窗口。接下来,您可开始向模型中添加要使用的工具。首先单击地理处理 > 搜索工具,然后在搜索框中输入缓冲区。
-
缓冲区工具应该是搜索结果中的第一项。将缓冲区工具从搜索 窗口拖动到模型构建器 窗口。
警告:
ArcGIS 中有两种缓冲区工具。请确保您所使用的缓冲区工具来自于工具箱\系统工具箱\分析工具。
- 终端用户需要能够同时选择要进行缓冲区分析的点以及缓冲距离,所以建议您获取这些变量并将它们设置为模型参数。通过右键单击“缓冲区”框,再单击获取变量 > 从参数 > 输入要素,获取第一个变量。名为“输入要素”的椭圆会出现在模型中并与“缓冲区”工具相连。
- 右键单击“输入要素”椭圆,然后选中模型参数。模型参数是最终用户运行模型时可输入的内容和参数设置。
-
右键单击“输入要素”椭圆,单击属性,然后单击数据类型选项卡。请注意,在默认情况下,数据类型设置为“要素图层”。请记住,并不是所有数据类型都可以作为地理处理服务的输入数据类型;“要素图层”并不是一个所支持的输入类型,但是“要素集”是。所以在下拉列表中将值更改为要素集。此外,在该选项卡中,通过浏览至任意的点图层文件,还可为输入点指定要使用的符号系统。
- 重复之前的步骤 12 到 14,为缓冲区工具获取附加变量距离 [值或字段]。将它作为一个模型参数,并将数据类型设置为线性单位。在变量创建完毕后,请双击该变量并设置一个默认值(例如,如果使用圣地亚哥的数据,那么 2 千米可能是比较合适的默认缓冲距离)。
- 请双击绿色椭圆“输出要素类”,然后设置路径为 %SCRATCHWORKSPACE%\buffer.shp。SCRATCHWORKSPACE 是一个变量,在此例中,它可确保中间数据能够写入临时位置。如果是在 ArcMap 中运行模型,该临时位置即为您在本教程开始部分所创建的临时文件夹。如果是在服务器中运行模型,该临时位置即为服务器作业目录。
-
为了增强模型的可读性,可将“距离 [值或字段]”重命名为缓冲距离,并将输出要素(可能现在是 Buffer.shp)重命名为输出缓冲区。要重命名这些模型组件,请右键单击它们,再单击重命名。
您可能需要四处拖动各模型组件,以方便查看全部信息。您的模型应如下图所示:
-
接下来为模型添加第二个工具。在搜索 窗口中,请输入裁剪并按 Enter 键。在搜索结果中,找到裁剪工具并将它拖动到模型的右侧。
警告:
ArcGIS 中提供了多种裁剪工具。请确保您所使用的裁剪工具来自于工具箱\系统工具箱\分析工具。
- 单击添加连接按钮 ,然后单击“裁剪”框前面的“输出缓冲区”椭圆。系统提示您指定输出的缓冲区数据是作为“输入要素”还是“裁剪要素”。请选择输入要素。
-
在模型构建器 中,请切换回选择工具 ,然后双击“裁剪”框。将裁剪要素设置为进行裁剪所依据的边界要素类或海岸线要素类。该示例使用 Land 要素类消除位于海洋中的缓冲区域。
提示:
请记住裁剪要素所在的位置。当您发布地理处理服务时,请务必确保 SOC 帐户具有对该位置的访问权限。
- 要设置输出要素类的位置,请双击模型最后的绿色椭圆(即最终的输出要素类),然后输入路径 %SCRATCHWORKSPACE%\ClippedBuffers.shp。
- 请右键单击表示输出的绿色椭圆(该示例中为 ClippedBuffers.shp),然后选中模型参数。同时选中添加至显示。
-
至此模型构建完毕。模型应如下图所示。请保存模型,然后关闭模型构建器 窗口。
- 在目录 窗口中查找您的模型。它的名称应该仍为“Model”。将它重命名为 BufferAndClip。
- 请保存地图文档并继续进入到下一部分。
准备模型和关联地图以发布服务
既然已创建好模型,就可以按照接下来的步骤,在 Web 应用程序中使用它的功能。此时,您需要思考将要在 Web 应用程序中做哪些工作。Web 应用程序可通过两种方式绘制模型结果:它可将结果数据发送到客户端,在客户端上绘制结果,或者在服务器上绘制结果之后再将完成的图像发送到客户端。
如果决定在客户端计算机上绘制结果,那么您不需要在 ArcGIS Desktop 中做其他任何准备工作;而只需要将该工具箱发布为地理处理服务。不过,直接在客户端上绘制结果存在一个限制:即,仅可使用“Web 应用程序开发框架 (ADF)”图形图层中的符号系统。可用的符号系统包括简单标记、线和填充符号,以及在定义地理处理任务的输出符号系统中列出的少量其他符号类型。制图线符号、梯度填充符号以及其他类型的复杂符号系统则要求在服务器上绘制结果。
如果在服务器上绘制结果,则可使用类型更加丰富的符号。这是因为地理处理服务会使用关联地图服务对所有符号进行必要的渲染操作。在服务器上绘制结果还有其他的好处,包括可将地图服务中的图层用作模型的输入,以及处理含有大量要素的结果(如果试图将大量要素发送到客户端进行绘制,则可能会非常耗时或者被服务器管理员拒绝)。
下面的示例说明了在服务器上绘制结果的方法,这需要您创建关联的地图服务。您需要创建一个可用于可视化模型的输入内容和结果的地图。创建好地图之后,需要将您的模型作为工具图层添加到地图中。下列步骤说明了该过程:
- 打开之前部分中创建的地图文档并添加一些数据。考虑到本教程的目的,数据中可包含少量的参考数据集。为达到最佳效果,建议不要在该地图服务中包含过多的底图数据,而应该直连至客户端应用程序中的另一个底图服务。
- 单击地理处理 > 地理处理选项,并确保已选中覆盖地理处理操作的输出这一选项。
-
接下来通过将模型拖动到 ArcMap 内容列表中来创建工具图层。并将它作为置顶图层。
请记住:在地图中含有工具图层是获得将与地图服务协同工作的地理处理服务的关键所在。
- 您需要先运行一次模型才可以发布服务。请右键单击工具图层,然后单击打开。
- 通过单击指针工具,再单击地图,添加一些输入要素。然后单击确定,运行该模型。
-
模型的输入要素已根据您在模型中配置“输入要素”参数时导入的方案进行了符号化。接下来,请使用图层属性来设置要为输出要素使用的符号系统。
请记住:在该示例中,会使用如下所示的带有角度的线填充符号来符号化输出要素。仅当服务器使用关联地图服务绘制结果时才可使用该符号系统;在客户端上绘制结果时不能使用它。
- 使输出要素(如上所示的 ClippedBuffers)在内容列表中不可见(未选中)。
- 现在已将发布服务所需的一切准备就绪。在继续进行下一部分之前,请保存地图文档并关闭 ArcMap。
发布服务
在获得带有工具图层的地图文档后,就可以将这些内容发布为服务了。您需要将该地图文档发布为服务并启用地理处理功能,这样便可以创建一个与地图文档同名的地理处理服务。您可在 Web 应用程序中使用这两个服务,从而在服务器上运行模型并显示结果。
重要信息:在发布服务之前,请务必阅读并遵守准备要作为服务发布的资源所提供的指导原则。这些指导原则将帮助您确保服务器具有读取并访问您的模型和地图中的所有数据的权限。特别是,SOC 帐户需要拥有对模型(工具箱)、模型所引用的任何数据(如裁剪要素)、地图文档以及地图文档中的任何数据的读取权限。另外,SOC 帐户还需拥有对服务器作业目录的读取和写入权限。如果您使用的是随 ArcGIS Server 一同安装的默认服务器作业目录 (C:\arcgisserver\arcgisjobs),则在安装过程中就已经为作业目录申请了适当的权限。
请按照以下步骤发布服务:
-
登录 ArcGIS Server 管理器,然后单击发布地图、globe 或其他 GIS 资源作为服务。
提示:管理器中提供了两种用于发布服务的向导。此链接指向发布 GIS 资源 向导,这是创建服务的最简单方法。它只要求您提供创建服务所需的最少信息量。发布 GIS 资源 向导的另一特点就是,您可使用它来创建关联服务,例如将要在该示例中创建的地理处理服务和地图服务。
创建服务的另一种方法是添加新服务 向导。此向导以完全手动的方式发布服务,它会提示您输入所有服务参数。添加新服务 向导不能用来自动创建关联服务。
- 在向导的第一个面板上,会提示您指定要发布的资源。该资源即为带有工具图层的地图文档。如果该地图文档位于一个共享目录里,则可以通过浏览找到它。如果它没有位于共享位置,请仔细输入此地图文档的路径。
-
为该服务指定一个名称。这里输入的名称会同时用于地图服务和地理处理服务。或者,如果服务按照文件夹分组,则还可选择相应的文件夹,然后单击下一步,进入到向导的下一页面。
-
请注意,在第二页上的两项功能是默认启用的。制图选项对于所有地图服务都是启用的。地理处理之所以启用是因为 ArcGIS Server 管理器检测到正在发布的地图中拥有一个工具图层。通过发布启用了地理处理功能的地图服务可创建同名的关联地理处理服务。保持这些功能为选中状态并单击下一步,进入到向导的最后一页。
- 向导的最后一页中说明将要创建两项服务并为它们分别指定了 URL。单击完成发布服务并关闭向导。
通过地理处理任务创建 Web 应用程序
将模型展现给其他人的最后一步就是通过地理处理任务创建 Web 应用程序。接下来,您将使用 ArcGIS Server 管理器来创建 Web 应用程序。ArcGIS Server 管理器将帮助您选择要显示的地图服务以及要通过地理处理任务展现给用户的地理处理服务。请按照下列步骤使用管理器创建 Web 应用程序:
- 在 ArcGIS Server 管理器中,单击主页选项卡,再单击创建 Web 应用程序。这会进入向导的第一页,该向导将帮助您设置应用程序。
-
为应用程序输入一个名称。当用户访问您的应用程序时,他们在浏览器里输入的 URL 中会包含该名称。此外,您还可在该页中输入描述信息,当管理员在管理器中查看 Web 应用程序列表时可以阅读这些信息。完成该页中的设置之后,单击下一步。
- 在第二页上,可选择用于地图中的服务。单击添加图层,浏览至刚刚在前一部分中发布的地图服务,然后单击添加。您可能需要首先创建一个到 GIS 服务器的连接。如果需要获得该页的相关帮助,请参阅将图层添加至管理器中的 Web 应用程序。完成服务添加后,单击下一步,进入到下一页。
-
在向导的这一页上,您将添加地理处理任务。单击添加任务,选择地理处理,然后单击确定来添加任务。
-
配置任务前,需要指定任务所要使用的地理处理服务。单击支持的服务,再单击添加,然后以在前一页中浏览查找地图图层的方式浏览至地理处理服务。
-
在当前任务列表中,单击地理处理,然后单击配置按钮。在该对话框上,可将任务名称从 Geoprocessing 更改为更具描述性的名称。您还可添加帮助提示,它会在用户将鼠标指针停留在任务上时出现。
如果在您的工具箱中包含多个模型,那么可在此选择其中一个作为任务中出现的模型。每一任务仅可使用一个模型。
在该示例中,您可保留地理处理任务设置的默认设置。帮助的地理处理任务部分可帮助理解这些设置,包括结果文件以及同步任务与异步任务。
- 在按照您的方式配置完任务之后,单击确定关闭此对话框,再单击下一步,继续创建 Web 应用程序。向导的剩余步骤可设置应用程序中的配色方案、文本、链接和地图元素。在向导的剩余步骤中,您可任意更改这些设置。最后一页会显示将要创建的应用程序的相关信息并提示您单击完成来创建 Web 应用程序。
-
通过打开地理处理任务来测试您的 Web 应用程序。定义一些点,然后运行工具,查看裁剪后的缓冲区。