GP 服务示例:在街道网络中查找近处要素

复杂程度: 高级 数据要求: ArcGIS 教程数据安装程序 数据路径: C:\ArcGIS\ArcTutor\GP Service Examples\ClosestFacilities 目标: 创建、发布和使用在街道网络中根据最短路径查找距指定位置最近的要素的地理处理服务。

文件夹

ClosestFacilities

目的

根据沿街道网络的行驶时间查找距起始位置最近的指定数量的图书馆,计算到每个最近图书馆的最短路径,然后在文本文件中生成行驶方向。

服务

  • SanFranciscoBaseMap(地图服务)
  • ClosestFacilitiesService(地理处理服务)

地理处理任务

查找附近的图书馆

输入

一个或多个用户数字化的点和要查找的最近图书馆的数量。

输出

  1. 最近的图书馆。
  2. 用户指定的点与每个最近图书馆之间基于行驶时间的最短路径。
  3. 包含每条路径的行驶方向的文本文件。

数据

使用一个街道网络数据集和一个包含旧金山地区所有图书馆位置的要素类,它们位于 ToolData 文件夹中。

扩展模块

Network Analyst

注释

介绍如何使用已求解的网络分析图层进行进一步分析。

关于本示例

对应的文件夹

C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities 包含完整的模型和数据。

关于本示例

本示例中创建的 ClosestFacilitiesService 服务显示了如何发布在街道网络中执行最近设施点分析的地理处理任务。查找附近的图书馆任务将根据沿街道网络的行驶时间确定从指定点到指定数量(由用户指定)的最近图书馆的最短路径。此任务将输出前往最近图书馆的路径和行驶方向。

“查找附近的图书馆”任务的输出示例
“查找附近的图书馆”任务的输出示例

数据

本示例的数据来自 C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities

ClosestFacilities 文件夹的内容
ClosestFacilities 文件夹的内容

网络数据集

ToolData 文件夹中包含一个文件地理数据库 SanFrancisco.gdb。该地理数据库的 Transportation 要素数据集中包含网络数据集 Streets_ND。该网络数据集为旧金山地区的街道网络建立模型。此网络数据集具有网络属性 TravelTime,这一属性表示行驶过每个街段所需的时间。

底图

SanFranciscoBaseMap.mxd 中的底图图层有一个图层 Streets,如下图所示。该图层显示网络数据集的范围。这表示此任务可用于确定只在此范围内的邻近图书馆。

显示网络数据集范围的旧金山底图
显示网络数据集范围的旧金山底图

SanFranciscoBaseMap 将发布为地图服务。

工具箱和地图文档

用于此地理处理服务的工具箱是 ClosestFacilitiesService,此服务的源地图文档是 ClosestFacilitiesService.mxdClosestFacilitiesService.mxd 包含以下四个源数据图层和 Find Nearby Libraries 工具图层:

  • Streets_ND - 网络数据集。
  • Library - 包含旧金山地区所有图书馆的位置的要素图层
  • ClosestLibrariesSymbology - 定义输出图书馆的符号系统的要素图层
  • OutputRoutesSymbology - 定义输出路径的符号系统的要素图层

模型

模型概览

Find Nearby Libraries 模型如下图所示。此模型有两个输入变量:

  • Input Locations,是用户指定的点,将根据这些点查找最近的图书馆
  • Number of libraries to find

此模型将创建一个最近设施点网络分析图层;将图书馆要素图层中的图书馆位置添加为设施点;将用户指定的位置添加为事件点;执行求解以确定前往最近图书馆的路径,生成行驶方向,然后在所有加载为设施点的图书馆中只查找那些所确定的路径沿线的图书馆。

元素

类型

描述

Street Network

网络数据集图层

网络数据集图层。

Number of libraries to find

长整型,输入参数

要为每个输入位置查找的图书馆的数量。

Make Closest Facility Layer

工具

创建最近设施点网络分析图层。此图层将包含用于确定如何计算最近设施点的数据和属性,还将包含计算结果。

Closest Facility

网络分析图层

最近设施点图层。

Library

要素图层

包含所有图书馆位置的点要素类。已经按预先计算图书馆的网络位置部分所述计算街道网络中这些点的位置。

Add Locations (Libraries)

工具

将图书馆位置作为设施点添加到最近设施点图层。

Closest Facility (1)

网络分析图层

包含设施点的最近设施点图层。

Input Locations

要素集(点),输入参数

确定最近图书馆所依据的点要素。

Add Locations

工具

