GP 服务示例:选择数据
文件夹 |
SelectingData |
用途 |
介绍按属性查询或位置查询选择数据的各种方法。 |
服务 |
|
地理处理任务 |
多个(请参阅下文中的模型。) |
输入 |
因模型而异;通常是一个查询字符串或一个要素集。 |
输出 |
所选数据 |
数据 |
使用俄勒冈州波特兰市内一小片区域的数据集。 |
扩展模块 |
无 |
关于这些服务
地理处理服务的一项常见任务是基于属性查询或空间查询选择数据子集。本示例中,将通过多个模型介绍多种实用的数据选择方式。这些模型中主要使用的地理处理工具是按属性选择图层和按位置选择图层。这两种工具都将图层作为输入。它们的输出是包含所选要素的已更新输入图层。
因为按属性选择图层和按位置选择图层均输出图层(而不是数据集),所以需要注意 ArcGIS Server 对输出结果为图层的任务的处理方式。回顾一下,有三种地理处理服务配置,详情如下所示:
在前两种配置中,ArcGIS Server 在执行输出结果为图层的任务时,将读取图层中的所选要素并将这些所选要素传输回客户端。
第三种配置中存在两种服务:地理处理服务和结果地图服务。这两种服务独立于彼此执行。执行任务时,ArcGIS Server 将首先执行地理处理任务,然后执行结果地图服务以绘制地理处理服务的输出,并将输出数据的地图图像发送回客户端。由于这样的执行顺序,结果地图服务需要使用地理处理服务在磁盘中生成的数据集。这表示在此地理处理服务中任务的输出必须是数据集,而不能是图层。图层在前两种配置中可作为输出,但在结果地图服务配置中不能作为输出。
在本示例中,您将用到两对工具箱/地图文档;SelectingData(可发布为使用源地图文档的地理处理服务)和 SelectingDataRMS(可发布为使用结果地图服务的地理处理服务)。SelectingDataRMS 工具箱中的工具将在磁盘上生成数据集,而 SelectingData 工具箱中的工具将生成图层。通常,SelectingDataRMS 工具箱中的工具执行的时间稍长,因为它们必须将数据复制到磁盘上。
将由您决定选择哪种服务进行发布(SelectingData 或 SelectingDataRMS)。通常,将在以下情况下发布结果地图服务:
- 所选要素集可能非常大,并且您不想将很大数量的要素传输回客户端。
- 您希望保护数据并仅允许客户端查看地图图像数据。
- 您有只能使用 ArcMap 而不能使用其他客户端应用程序进行绘制的高级地图。
数据
本示例中使用的数据是俄勒冈州波特兰市内一小片区域的数据,这些数据位于 C:\arcgis\ArcTutor\GP Service Examples\SelectingData\ToolData\Portland.gdb 中。为节省空间,已使用压缩文件地理数据库(File Geodatabase)数据工具对此文件地理数据库进行压缩。您无法对压缩的文件地理数据库进行编辑。如果需要进行编辑,请使用解压缩文件地理数据库(File Geodatabase) 工具。
某些模型使用要素集变量和记录集变量,这便需要用于定义这些模型的要素类型和字段的方案。这些方案位于 C:\arcgis\ArcTutor\GP Service Examples\SelectingData\ToolData\Templates.gdb 中。
模型概览
SelectingData 工具箱和地图文档
工具集 |
工具 |
描述 |
---|---|---|
按属性选择 | ||
选择大于以下值的征税地块 |
选择总值大于用户输入值的所有征税地块。 | |
选择大于以下值的征税地块(包含汇总) |
同上,但还将汇总全部所选地块的总值。 | |
按地址选择征税地块(属性方法) |
根据给定的地址选择征税地块。 | |
选择邻近地区 |
从下拉列表中选择邻近地区。 | |
按面积选择图层 |
允许用户首先选择图层,然后根据面积选择要素。 | |
邮寄列表 |
按地址选择征税地块,选择指定距离内的所有征税地块,然后为全部所选征税地块生成邮寄列表。 | |
按位置选择 | ||
按地址选择征税地块(位置方法) |
根据给定的地址,为每个地址创建一个点要素,然后使用这些点要素选择征税地块。 | |
按邻近地区选择征税地块 |
根据所选邻近面选择征税地块。 | |
按邻近地区选择征税地块(已优化) |
同上,但将使用经预处理的数据集执行选择。 |
SelectingDataRMS 工具箱和地图文档
SelectingDataRMS 工具箱中的工具与 SelectingData 工具箱中的工具作用相同。主要区别在于,SelectingDataRMS 工具输出的要素类可由结果地图服务进行绘制。复制要素工具用于将要素从图层复制到要素类。下图所示为使用复制要素工具的选择大于以下值的征税地块模型。此工具箱中的所有工具具有相似的使用方式。
属性索引和空间索引
如果您经常查询某个特定字段(正如这些服务所做的一样),可通过为查询字段创建索引来提高查询速度。例如,“选择大于以下值的征税地块”任务将查询 TOTALVAL 字段,那么为了优化查询,TOTALVAL 将具有属性索引。您可使用添加属性索引工具创建属性索引。
同样,如果要执行空间查询,则空间索引将提高要素的定位速度。将为地理数据库中的要素类自动创建和维护空间索引,但不会为 shapefile 执行相同操作。
使用图层选择和工具图层
SelectingData 地图文档包含以上所列的各个工具的工具图层。工具图层(工具的输出)中的子图层与输入图层相同,它并不是独立图层。由于不是独立图层,因此,如果更改原始输入图层和输出子图层中任一图层的属性,另一个图层的属性也将改变。如下所示,对于“选择大于以下值的征税地块”工具,输入图层和输出图层均为 Tax Lot。如果右键单击 ArcMap 内容列表中的 Tax Lot 图层(输入图层),然后更改符号系统,则两个图层的符号系统都将改变。
当您使用图层选择时(正如这些工具所做的一样),请记住以下指导原则:
- 在 ArcMap 中创建工具图层时(发布之前),无论模型中的输出变量名是什么,子图层(模型的输出)将始终是与输入图层同名的图层。符号系统将与输入图层的符号系统相同。
- 当您执行服务器任务时(发布之后),输出图层将使用模型变量名。
使用变量替换构建表达式
选择表达式通常需要来自用户的输入。如下图中的“选择大于以下值的征税地块”模型所示,用户的输入是总值大于变量。此变量是按以下步骤创建的双精度变量:
- 在模型构建器中,右键单击画布,然后单击创建变量
- 在创建变量 对话框中,选择双精度作为变量类型。
- 单击确定。
- 重命名该变量。
- 如有需要,请打开该变量并提供一个默认值。
在按属性选择图层工具对话框中创建表达式时,请在变量名两边各添加一个百分号 (%)。
虽然此操作不是必须的,但是建议将这样的变量作为变量替换过程的前提条件。要设置前提条件,请执行以下步骤:
- 在模型构建器中,右键单击工具,然后单击属性。
- 单击前提条件选项卡。
- 选择作为工具执行的前提条件的一个或多个变量。
选择方法
按属性选择图层工具和按位置选择图层工具都具有多个可用于选择的选项。例如,您可向当前选择中添加要素或从当前选择中移除要素,而不是创建新的选择。按位置选择图层工具可用于建立空间关系,例如,CONTAINS、WITHIN 和 INTERSECT。示例模型仅使用了少数几个选项。有关详细信息,请参阅“按位置选择图层”工具文档。
选择不包含地图图层的数据
您无需使用地图文档中的图层也可使用按属性选择图层工具和按位置选择图层工具。您可使用创建要素图层工具基于数据集创建要素图层,如下所示。
您还可使用选择工具创建由某一数据集中的所选要素组成的数据集,而无需使用图层。
选择工具将执行属性选择。如果需要执行空间选择,可考虑使用下列工具中的一种或多种工具:
选择工具
此工具箱包含多个支持各项任务的工具。
工具 |
描述 |
---|---|
检查匹配结果 |
检查“对地址进行地理编码”工具的输出,如果地址不匹配,将出现输出错误。 |
获取 1 个字段值 |
从表的第一条记录中读取一个字段值并将它输出到地理处理模型变量中。 |
获取 2 个字段值 |
同上,但将读取两个字段并输出两个变量。 |
获取 3 个字段值 |
同上,但将读取三个字段并输出三个变量。 |
叠加征税地块和邻近地区 |
创建上文中“按邻近地区选择征税地块(已优化)”模型所使用的数据集。 |
打印征税地块邮寄地址 |
根据一组选定的征税地块,打印邮寄地址文件。 |
模型的注意事项
选择大于以下值的征税地块(包含汇总)
此模型与上一模型的作用相同,但此模型加入了汇总统计数据工具,此工具用于计算全部所选地块的总值。“汇总统计数据”将输出由“获取 2 个字段值”工具进行读取的表,此工具是“选择工具”工具箱中的一种工具(已在本示例中有过介绍)。此工具是一个脚本工具,它将输出两个字段的值:所有地块的总值和地块的数量。这些值以及所选征税地块都将被返回到客户端。
汇总统计数据的输出将被写入到内存中的表,而不是磁盘上的表。与写入到磁盘相比,将表和要素类写入到内存的速度更快。
按地址选择征税地块(属性方法)
按地址选择要素是一项常见任务。此模型展示了一种按地址选择要素的方法(另一种方法将在下文中进行介绍)。
模型元素 |
描述 |
---|---|
TaxLot 定位器 |
用于 TaxLot 要素类的地址定位器。此地址定位器使用“美国独立地址”样式。 |
地址 |
这是一个记录集变量。对应模板为 ToolData/templates.gdb/Address。要获取研究区域中的一些示例地址,请参阅 ToolData/sample addresses.txt。 |
获取包含地址的表,然后输出地址位置的点要素类。还将输出一个状态字段。如果找到地址,则此字段将包含一个 M。 | |
检查匹配结果 |
“选择工具”工具箱中的一种自定义脚本工具(已在本示例中有过介绍)。它用于检查地址是否成功匹配。 |
成功 |
“检查匹配结果”的输出。如果有一个地址输入并且此地址是匹配的,则此项为真。 |
获取 1 个字段值 |
“选择工具”工具箱中的一种自定义脚本工具(已在本示例中有过介绍)。它用于获取与地址匹配的征税地块的唯一对象 ID。 |
按属性选择图层 |
选择具有“获取 1 个字段值”所输出的对象 ID 的征税地块。 |
选择邻近地区
此模型将从邻近地区图层中选择一个面。
此模型可用于从一组邻近地区中选取一个邻近地区。邻近地区名称 变量是字符串变量,它具有包含所有邻近地区名称的值列表过滤器。要创建或更改过滤器,请打开模型属性对话框,然后单击参数选项卡,如下所示。
按面积选择图层
此模型允许用户首先选择一个图层,然后为所选图层指定最小面积。
此模型的主要特点是它所允许的图层选择方式。要选择的图层变量是字符串变量,它具有包含征税地块和邻近地区的值列表过滤器。要查看过滤器,请打开模型属性对话框,然后单击参数选项卡,如下所示。
计算值工具将获取字符串,然后将它转换为要素图层变量,如下所示。这种将字符串转换为另一种数据类型的方法将在输入和输出数据类型中进行介绍。“计算值”工具的输出是按属性选择图层的输入。
最后,使用复制要素工具将所选要素复制到要素类。最后这一步骤不是必须的。(复制这些要素有助于避免在创建和测试工具图层时引起混淆。)这些要素将被写入到内存而不是磁盘(将要素写入到内存比写入到磁盘的速度更快)。在 SelectingDataRMS 工具箱中,所选要素必须被写入到磁盘,以便结果地图服务绘制这些要素。
邮寄列表
此模型显示了如何根据所选要素选择邻近要素,并且将生成包含邻近要素的地址的简单文本。
模型元素 |
描述 |
---|---|
地址 |
这是一个记录集变量。对应模板为 ToolData/templates.gdb/Address。要获取研究区域中的一些示例地址,请参阅 ToolData/sample addresses.txt。 |
按地址选择征税地块(属性方法) |
此模型已在上文中有过介绍。 |
所选地块 |
所选的征税地块。此为 Tax Lot 图层。 |
搜索距离 |
要使用的搜索距离。 |
输入图层 |
Tax Lot 图层。 |
按位置选择图层 |
通过搜索“所选地块”选择指定距离内的所有征税地块。 |
征税地块 |
搜索距离内的征税地块。 |
打印征税地块邮寄地址 |
“选择工具”工具箱中的一种自定义脚本工具。 |
MailingList.txt |
包含邮寄地址的文本文件。 |
成功 |
如果每条记录都具有一个邮寄地址,则此项为真。如果一条或多条记录具有空邮寄地址或损坏的邮寄地址,则此项为假。 |
按地址选择征税地块(位置方法)
此工具是“按位置选择”工具集中的第一个工具。此工具与“按地址选择征税地块(属性方法)”工具作用相同,但此工具并不使用要素 ID 选择征税地块,而是将对地址进行地理编码的输出点要素用作按位置选择图层的输入。
如果地理编码点来自一个不同的定位器,则可以使用这种方法。例如,定位器可能基于街道数据集,并且您需要使用地理编码点来选择非街道要素,例如,建筑物、征税地块或感兴趣点。
按邻近地区选择征税地块
另一种常见选择任务是使用某一数据集中的要素选择另一数据集中的要素。此模型将使用上文中介绍的“选择邻近地区”模型选择一个邻近地区,然后使用“按位置选择图层”工具选择该邻近地区内的所有征税地块。
按邻近地区选择征税地块(已优化)
上文中“按邻近地区选择征税地块”模型所使用的方法适用于不常见的查询。也就是说,分析可能使用此方法查找征税地块以进行一次性快速分析。但是地理处理服务通常是重复并经常运行的任务。由于按邻近地区选择征税地块是一项经常使用的任务,因此要对其进行优化。
对于这种优化,“相交”工具用于为各个征税地块指定邻近地区名称。“选择工具”工具箱中的“叠加征税地块和邻近地区”工具显示了如何使用“相交”工具创建包含所有具有全部邻近地区属性的征税地块的新数据集。只需执行一次此模型即可生成 TaxLotsOverNeighborhoods 数据集。
创建 TaxLotsOverNeighborhoods 之后,只需进行简单的属性查询即可选择某一邻近地区内的所有征税地块。
发布
将位于“GP 服务示例:裁剪与发送”的发布部分中的 Portland.mxd 发布为地图服务。您将使用此地图服务作为本示例中各项服务的底图。(此服务的对应文件夹是 C:\arcgis\ArcTutor\GP Service Examples\ClipAndShip。)
基于源地图文档将 SelectingData.mxd 发布为地理处理服务。因为要素将被发送回客户端,所以请确保将可由服务返回的最大记录数增加到 11,000(稍大于 Tax Lot 图层中的要素数量)。
使用结果地图服务将 SelectingDataRMS 发布为地理处理服务。
使用
要使用这些服务,请打开一个新的 ArcMap 会话,然后将 Portland 地图服务添加为底图。
打开目录 窗口,然后转到 ArcGIS Server 用户连接,在此处可查看和执行所有发布的任务。展开 SelectingDataRMS 服务,然后执行“邮寄列表”任务。
打开结果 窗口,然后执行以下步骤:
- 展开 MailingList 结果。
- 右键单击“邮寄列表”任务结果,然后选择获取数据。任务结果将从 <服务器中的数据> 转换为 MailingList.txt。
- 右键单击 MailingList.txt,然后单击复制位置。(由于结果是文本文件,因此“添加至显示”不起作用。)
- 打开 Internet 浏览器,然后将该位置粘贴到地址栏中。即会显示 MailingList.txt 的内容。
- 此外,还可单击复制工具,然后将 MailingList.txt 从结果 窗口拖动到复制工具对话框的输入参数上。该文件即被复制到所选位置。