需要 Network Analyst 许可。
文件夹 | DriveTimePolygons |
用途 | 根据给定的行驶时间值围绕输入点创建行驶时间(或行驶距离)面 |
服务 | DriveTimePolygonsService(地理处理服务) |
地理处理任务 | Calculate Drive-Time Polygons |
输入 |
|
输出 | 同每个设施点的输入行驶时间或行驶距离相对应的一个面 |
Data | 使用 ToolData 文件夹中提供的旧金山地区的街道网络数据集 |
扩展名 | |
注释 | 演示了建立服务器任务并将其用于生成服务区所需的基本步骤(这些步骤类似于分别使用求解车辆配送或查找最近设施点地理处理工具设置车辆配送服务或查找最近服务。) |
对应的文件夹
本教程的数据可从 ArcGIS.com 下载。将数据提取至 C:\arcgis\ArcTutor。模型和部分对应数据存储于 C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\DriveTimePolygons。此模型中网络分析图层引用的网络数据集存储在 SanFrancisco 地理数据库中,该数据库位于 C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\DriveTimePolygons 中。
关于“计算行驶时间面”任务
“计算行驶时间面”任务的主要目的是围绕用户指定的点创建行驶时间面。行驶时间面是一个包含可在特定行驶时间范围内到达用户指定点的所有街道的区域。行驶时间面可用于估算某点相对于其他要素的可到达性。例如,可以使用围绕某个杂货店位置的一分钟、两分钟和三分钟的行驶时间面来确定哪些人最有可能在该杂货店购物。
可使用下面两种地理处理工具创建服务区:创建服务区图层和生成服务区。本例使用生成服务区,因为其设计目的就是便于建立服务区服务以及优化服务器环境下的求解程序性能。生成服务区的另外一个优点在于它提供限制参数,它通过限制客户端请求的服务区问题的大小来限制服务器处理和带宽的使用。例如,本例将最大设施点参数设为 10,于是服务器会自动拒绝任何要解决多于 10 个设施点服务区问题的请求。
Data
本示例中的网络数据集位于 C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\SanFrancisco.gdb,地图文档、工具箱以及其他补充性数据存储在 C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\DriveTimePolygons。
网络数据集
Network Analyst 文件夹包含一个文件地理数据库 SanFrancisco.gdb。Transportation 要素数据集内是一个网络数据集 Streets_ND。该网络数据集为旧金山地区的街道网络建立模型。它提供了若干网络属性,其中包括 TravelTime 和 Meters,前者表示沿街段行驶所需时间(单位为分钟),后者表示各街段的长度。
工具箱和地图文档
地理处理服务的工具箱是 DriveTimePolygonsService.tbx。
包括两个地图文档 DriveTimePolygonsService.mxd 和 UsingDriveTimePolygonsService.mxd,用于移除此工作流主题中的次要步骤,例如增加图层、在研究区域周围调整地图范围等。
模型
模型概览
位于 DriveTimePolygonsService 工具箱中的 Calculate Drive-Time Polygons 模型如下图所示。此模型有四个输入变量:
- Input Facilities 是要生成的行驶时间面的中心。(在网络分析中,设施点可以是网络中的任意固定位置,例如建筑物或您的当前位置。)
- Break Values 是以空格分隔的行驶时间或行驶距离值列表。
- Break Units 用于指定 Break Values 的单位并确定是否生成行驶时间或行驶距离面。选择时间单位时会生成行驶时间面;选择长度单位时会生成行驶距离面。
- Polygon Overlap 用于指定各中断值是从设施点 (DISKS) 生成,还是从上一次中断的末端 (RINGS) 生成。此变量仅影响每个设施点有多个中断的服务区的输出。
该模型的生成服务区工具将创建一个服务区网络分析图层、将用户数字化的点作为设施点添加,并执行求解操作,输出行驶时间面。
元素 | 类型 | 说明 |
---|---|---|
Facilities | 要素集(点),输入参数 | 用于确定行驶时间面的点要素 |
Break Values | 字符串、输入参数 | 一组以空格分隔的行驶时间或行驶距离值 |
Break Units | 字符串、输入参数 | 中断值单位 |
Polygon Overlap Type | 字符串、输入参数 | 指定当存在多个中断值时是否以圆盘或圆环建立同心服务区面 |
Polygon Barriers | 要素集(面) | 面要素,其禁止遍历或测量面要素覆盖的网络边缘的成本 |
Line Barriers | 要素集(线) | 线要素,其禁止遍历或测量面要素覆盖的网络边缘的成本 |
Point Barriers | 要素集(点) | 点要素,增加成本或禁止在网络上通过点遍历 |
Streets_ND | 网络数据集图层 | 计算服务区所在的网络数据集图层 |
Attribute Parameter Values | 记录集 | 参数化网络属性的参数值 |
工具 | 创建和求解服务区分析 | |
SolveSucceeded | 布尔型 | 表示求解是否成功的派生输出 |
Polygons | 要素图层,输出参数 | 代表服务区的输出面图层 |
工作流概述
将服务区求解程序作为地理处理服务发布的常规工作流如下:
- 向 ModelBuilder 添加生成服务区。
- 决定您可以让客户端对哪些参数设置值,然后将其显示为模型参数。
- 在模型的项目描述对话框中记录参数的详细信息。
- 在 ArcMap 中运行一次模型。
- 在 ArcMap 的结果窗口中,将模型发布为地理处理服务。
使用网络数据集图层
将旧金山地区的网络数据集作为网络数据集图层 (Streets_ND) 添加到地图文档 DriveTimePolygonsService 中。该图层在模型中作为生成服务区工具的输入变量使用。使用网络图层将会显著地减少模型的总执行时间,因为网络数据集图层会始终打开网络数据集的连接。而如果从网络数据集的磁盘位置引用网络数据集,则只会在每次执行模型时建立与网络数据集的连接,这将降低使用该模型创建的地理处理服务的性能。
建模流程
生成服务区工具用于创建服务区 Network Analyst (NA) 图层,该图层会存储分析属性、引用供分析使用的 Streets_ND 网络数据集图层,以及存储输入设施点和输出面。网络数据集有一个名为 TravelTime 的网络成本属性,该属性指定穿过每条街段所需的行驶时间。类似地,它有一个称为 Meters 的成本属性,该属性指定每条街段的长度。在分析中引用这两个成本属性之一,即可生成行驶时间面或行驶距离面。所引用的成本属性取决于将 Break Units 变量设置为时间单位还是距离单位:时间单位使用的是 TravelTime 属性,而距离单位使用的是 Meters 属性。该工具处理任何可能需要的单位转换。
默认中断值从 中断值 变量中读取,该变量是一组以空格分隔的值。
对于此服务,使用 NO_MERGE 选项可为每个设施点创建不合并的叠置面。
设施点参数是一种要素集数据类型,因此模型可以交互式接受用户数字化的点作为设施点。
该工具可根据输入参数中指定的选项计算服务区,然后生成行驶时间面。计算的面将写入输出面图层中。
服务能力
工具对话框的服务功能部分的参数用于限制对客户端请求的处理和存储要求。它们可触发某些行为。例如,由于此模型的最大设施点参数设为 10,生成的服务会检查用户创建了多少个设施点。如果设施点小于等于 10 个,就会生成服务区;但是,如果多于 10 个,服务会马上终止。
所有其他服务功能参数的使用方法类似,在中断时间值范围外强制分级和在中断距离值范围外强制分级除外。后两个参数不可用,因为此旧金山网络数据集没有等级属性。如果情况如此,而且未选中在分析中应用等级参数,则可在传递的中断值较大时强制使服务区成为等级服务区。这是有好处的,因为等级服务区尽管不太准确,但其需要的处理远小于非等级服务区。
项目描述
通过记录地理处理模型的项目描述,您同时也记录了生成的服务及其参数,因为发布向导会将这些文本复制到服务的项目描述中。描述或记录服务为必要条件,同时有助于用户了解如何与服务成功进行交互以及如何生成服务区。已记录此示例的模型;如需检查,可以右键单击目录窗口中的地理处理模型并选择项目描述。
发布
地理处理服务按如下描述的方式发布。
- 打开 DriveTimePolygonsService.mxd。教程数据的默认位置是 C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\DriveTimePolygons。
- 运行 Calculate Drive-Time Polygons 地理处理模型。
- 在目录窗口中,展开 DriveTimePolygonsService.tbx,然后双击 Calculate Drive-Time Polygons 工具。
- 在计算行驶时间面 工具对话框中,单击设施点旁的符号,然后在地图上单击以添加设施点。
- 单击确定生成服务区。
- 请通过单击地理处理 > 结果打开结果窗口。
- 在结果窗口中,展开当前会话。
- 右键单击 CalculateDriveTimePolygons(其后接模型运行的时间和日期)并选择共享为 > 地理处理服务。
- 在共享为服务 对话框,单击下一步。
- 在下拉列表中选择带发布者功能的 ArcGIS Server 连接,或使用下拉列表右侧的按钮建立一个连接。
- 单击下一步。
- 选择将服务发布至根文件夹或指定其他文件夹,然后单击继续。
将弹出服务编辑器对话框。复制地理处理模型项目描述中的文本以描述该服务。此文本显示在对话框的项目描述部分以及其紧靠上方的部分(设施点、中断值等等)以供编辑。
- 单击位于服务编辑器 对话框左面板内的参数,再从消息级别下拉列表中选择警告。
当作为服务的一部分运行模型时,系统会将遇到的错误或警告消息报告给客户端。
- 单击分析 可查看发布程序窗口的所有警告或错误消息。
如果您未创建数据存储,则会收到数据将复制到服务器上的警告。您也可能收到其他消息。警告可以忽略掉,而错误不能。右键单击发布程序 窗口的任意错误消息以得到关于如何解决这些错误的帮助信息。
- 在服务编辑器对话框上单击发布 。
会立即出现一个对话框,告知您 Streets_ND 将会复制到服务器中。服务成功发布后,会出现成功对话框。
- 单击确定。
使用
- 打开 UsingDriveTimePolygonsService.mxd。
注意,此地图显示的是 ArcGIS Online 底图图层,并缩放至旧金山。
- 通过目录 窗口创建与 ArcGIS Server 的用户连接(如果不存在此类连接)。
- 展开用户连接,然后展开 DriveTimePolygonsService.tbx 工具箱。
- 双击以打开“计算行驶时间面”工具。
- 添加点以创建设施点位置。
- 将 2 3 4 指定为行驶时间值,然后单击确定运行任务。
ArcGIS Server 会收到请求;求解分析;然后,返回面图层,其中包含生成的服务区。
- 选中面图层以使其可见。
利用此时机检查结果 窗口中的任务结果。
或者,可再次运行分析,但要添加 10 个以上的设施点来检查服务功能是否阻止请求。