障碍

障碍是网络分析图层中用于限制或改变相关网络数据集的基础边和交汇点成本的要素类。 障碍分为 3 种几何类型(点、线和面),旨在建模网络的临时变化。 下面将介绍各种类型的障碍:

  • 限制型点障碍可以对倒下的树、事故、垂下的电线或完全阻塞网络中某个特定位置处交通的任何事物进行建模。 对于位于边上的点障碍,可以允许在边上行进,但不能穿过障碍。 也可以禁止沿限制型点障碍所在的边行进。
    这两个地图演示了限制型点障碍影响路径分析的情形。
    左边的地图显示了没有任何限制型点障碍时两个停靠点之间的最短路径。 在右边的地图中,有一条道路被一棵倒下的树阻塞,因此同样两个停靠点之间的最短路径变得更长。
  • 增加成本型点障碍允许穿过障碍,但穿过障碍会增加指定的成本,例如多用一分钟。 增加成本型点障碍可用于对交通事故导致的延迟或运送危险材料的卡车停在铁路道口处所需的额外时间进行建模。
    这两个地图演示了增加成本型点障碍影响路径分析的情形。
    无论是绕过街区的北边行进还是绕过街区的南边行进,从停靠点 1 到停靠点 2 的行程时间是相同的;然而,由于穿过铁路轨道需要花费额外的时间(用增加成本型点障碍建模),所以选择只有一个铁路道口的路径。 穿过障碍的成本会加到生成路径的累积成本中。
  • 限制型线障碍禁止穿过线障碍与网络相交的部分。 例如,限制型线障碍可用于对阻塞若干个路段交通的游行或抗议队伍进行建模。 此类障碍还可用于快速隔离多条道路使其禁止被穿越,从而在结果中去除不符合要求的网络部分。
    这两个地图演示了限制型线障碍影响路径分析的情形。
    左边的地图显示了两点之间的最短路径。 右边的地图显示了几条街道被一个限制型线障碍阻塞时的最短路径。
  • 调整成本型线障碍允许在障碍所覆盖的边和交汇点上行进,但会根据指定的系数调整穿越障碍所覆盖的边和交汇点所需的成本。 如果将系数指定为 0.5,则表示行进速度为正常速度的两倍。 系数 2.0 表示行进相同距离所花费的时间为正常值的两倍。 当高速公路的某条路段因施工原因而导致行驶速度减慢时,您可能希望使用调整成本型线障碍增加行程时间。
    这两个地图演示了调整成本型线障碍影响路径分析的情形。
    左边的地图显示的是两点之间的最短路径。 在右侧,调整成本型线障碍增加了在其覆盖的道路上行进的成本。 与限制型障碍不同,该路径能够在障碍上行进,但成本有所改变。 求解程序会使用修改后的成本计算最佳路径;而且,修改后的成本会被计入结果的累积成本中。
  • 限制型面障碍禁止穿过面障碍与网络相交的部分。 此类障碍的一个具体应用是对覆盖网络中某些区域且导致道路无法通行的洪水进行建模。
    这两个地图演示了限制型面障碍影响路径分析的情形。
    左边的地图显示的是两点之间的最短路径。 在右边的地图中,一个面障碍阻塞了被洪水淹没的街道,因此同样两个点之间的最短路径发生了变化。
  • 调整成本型面障碍允许在障碍所覆盖的边和交汇点上行进;但会根据指定的系数调整穿越障碍所覆盖的边和交汇点的成本,例如,系数 0.25 表示行进速度是正常速度的四倍。 系数 3.0 表示行进相同距离所花费的时间为正常值的三倍。 此类障碍可用于对导致特定区域的行进速度减慢的暴风雨进行建模。
    这两个地图演示了调整成本型面障碍影响路径分析的情形。
    左边的地图显示的是一条穿过天气情况恶劣区域的路径,未考虑恶劣路况对行进时间的影响。 在右边的地图中,调整成本型面障碍使受暴风雨影响的道路上的行进速度增加一倍。 请注意,路径仍会穿过暴风雨影响区域的南端,因为缓慢地驶过暴风雨影响区域的一小部分要比完全绕过暴风雨影响区域而行驶所花费的时间少得多。 与调整成本型线障碍类似,求解程序会使用修改后的成本计算最佳路径;而且,修改后的成本会被计入结果的累积成本中。

