需要 Network Analyst 许可。
障碍是网络分析图层中用于限制或改变相关网络数据集的基础边和交汇点成本的要素类。障碍分为三种几何类型(点、线和面),设计障碍的目的在于对网络中的的临时更改进行建模。下面将介绍各种类型的障碍:
- 限制型点障碍可以对倒下的树、事故、垂下的电线或完全阻塞网络中某个特定位置处交通的任何事物进行建模。对于位于边上的点障碍,可以允许沿着边行进但不允许穿过障碍。也可以禁止沿限制型点障碍所在的边行进。
- 增加成本型点障碍允许穿过障碍,但穿过障碍会增加指定的成本,例如多用一分钟。增加成本型点障碍可用于对交通事故导致的延迟或运送危险材料的卡车停在铁路道口处所需的额外时间进行建模。
- 限制型线障碍禁止穿过线障碍与网络相交的部分。例如,限制型线障碍可用于对阻塞若干个路段交通的游行或抗议队伍进行建模。此类障碍还可用于快速隔离多条道路使其禁止被穿越,从而在结果中去除不符合要求的网络部分。
- 调整成本型线障碍允许在障碍所覆盖的边和交汇点上行进,但会根据指定的系数调整穿越障碍所覆盖的边和交汇点所需的成本。如果将系数指定为 0.5,则表示行进速度为正常速度的两倍。系数 2.0 表示行进相同距离所花费的时间为正常值的两倍。当高速公路的某条路段因施工原因而导致行驶速度减慢时,您可能希望使用调整成本型线障碍增加行程时间。
- 限制型面障碍禁止穿过面障碍与网络相交的部分。此类障碍的一个具体应用是对覆盖网络中某些区域且导致道路无法通行的洪水进行建模。
- 调整成本型面障碍允许在障碍所覆盖的边和交汇点上行进;但会根据指定的系数调整穿越障碍所覆盖的边和交汇点的成本,例如,系数 0.25 表示行进速度是正常速度的四倍。系数 3.0 表示行进相同距离所花费的时间为正常值的三倍。此类障碍可用于对导致特定区域的行进速度减慢的暴风雨进行建模。
障碍是网络分析图层(而不是网络数据集)的一部分。因此,障碍只会影响其所在的网络分析图层。如果其他分析中需要使用障碍,应将障碍加载到相应的网络分析图层中。也可以不使用障碍,而通过编辑网络数据集来实现。
要改变网络的可穿越性或元素成本,除了可以通过障碍来实现之外,还可以通过编辑网络数据集来实现。由于障碍可以帮助您快速添加和移除网络更改,因此是对临时成本更改进行建模的理想之选:阻塞交通的树最终会被搬走,而洪水也终将退去。一旦障碍所建模的事件结束,只需将其删除即可。
由于障碍可以作为编辑的替代功能使用,因此即使不具有网络数据集编辑权限,您仍然可以更改网络的可穿越性和成本。例如,如果您有一个不可编辑的 SDC 网络数据集(例如 StreetMap North America)并且认为某个给定区域中的阻抗值不能准确反映行程时间,您可以添加一个面障碍并将成本调整为更合适的值。但是,使用障碍可能会降低求解程序的性能。
创建或加载线障碍或面障碍所花费的时间与障碍覆盖的网络元素的数量成正比。用障碍覆盖密集网络元素或大面积的网络区域可能是不可行的。
点障碍、线障碍和面障碍
障碍类存在于所有网络分析图层中。
可通过网络分析工具栏上的创建网络位置工具、加载位置 对话框或添加位置地理处理工具向障碍类中添加障碍。创建、加载或添加障碍后,障碍只会影响网络分析图层的图层属性 对话框的网络位置选项卡中选中的项目。即使障碍与某些图层相交,但如果这些图层并未在网络位置选项卡中选中,障碍也不会影响这些图层。
可通过属性表(障碍类中所有障碍及其属性都列在此表中)或单个障碍的“属性”表(在此表中,一次只列出一个障碍及其属性)对障碍的属性进行检查和编辑。
点障碍要素图层
加载或创建点障碍后,该点障碍会捕捉到搜索容差内距离它最近的网络边或交汇点。障碍在网络中的位置由网络位置字段(SourceID、SourceOID、SideOfEdge 和 PosAlong)指定。如果一个限制型点障碍位于某条边上,您既可以仅禁止穿过这个点障碍,也可以禁止穿过整条边。对于调整成本型点障碍,只要穿过障碍,就会增加路径成本。
点障碍属性
点障碍的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Name | 网络分析对象的名称。 |
BarrierType | 指定点障碍是完全限制通行还是增加通过障碍时的成本。共有两个选项:
|
FullEdge | 该属性特定于边元素上的限制型点障碍。默认值为 False。
|
Attr_[Cost] (例如 Attr_Minutes,其中 Minutes 是网络上的成本属性) | 该属性特定于增加成本型障碍并且它的值被限制为大于等于零。它表示穿越障碍时会增加的网络成本值。 |
网络位置字段
| 结合使用这四种属性可描述网络中对象所在的点。 |
CurbApproach | CurbApproach 属性用于指定受障碍影响的行驶方向。如果边上某个障碍的路边通道属性设置为
由于交汇点是点且不分左右侧,所以无论 CurbApproach 如何设置,交汇点上的障碍都会影响所有车辆。 |
点障碍的输入/输出字段
输入/输出字段 | 说明 |
---|---|
Status | 该字段受到下面列出值的属性域的约束(括号中是它们的编码值)。
执行求解操作后,可以使用以下某一状态值修改状态:
|
线障碍要素图层
虽然点障碍会捕捉到距离它最近的边或交汇点,但线障碍却不会捕捉到网络;因此要对边和交汇点产生影响,线障碍需要覆盖边和交汇点。
如果线障碍的用途是穿过网络元素以及阻塞障碍与边和交汇点相交处的行进,通常只需使用创建网络位置工具 就足以实现这一目标。如果线障碍的用途是限制对整条边的跨越,则应在编辑会话中创建一个线要素并将该线要素加载到线障碍类中。某些编辑工具(如“追踪”工具)的控制功能要强于“创建网络位置”工具并可确保线障碍与网络源要素重合。
线障碍属性
线障碍的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Name | 网络分析对象的名称。 |
BarrierType | 指定障碍的存在将完全禁止通行还是按比例增加行程成本。共有两个选项:
|
Attr_[Cost] (例如 Attr_Minutes,其中 Minutes 是网络上的成本属性) | 该属性特定于增加行程成本的障碍。它是障碍下面的边成本要乘以的因子。 值必须大于或等于零;但是请注意,如果将该值设置为零,由于遍历基础边没有成本,解可能会返回毫无意义的结果。因此,建议使用大于零的值。 |
面障碍要素类
面障碍与线障碍相似,也不会捕捉到网络。因此,要对边和交汇点产生影响,线障碍需要覆盖边和交汇点。
面障碍属性
面障碍的属性与线障碍的属性相同。
面障碍的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Name | 网络分析对象的名称。 |
BarrierType | 指定障碍的存在将完全禁止通行还是按比例增加行程成本。共有两个选项:
|
Attr_[Cost] (例如 Attr_Minutes,其中 Minutes 是网络上的成本属性) | 该属性特定于增加行程成本的障碍。它是障碍下面的边成本要乘以的因子。 值必须大于或等于零;但是请注意,如果将该值设置为零,由于遍历基础边没有成本,解可能会返回毫无意义的结果。因此,建议使用大于零的值。 |
叠置障碍的优先级
两个或多个障碍叠置时,ArcGIS Network Analyst 扩展模块 会遵循一套规则以保证行为和结果的一致性:
- 限制型障碍优先于增加成本型和调整成本型障碍。
- 如果两个或多个增加成本型障碍相互重合,则会将各成本的 Attr_[Cost] 值加在一起。
- 如果两个或多个调整成本型障碍叠置,则会将各成本的 Attr_[Cost] 值相乘的乘积乘以基础边被覆盖部分的相应成本。
- 如果增加成本型障碍和调整成本型障碍叠置,则会用调整成本型障碍的 Attr_[Cost] 值乘以基础边被覆盖部分的相应阻抗,然后再将乘积与增加成本型障碍的相应 Attr_[Cost] 值相加。
创建障碍的方法
本部分将重点介绍创建障碍时可以使用的一些方法及其优缺点,从而帮助您更好地了解各种方法并从中选择一种最能满足自身需求的方法。
点障碍只与一个网络元素相关联,即使该元素与另一个元素重合也是如此。而在默认情况下,线障碍和面障碍会影响到它们所覆盖的所有网络元素。如果忽视线障碍或面障碍下面的任何网络元素,都会导致意想不到的结果。例如,如果天桥上的道路正在进行重铺并且沿天桥添加了一个限制型线障碍,则不但不允许跨越天桥,也不允许在天桥下面的道路上行进。这是因为在二维空间中该线障碍与两条道路均相交。应仔细考虑如何创建障碍。
在上述的天桥示例中,可以考虑使用其他方法实现禁止通过天桥但不禁止通过天桥下的道路的目的:
使用点障碍。 可以用一个 FullEdge 属性设置为真的点障碍来代替天桥上的线障碍。FullEdge 属性将确保对整条边进行限制,并且由于该障碍是点障碍,因此它只会限制它所在的那条边。
值得注意的是,无法将影响整条边的点障碍调整为只影响边的一部分。这样一来,与可以覆盖和影响子跨度的线障碍相比,使用点障碍会对精度造成一定影响。此外,在 ArcMap 中显示点障碍可能会引起误解,因为点障碍会显示为一个点但实际影响的是整条边。
使用编辑环境。 要确保线障碍真正与边(例如表示天桥的边)重合,可以在能够追踪边的源要素的编辑环境中创建线要素。随后即可将新创建的重合线要素加载到线障碍类中。
要避免使天桥下的道路同时受到限制,编辑时需更多加谨慎。例如,可以沿天桥创建一个线要素,为下面的道路创建缓冲区,然后裁剪掉缓冲区域。这样,将只剩下道路两边的两条线,可将它们加载到线障碍类中。另一个选项是只需在天桥上追踪下面道路两侧的两条边。这样做虽然更费事一些,但由于受影响的元素被线障碍所覆盖,因此障碍对网络的影响将显得更加清晰直观。
使用查询构建器。 在加载或创建障碍之前,可编写一个 SQL 查询语句以有效地告知 Network Analyst 您希望障碍影响哪些元素。加载之后,障碍可与某些网络元素相交而同时不对它们造成影响。
打开图层属性 对话框,然后右键单击查找网络位置面板中的网络元素并选择构建查询即可访问查询构建器。下图显示了加载线障碍之前编写的一个查询。加载障碍时,障碍会根据查询选择它应该阻塞的网络元素。显示通过查询构建器添加的障碍可能会引起误解,因为边和交汇点虽然被障碍覆盖但其功能仍然正常。例如,在上图中,尽管限制型线障碍覆盖了 ObjectID 为 43 和 38 的两条边,但这两条边仍然是可穿越的,如右面的路径所示。
还有一些其他创建线障碍的方法可用于不同的情景。以下是两个示例:
- 加载所选要素。 选择要素(例如街道)并将所选街道加载到障碍类中。这可以确保线障碍与街道重合。
- 从其他网络分析加载路径。 在其他网络分析图层中创建一个路径,然后将该路径作为线障碍加载回原始分析图层中。此方法不但可以确保线障碍与街道重合,而且允许线障碍只覆盖边的一部分(而不是只能覆盖整条边),从而提供更大的灵活性。