将输入位置作为事件点添加到最近设施点图层。

Closest Facility (2)

网络分析图层

包含设施点和事件点的最近设施点图层。

Solve

工具

计算最近设施点并确定前往每个设施点的最短路径。

Closest Facility (3)

网络分析图层

包含所有设施点和到最近设施点的最短路径的最近设施点图层。

SolveSucceeded

布尔

求解工具获得的输出,用于指示求解是否成功。

Directions

工具

为前往最近设施点的路径生成行驶方向。

Text Directions

文件,输出参数

包含行驶方向的文本文件。

Closest Facility (4)

网络分析图层

包含所有设施点和到最近设施点的最短路径的最近设施点图层。

Select Data

工具

从最近设施点图层中选择 Routes 子图层。

Routes

要素图层

Closest Facility (3) 网络分析图层中的路径图层。

OutputRoutesSymbology

图层

用于将符号系统应用于 Routes 要素图层的符号系统图层。

Apply Symbology From Layer

工具

将符号系统应用于 OutputRoutesSymbology 图层中的 Routes 图层。

Closest Routes

要素图层,输出参数

使用适当符号系统的 Routes 图层。

Select Data (Facilities)

工具

从最近设施点图层中选择设施点子图层。

Facilities

要素图层

Closest Facility (3) 网络分析图层中的设施点图层。

Join Field

工具

将 Routes 图层中的 FacilityID、FacilityRank、Total_TravelTime 和 Total_Meters 字段与 Facilities 图层连接。

Facilities (3)

表视图

所获得的包含连接字段的设施点图层。

Make Feature Layer

工具

仅选择 FacilityID 值非空的设施点。仅输出设施点中所需的字段将被设置为可见。

Facilities_Layer

要素图层

仅包含路径沿线的设施点的设施点要素图层。

ClosestLibrariesSymbology

图层

用于将符号系统应用于 Facilities_Layer 的符号系统图层。

Apply Symbology From Layer (1)

工具

将符号系统应用于 ClosestLibrariesSymbology 图层中的 Facilities_layer

Closest Libraries

要素图层,输出参数

使用适当符号系统的 Facilities_Layer

模型元素
Find Nearby Libraries 模型

预先计算图书馆的网络位置

最近设施点分析中所使用的图书馆位置不是临时位置,它们在网络中的位置将保持不变。因此,仅对图书馆的网络位置进行一次计算而不是每次将它们添加为设施点时都进行计算将更为高效。

计算位置工具可用于确定图书馆的网络位置并将信息存储在 SourceID、SourceOID、PosAlong 和 SideOfEdge 字段中。然后,添加位置工具可使用这些信息将图书馆作为设施点加载到新的最近设施点图层中。相对于使用添加位置首先确定图书馆的网络位置再将它们加载为设施点,上述方法的速度显然更快。对于 Library 图层,将使用“计算位置”工具基于 Streets_ND 网络数据集图层确定网络位置。

计算图书馆的网络位置
计算图书馆的网络位置

请注意,如果在其他情况下设施点的位置临时位置,则必须在每次将图书馆添加为设施点时确定它们的网络位置。因此,使用“计算位置”工具预先计算它们的网络位置并不会提高效率。

建模流程

创建最近设施点分析图层工具可创建新的网络分析图层 Closest Facility,此图层存储分析属性,引用供分析使用的 Streets_ND 网络数据集图层,并存储输入设施点、输入事件点和输出路径。网络数据集有一个名为 TravelTime 的网络成本属性,该属性指定穿过每条街段所需的行驶时间(以分钟为单位)。该属性用作阻抗属性。Number of libraries to find 变量用于指定要查找的设施点的数量。

“创建最近设施点分析图层”工具参数
“创建最近设施点分析图层”工具参数

Add Locations (Libraries) 工具用于将图书馆位置作为设施点添加到最近设施点图层。由于已使用计算位置工具计算了图书馆的网络位置,因此使用网络位置字段代替几何选项处于选中状态。

使用网络位置字段添加设施点
使用网络位置字段添加设施点

添加位置工具用于将用户数字化的点作为事件点添加到最近设施点图层。Input Locations 参数是一种要素集数据类型,因此模型能够以交互方式接受用户数字化的点作为事件点。要素集的方案和符号系统获取自 ToolData 文件夹中的 InputLocations.lyr 文件。

求解工具将基于每个事件点搜索指定数量的最近设施点,然后根据 TravelTime 网络属性计算前往每个设施点的最短路径。计算得出的路径将被写入到输出最近设施点图层中的 Routes 子图层。