障碍是网络分析图层的一部分,但不是网络数据集的一部分。 障碍只会影响其所在的网络分析图层。 如果其他分析中需要障碍,则应将其加载到相应的网络分析图层中。 也可以不使用障碍,而通过编辑网络数据集来实现。

要改变网络的可穿越性或元素成本,除了可以通过障碍来实现之外,还可以通过编辑网络数据集来实现。 但是,由于障碍可以帮助您快速添加和移除网络更改,因此是对临时成本更改进行建模的理想之选:阻塞交通的树最终会被搬走,而洪水也终将退去。 一旦障碍所建模的事件结束,只需将其删除即可。

由于障碍可以作为编辑的替代功能使用,因此即使不具有网络数据集编辑权限,您仍然可以更改网络的可穿越性和成本。 例如,如果您有一个不可编辑的网络数据集(例如 StreetMap Premium North America)并且认为某个给定区域中的成本值不能准确反映行程时间,您可以添加一个面障碍并将成本调整为更合适的值。 但是,使用障碍可能会降低求解程序的性能。

创建或者加载线或面障碍所需的时间与其覆盖的网络元素的数量成正比。 用障碍覆盖密集网络元素或大面积的网络区域可能是不可行的。

点、线和面障碍

障碍类存在于所有网络分析图层中。

使用编辑选项卡上的创建工具,或使用添加地点地理处理工具向障碍类中添加障碍。

可通过属性表(障碍类中所有障碍及其属性都列在此表中)或单个障碍的属性窗格(在此表中,一次只列出一个障碍及其属性)对障碍的属性进行检查和编辑。

点障碍要素图层

创建或添加点障碍后,该点障碍会捕捉到搜索容差内距离它最近的网络边或交汇点。 网络上障碍的位置由网络位置字段(SourceID、SourceOID、SideOfEdge 和 PosAlong)指定。 如果一个限制型点障碍位于某条边上,您既可以仅禁止穿过这个点障碍,也可以禁止穿过整条边。 对于调整成本型点障碍,只要穿过障碍,就会增加路径成本。

点障碍属性

下表介绍了点障碍属性:

点障碍的输入字段

输入字段描述

ObjectID

系统管理的 ID 字段。

Name

网络分析对象的名称。

BarrierType

指定点障碍是完全限制通行还是增加通过障碍时的成本。 可用选项如下:

  • 禁止型 (0) - 禁止穿过障碍。 这是默认值
  • 增加成本型 (2) - 穿过障碍会增加网络成本,具体增加值取决于在 Attr_[Cost] 属性值中指定的值。

FullEdge

此属性特定于边元素上的限制型点障碍。 默认值为 False

  • False - 允许沿着边行进,但不允许穿过障碍。
  • True - 禁止沿相关边的任何位置行进。

注:
仅路径、最近设施点、位置分配、OD 成本矩阵和车辆配送分析图层支持此字段。

Attr_[Cost]

(例如,Attr_Minutes,其中 Minutes 是网络上的成本属性。)

此属性特定于增加成本型障碍,并且仅限于大于或等于零的值。 它表示穿越障碍时会增加的网络成本值。

注:
仅 Last Mile Delivery 分析图层支持此字段。

Additional_Time

遍历障碍时增加的行驶时间。

该字段值必须大于或等于零,并且值将以时间字段单位属性指定的单位进行解释。

注:
仅 Last Mile Delivery 分析图层支持此字段。

Additional_Distance

遍历障碍时增加的距离。

该字段值必须大于或等于零,并且值将以距离字段单位属性指定的单位进行解释。

注:
仅 Last Mile Delivery 分析图层支持此字段。

AdditionalCost

遍历障碍时增加的成本。

该字段值必须大于或等于零,并且值将以未知单位进行解释。

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge
  • SnapX
  • SnapY
  • SnapZ
  • DistanceToNetworkInMeters

结合使用这些属性可描述网络中对象所在的点。

了解有关在网络中定位输入的详细信息

