练习 2:创建多模式网络数据集
练习 1 演示了如何为单一交通模式创建网络;但是,大多数情况下,旅行者和通勤者通常使用几种交通方式,如在人行道上步行、在道路网上驾车行驶以及搭乘地铁。货物也会以多种交通方式运输,如火车、轮船、卡车和飞机。在本练习中,您将由要素数据集中的多个要素类创建多模式网络数据集。
Network Analyst 教程中本练习和其他练习所使用的数据可在 ArcGIS.com 中找到。数据下载完成后,可将其解压缩到所需位置。但是最好将其解压到 C:\arcgis\ArcTutor,因为本教程将此路径视作数据的默认位置。
启动“新建网络数据集”向导。
- 单击开始 > 所有程序 > ArcGIS > ArcCatalog 10.2.2 启动 ArcCatalog。
-
启用 ArcGIS Network Analyst 扩展模块。
-
单击自定义 > 扩展模块。
将打开扩展模块 对话框。
- 选中 Network Analyst。
- 单击关闭。
-
单击自定义 > 扩展模块。
-
如果尚未连接到 Network Analyst 教程的文件夹,则需要按照以下子步骤创建一个文件夹连接。
-
在标准工具 工具条上,单击连接到文件夹按钮 。
将打开连接到文件夹对话框。
-
导航到含有 Network Analyst 教程数据的文件夹。
教程数据的默认存储位置是 C:\ArcGIS\ArcTutor\Network Analyst\Tutorial。
-
单击确定。
文件夹的快捷方式将添加到目录树 的文件夹连接下。
-
在标准工具 工具条上,单击连接到文件夹按钮 。
- 在目录树 中,展开 ...\ArcTutor\Network Analyst\Tutorial > Exercise02 > Paris.gdb。
-
单击 Transportation 要素数据集。
它包含的要素类将列于 ArcCatalog 的内容选项卡上。
-
右键单击 Transportation 要素数据集并单击新建 > 网络数据集。
将打开新建网络数据集 向导。
命名网络并选择源要素类
-
输入 ParisMultimodal_ND 作为您的网络数据集的名称。
- 保持选择网络数据集的版本设置为最新版本。
如果需要与使用较旧版本 ArcGIS 的用户共享网络数据集,此选项会非常有用。当您选择的 ArcGIS 版本号小于或等于这些用户的版本时,这些用户就可以打开您创建并共享的网络数据集。然而,这样做的缺陷是您将无法纳入更高版本的 ArcGIS 中引入的任何新增网络数据集功能,因为将禁用新建网络数据集 向导中用于添加功能的控件。如果无需共享网络数据集,或者共享的用户与您使用相同的 ArcGIS 版本,则选择最新版本将是最佳方案。
-
单击下一步。
将显示用于选择加入到网络数据集中的要素类的向导页。
-
单击全选选择要作为源加入到网络中的所有要素类。
- 单击下一步。
-
单击是在网络中构建转弯模型。
尽管此网络不存在任何转弯要素类,选择是将允许网络数据集支持通用转弯并为您提供在创建网络后随时添加转弯要素的选项。
-
单击下一步。
将显示设置连通性页面。
设置连通性和高程策略
建立 ArcGIS Network Analyst 扩展模块中的连通性要从定义连通性组开始。每个边源只能被分配到一个连通性组中,每个交汇点源可被分配到一个或多个连通性组中。一个连通性组中可以包含任意数量的源。网络元素的连接方式取决于元素所在的连通性组。例如,对于创建自两个不同源要素类的两条边,如果它们处在相同连通性组中,则可以进行连接。如果处在不同连通性组中,除非用同时参与了这两个连通性组的交汇点连接这两条边,否则这两条边不连通。
您将通过以下步骤创建连通性组。
-
单击连通性以设置网络的连通性模型。
将打开连通性 对话框。
-
单击组列数向上箭头一次可将连通性组的数量增加到 2。
将在连通性组表中创建第二个连通性组的列。
- 单击 Streets 行并选中标注为 2 的列下的复选框,将 Streets 源移动到连通性组 2。
-
单击 Metro_Entrances 行并选中标注为 2 的列下的复选框以在组 1 和组 2 中包含源要素类。
地铁入口是街道与通向地铁站的人行道之间的转移点。
-
将 Metro_Entrances 行的连通性策略从依边线连通改为交点处连通。
- 单击确定返回新建网络数据集 向导。
- 单击下一步。
-
此数据集不存在高程数据;因此单击无。
-
单击下一步。
向导将显示网络数据集的属性。
Metro_Entrances 的每个要素与街道要素类的折点重合。但是,街道要素类具有端点连通性策略。由于地铁入口需要在重合折点处连接到街道,因此必须将 Metro_Entrances 设置为覆盖街道的默认端点连通性。
网络数据集中的高程设置进一步定义了连通性。为了帮助理解,假设两条边在 x 和 y 空间内端点重合,但高程不同(一个端点高于另一个)。此外,假设连通性策略设置为端点。如果忽略高程,两条边相连。但如果考虑高程,它们就不相连。
构建高程模型的方式有两种:使用几何中的实际高程值或使用高程字段中的逻辑高程值。
移除属性
网络属性用于控制导航。常见示例有用作网络阻抗的成本属性,或禁止双向穿越或单向穿越(如单行线)的约束属性。
Network Analyst 分析源要素类并查找常见字段,如“米”、“分钟”(FT_Minutes 和 TF_Minutes,分别用于每个方向)和“单向”。如果找到此类字段,它将自动创建对应网络属性并分配相应字段。(通过单击赋值器可进行查看。)
Network Analyst 将自动为巴黎的街道数据配置五个属性:Hierarchy、Meters、Minutes、Oneway 和 Road Class。
尽管您可以保留网络数据集的等级属性,但以下步骤还是要简要地说明如何通过移除 Hierarchy 来移除网络属性。
- 单击 Hierarchy。
- 单击移除。
现在,网络只剩下四个属性。
验证和创建网络属性
此网络数据集的一个目标是构建行人时间和驾驶时间的模型。在执行网络分析时,这允许您在两个时间成本中进行选择。例如,您可以选择回答“在街道上步行并搭乘地铁的行人从 A 点到 B 点的最快路径是那条?”或者“驾车行驶的人的最快路径是哪条?”要做到这一点,必须设置两个时间成本属性:PedestrianTime 和 DriveTime。
-
选择 Minutes 行,单击重命名,输入 DriveTime,然后按 Enter 键。
-
单击添加。
打开添加新属性 对话框。
- 在名称文本框中输入 PedestrianTime。
- 将使用类型设置为成本。
- 将单位改为分钟。
-
将数据类型设置为双精度。
-
单击确定。
将关闭添加新属性 对话框,并在属性列表中添加 PedestrianTime。
Network Analyst 在源数据中自动检测到的 Minutes 属性代表行驶时间,因此您可以将它改为更适合的名称。
三种成本属性(Meters、DriveTime 和 PedestrianTime)具有黄色的警告符号,提示您赋值器存在的潜在问题,赋值器可指定网络属性值的计算方式。
在以下三部分中,您将要配置赋值器。
配置 Meters 赋值器
您将在本部分和以下几部分中设置各种赋值器。Meters 赋值器会计算网络中边的距离成本;即,该赋值器可确定边的长度。
-
选择 Meters,然后单击赋值器。
将打开赋值器 对话框。您可以在此处查看和编辑赋值器类型以及它在网络中的每个源的值。您可以看到交汇点和转弯源始终具有一个关联的赋值器,而边线数据源具有两个赋值器:每一个赋值器对应一个行驶方向(“自-至”和“自-至”方向)。
-
在按住 Shift 键的同时,单击 Transfer_Stations 自-至行并单击 Transfer_Street_Station 至-自行。
将选中四个带有警告符号的行。
-
右键单击任何所选行并单击类型 > 字段。
警告符号会变为红色错误符号,表示未完成向字段赋值器赋值。
-
在仍然选中四行的情况下,右键单击任意一行并单击值 > SHAPE_LENGTH。
这样会将所选源要素类的 SHAPE_LENGTH 字段中的值指定给关联的网络边要素的 Meters 属性。
-
单击应用。
将配置 Meters 网络属性,以获取长度值。对于从 Metro_Lines、Streets、Transfer_Stations 和 Transfer_Street_Station 源创建的网络要素,属性值将分别提取自其 Meters、METERS、Shape_Length 和 SHAPE_LENGTH 字段。
Network Analyst 会检查所有源要素类并尝试自动为 Meters 属性指定赋值器。在本例中,发现 Metro_Lines 和 Streets 源具有名为 Meters 的字段,因此网络将赋值器设置为从这些字段中提取值。相同的长度值将会指定给边源的“自-至”和“至-自”方向。
Network Analyst 无法在 Transfer_Stations 和 Transfer_Street_Station 源中找到 meters 的字段。因此,将显示警告符号来表示存在潜在问题。
配置 DriveTime 和 Oneway 赋值器
因为汽车只在街道上行驶,各种源的赋值器也应作相应设置。
-
从属性下拉列表中,选择 DriveTime。
Streets 源的 DriveTime 值已由 Network Analyst 自动填充;但是,其他边源会显示警告符号,因为它们没有被指定值。这些源需要标记为受限。地铁站也需要设置为限制,以防止新网络分析对象定位在那里。
-
确保选中了所有带警告符号的行(Metro_Lines、Transfer_Stations 和 Transfer_Street_Station)。
如果尚未选中,可通过单击一行并在按住 Ctrl 键的同时单击其他行来选中它们。
- 按住 Ctrl 键并单击 Metro_Stations 将它添加到所选内容中。
-
右键单击任一所选行并单击类型 > 常量。
其余行仍然为选中状态,它们的赋值器类型同样会更改为常量。
-
再次右键单击任一所选行,但是这次单击值 > 属性。
将弹出常量值输入框。
-
输入 -1 并按 Enter 键。
全部所选行的值将更改为 -1。Network Analyst 将所有成本值为 -1 的元素视为受限。因此,将 DriveTime 属性用作网络分析中的阻抗时,这些源是不可穿过的。
- 单击应用。
-
从赋值器 对话框顶部的属性下拉列表中,选择 Oneway。
属性值框目前显示 Oneway 网络属性的赋值器,它已被自动指定 Streets 源的值。
与地铁系统相关的源不需要单向约束。
-
单击任一 Streets 行并单击赋值器属性按钮。
您将看到用于确定街道是否为单向的表达式。
- 单击取消返回到赋值器 对话框。
配置 PedestrianTime 赋值器
PedestrianTime 网络属性表示行人在网络中行走所花费的时间。在本组步骤中,您将为搭乘地铁或沿街行走的行人指定相应的行程时间。
-
从赋值器 对话框顶部的属性下拉列表中,选择 PedestrianTime。
应该已选中以下源所在的行:Metro_Lines、Transfer_Stations 和 Transfer_Street_Station。
- 右键单击任一所选行并单击类型 > 字段。
-
再次右键单击任一所选行,但是这次单击值 > TRANSITTIM。
TRANSITTIM 字段将存储使用交通系统的行人的时间成本。街道也需要设置行人时间值,但是计算方式不同。
- 单击 Streets 自-至行选中它。按住 Ctrl 键并单击 Streets 至-从行选中这两行。
-
右键单击任一所选行并单击值 > 属性。
将打开字段赋值器 对话框。
- 双击字段 METERS 将它移动到值 = 文本框并在字段赋值器 中完成表达式 [METERS] * 60 / 3000 的输入,如下所示。
-
单击验证确保表达式正确;如有错误,应予以修复。
-
单击确定返回到赋值器 对话框。
- 单击确定返回新建网络数据集 向导。
- 单击下一步。
配置方向
当在网络数据集中计算路径时,您能够在算出结果的同时得出行驶方向。网络数据集必须至少具有一个带文本属性(用于记录街道名称信息)和距离属性(用于显示需要下一个相关行进策略之前边线数据源所经过的距离)的边线数据源。
- 单击是设置方向。
-
单击方向。
将打开网络方向属性 对话框。
-
在常规选项卡上,单击源下拉列表并选择 Streets。
- 在街道名字段列表中,单击主要选中它。
-
单击名称列并选择 FULL NAME。
- 单击确定返回新建网络数据集 向导。
-
单击下一步。
将显示所有设置的汇总信息供您查看。
现在要指定用于为网络分析结果报告方向的字段。
创建和构建网络数据集
设置完网络数据集的运行方式后,您需要创建并构建它。创建过程很快,主要是创建逻辑网络的容器。
-
单击完成。
将启动进度条,显示 Network Analyst 正在创建网络数据集。
-
单击是。
将启动“构建网络数据集”进度条;构建过程结束后它会消失。
新的网络数据集 ParisMultimodal_ND 及系统交汇点要素类 ParisMultimodal_ND_Junctions 已添加到 ArcCatalog。
- 通过单击网络数据集名称并单击预览选项卡预览网络数据集。
- 关闭 ArcCatalog。
创建网络后,系统问您是否要构建它。构建过程会确定哪些网络元素是互相连接的,并填充网络数据集属性。必须先构建网络才能对其执行网络分析。