对于 ArcGIS Server 客户端,网络分析图层不是受支持的输出参数数据类型。因此,可使用选择数据工具获取最近设施点网络分析图层中的 Routes 子图层。

Routes 子图层使用网络分析图层的符号系统。要应用其他符号系统以使每条路径均具有唯一的颜色,请使用应用图层的符号设置工具将符号系统应用于 OutputRoutesSymbology 图层中的 Routes 子图层。

方向工具用于生成行驶方向并将其输出到文本文件。包含行驶方向的输出文本文件将通过 %scratchworkspace% 行内变量在服务器上的作业目录中创建。

最近设施点图层中的 Routes 子图层包含 FacilityID 字段,此字段用于指示路径沿线的设施点的对象 ID。可使用此信息从所有设施点中只选择路径沿线的设施点。连接字段工具使用 FacilityID 字段将 Routes 子图层与设施点图层相连接。此工具将根据路径图层中的 FacilityID 字段和设施点图层中的 ObjectID 字段将 FacilityID、FacilityRank、Total_TravelTime 和 Total_Meters 字段与设施点子图层相连接。

连接字段工具参数
连接字段工具参数

连接字段工具的输出包含设施点子图层中的 FacilityID 字段。对于所有不在路径沿线的设施点,此字段将具有空值。使用创建要素图层工具,仅 FacilityID 字段值非空的那些设施点将被选择并输出到新图层。

“创建要素图层”工具参数
“创建要素图层”工具参数

设施点图层的符号系统将使用应用图层的符号设置工具基于 OutputLibrariesSymbology 图层进行设置。

工具图层

将 Find Nearby Libraries 模型拖动到 ArcMap 内容列表中即可创建 Find Nearby Libraries 工具图层。

由于模型输出是内存中的要素图层,第一次打开 ClosestFacilitiesService.mxd 时,工具图层中的 Closest Libraries 和 Routes 子图层可能包含损坏的数据源。此地图文档将按原样发布。但是,您应该在发布服务前重新运行工具图层并确保模型正常工作。

请注意,如果更改工具图层中任何输出图层的符号系统,将不会使用新的符号系统。这是因为,此模型的输出是要素图层,并且已使用模型中的将符号系统应用于图层工具定义这些要素图层的符号系统。

发布

SanFranciscoBaseMap.mxd 将作为地图服务发布。ClosestFacilitiesService.mxd 将作为不包含任何结果地图服务的地理处理服务发布,具体操作如下:

  1. 目录 窗口中,右键单击 SanFranciscoBaseMap.mxd,然后单击发布到 ArcGIS Server
  2. 接受所有默认设置。
  3. 目录 窗口中,导航到 GIS 服务器节点下的服务器管理连接,右键单击,然后选择添加新服务。将服务命名为 ClosestFacilitiesService,然后选择地理处理服务作为服务类型。
  4. 单击下一步
  5. 在下一个面板中,选择同步作为执行类型。对于地理处理服务所显示的工具存储于选项,选择地图,然后指定 ClosestFacilitiesService.mxd 作为地图文档。由于要测试服务,因此请选中显示消息
    发布 ClosestFacilitiesService
    发布 ClosestFacilitiesService
  6. 单击下一步。此后,便可接受向导提供的默认值并创建服务。

使用

  1. 以空白文档启动 ArcMap。
  2. 如果不存在与 ArcGIS Server 的用户连接,请在目录 窗口中创建一个这样的连接。
  3. SanFranciscoBaseMap 地图服务添加到 ArcMap 内容列表。
  4. 目录 窗口中的 GIS 服务器用户连接节点下,展开 ClosestFacilitiesService 工具箱,然后打开 Find Nearby Libraries 工具。下图显示了执行以上步骤后的结果:
    ArcMap 会话中的 Find Nearby Libraries 任务
  5. 添加点以创建输入位置。指定 3 作为要查找的图书馆的数量,然后单击确定运行此任务。

    完成任务后,内容列表中将包含 Closest Libraries 和 Routes 输出图层,如下图所示。这些输入位置不会从任务中输出,而是将被添加到结果 窗口内容列表中的输入节点下。

    已完成任务
    已完成任务
  6. 包含行驶方向的文本文件将从服务器上的作业目录中复制到当前 ArcMap 会话的临时工作空间。在结果 窗口中双击此文件即可查看此文件。

    查看方向文件
    查看方向文件

相关主题


7/10/2012