CurbApproach

CurbApproach 属性用于指定受障碍影响的行驶方向。 可用选项如下:

  • 车辆的任何一侧 (0) - 障碍将影响在边左右两个方向上行驶的车辆。
  • 车辆右侧 (1) - 行驶过程中,如果障碍位于车辆右侧,则车辆会受影响。 在同一条边上行驶但从左侧接近障碍的车辆不会受到障碍的影响。
  • 车辆左侧 (2)- 只会影响车辆的左行方向(障碍位于车辆左侧)。 在同一条边上行驶但从右侧接近障碍的车辆不会受到障碍的影响。

由于交汇点是点且不分左右侧,所以无论路边通道如何设置,交汇点上的障碍都会影响所有车辆。

点障碍的输入/输出字段

输入/输出字段描述

Status

该字段受到下面列出值的属性域的约束(括号中是它们的编码值)。

  • 正常 (0) - 网络位置有效。
  • 未定位 (1) - 无法确定网络中的位置。
  • 未定位网络元素 (2) - 找不到应作为网络位置的网络元素。 如果删除了网络边并且未对网络位置重新进行计算,则可能会出现这种情况。

执行求解操作后,可以使用以下某一状态值修改状态:

  • 正常 (0) - 成功对网络位置进行了评估。
  • 字段值无效 (4) - 网络位置的字段值落在分析图层的编码属性域或范围属性域之外。 例如,应该填写正数的位置可能存在负数。

线障碍要素图层

虽然点障碍会捕捉到距离它最近的边或交汇点,但线障碍却不会捕捉到网络。 因此,要对边和交汇点产生影响,线障碍必须覆盖边和交汇点。

如果线障碍的用途是穿过网络元素以及阻塞障碍与边和交汇点相交处的行进,则应在编辑会话中创建线要素并将其加载到线障碍类中。

线障碍属性

下表介绍了线障碍属性:

线障碍的输入字段

输入字段描述

ObjectID

系统管理的 ID 字段。

Name

网络分析对象的名称。

BarrierType

指定障碍的存在将完全禁止通行还是按比例增加行程成本。 可用选项如下:

  • 禁止型 (0) - 禁止穿过障碍的任何部分。 这是默认值
  • 调整成本型 (1) - 将成本乘以 Attr_[Cost] 属性值从而调整基础边阻抗。 如果障碍部分覆盖了边,则会按比例对成本执行乘法运算。

注:
仅路径、最近设施点、位置分配、OD 成本矩阵和车辆配送分析图层支持此字段。

Attr_[Cost]

(例如,Attr_Minutes,其中 Minutes 是网络上的成本属性。)

该属性特定于调整成本型障碍。 它是障碍下面的边成本要乘以的因子。

值必须大于或等于零;但是,如果将该值设置为零,由于遍历基础边没有成本,解可能会返回毫无意义的结果。 建议使用大于零的值。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledTimeFactor

它是与障碍相交街道的行驶时间要乘以的因子。 该字段值必须大于零。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledDistanceFactor

它是与障碍相交街道的距离要乘以的因子。 该字段值必须大于零。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledCostFactor

这是与障碍相交的街道的成本要乘以的系数。 该字段值必须大于零。

面障碍要素类

面障碍与线障碍类似,它们不会捕捉到网络。 因此,要对边和交汇点产生影响,面障碍必须覆盖边和交汇点。

面障碍属性

面障碍与线障碍的属性相同,如下表所述:

面障碍的输入字段

输入字段描述

ObjectID

系统管理的 ID 字段。

Name

网络分析对象的名称。

BarrierType

指定障碍的存在将完全禁止通行还是按比例增加行程成本。 可用选项如下:

  • 禁止型 (0) - 禁止穿过障碍的任何部分。 这是默认值
  • 调整成本型 (1) - 将成本乘以 Attr_[Cost] 属性值从而调整基础边阻抗。 如果障碍部分覆盖了边,则会按比例对成本执行乘法运算。

注:
仅路径、最近设施点、位置分配、OD 成本矩阵和车辆配送分析图层支持此字段。

Attr_[Cost]

(例如,Attr_Minutes,其中 Minutes 是网络上的成本属性。)

该属性特定于调整成本型障碍。 它是障碍下面的边成本要乘以的因子。

值必须大于或等于零;但是,如果将该值设置为零,由于遍历基础边没有成本,解可能会返回毫无意义的结果。 建议使用大于零的值。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledTimeFactor

它是与障碍相交街道的行驶时间要乘以的因子。 该字段值必须大于零。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledDistanceFactor

它是与障碍相交街道的距离要乘以的因子。 该字段值必须大于零。

注:
仅 Last Mile Delivery 分析图层支持此字段。

ScaledCostFactor

这是与障碍相交的街道的成本要乘以的系数。 该字段值必须大于零。

叠置障碍的优先级

当两个或多个障碍叠置时,ArcGIS Network Analyst 扩展模块 会遵循一套规则以保证行为和结果的一致性:

  • 限制型障碍优先于增加成本型障碍和调整成本型障碍。
  • 如果两个或多个增加成本型障碍相互重合,则会将各成本的 Attr_[Cost] 值加在一起。
  • 如果两个或多个调整成本型障碍叠置,则会将各成本的 Attr_[Cost] 值相乘的乘积乘以基础边被覆盖部分的相应成本。
  • 如果增加成本型障碍和调整成本型障碍叠置,则会用调整成本型障碍乘以基础边被覆盖部分的相应阻抗。 然后再将乘积与增加成本型障碍的相应 Attr_[Cost] 值相加。

创建障碍的方法

本部分将重点介绍创建障碍时可以使用的一些方法及其优缺点,从而帮助您更好地了解各种方法并从中选择一种最能满足自身需求的方法。

点障碍仅与一个网络元素相关联,即使该元素与另一元素重合也是如此。 而在默认情况下,线障碍和面障碍会影响到它们所覆盖的所有网络元素。 如果忽略线或面障碍下的任何网络元素,则可能会发生意想不到的后果。 例如,如果天桥上的道路正在进行重铺并且沿天桥添加了一个限制型线障碍,则不但不允许跨越天桥,也不允许在天桥下面的道路上行进。 这是因为在二维空间中,线障碍与两条道路相接触。 应仔细考虑如何创建障碍。

在上述的天桥示例中,可以考虑使用以下其他方法实现禁止通过天桥但不禁止通过天桥下的道路的目的:

  • 使用点障碍 - 可以用一个 FullEdge 属性设置为真的点障碍来代替天桥上的线障碍。 FullEdge 属性将确保对整条边进行限制,并且由于该障碍是点障碍,因此它只会限制它所在的那条边。

    需要注意的是,无法调整全边点障碍以仅影响边的子跨度。 与可以覆盖和影响子跨度的线障碍相比,使用点障碍会对精度造成一定影响。 此外,显示点障碍可能会引起误解,因为点障碍会显示为一个点但实际影响的是整条边。

  • 使用编辑环境 - 要确保线障碍真正与边(例如表示天桥的边)重合,可以在能够追踪边的源要素的编辑环境中创建线要素。 随后即可将新创建的重合线要素加载到线障碍类中。

    要避免使天桥下的道路同时受到限制,编辑时需更多加谨慎。 例如,可以沿天桥创建一个线要素,为下面的道路创建缓冲区,然后裁剪掉缓冲区域。 这样,将只剩下道路两边的两条线,可将它们加载到线障碍类中。 另一个选项是在天桥上追踪下面道路两侧的两条边。 这样做虽然更费事一些,但由于受影响的元素被线障碍所覆盖,因此障碍对网络的影响将显得更加清晰直观。

其他创建线障碍的方法在不同的场景中也非常有价值。 以下为示例:

  • 加载所选要素 - 选择要素(例如街道)并将所选街道加载到障碍类中。 这可以确保线障碍与街道重合。
  • 从其他网络分析图层加载路径 - 在其他网络分析图层中创建一个路径,然后将该路径作为线障碍加载回原始分析图层中。 此方法不但可以确保线障碍与街道重合,而且允许线障碍只覆盖边的一部分(而不是只能覆盖整条边),从而提供更大的灵活性。