路径距离工具的工作原理

实际上,所有的路径距离工具使用相同算法计算输出。主要差别由各工具的主要输出决定。

路径距离工具是既考虑水平和垂直成本要素又考虑真实表面距离的执行成本距离分析的主要工具。路径距离分配工具使用相同算法,但作为主要输出,它返回一个指明每一位置处的每一像元最近的源的栅格。路径距离回溯链接工具可识别到最近源的最小累积成本路径上的下一个近邻像元的方向性。

路径距离的计算

路径距离工具可创建一个输出栅格,其中的每个像元都基于成本最低的源像元分配累计成本。此算法利用结点/连接线像元制图表达。在此表达中,像元中心被看作结点,且每个结点通过连接线连接到相邻结点。

每条连接线都带有关联的阻抗。阻抗是根据与连接线各端点上的像元相关联的成本(从成本表面),和移动方向确定的。

为简化讨论,以下公式仅确定了行程成本如何在成本面上的像元之间进行累积;通过采用表面距离以及水平和垂直系数来修改成本的相关信息将在后续章节中予以介绍。

结点行程成本

相邻两结点间的行程成本取决于这两个结点的空间方向。像元的连接方式也会影响行程成本。

相邻结点成本

从一个像元移动到四个与其直接连接的近邻之一时,跨越连接线移动到相邻结点的成本为用 1 乘以像元 1 与像元 2 的和,然后再除以 2:

 a1 = (cost1 + cost2) / 2
  • 其中:

    cost1 为穿过像元 1 的行程成本。

    cost2 为穿过像元 2 的行程成本。

    a1 是分配给从像元 1 到像元 2 的连接线的成本。

    相邻像元的成本计算

累积垂直成本

累积成本由以下公式确定:

 accum_cost = a1 + (cost2 + cost3) / 2
  • 其中:

    cost2 为穿过像元 2 的行程成本。

    cost3 为穿过像元 3 的行程成本。

    accum_cost 为从像元 1 移动到像元 3 的累积成本。

    注:在下面的图像中,a2 为从像元 2 移动到像元 3 的成本。

非相邻像元的成本计算

对角结点成本

如果沿对角线移动,则连接线上的行程成本为 1.414214(2 的平方根)乘以穿过像元 1 的行程成本与穿过像元 2 的行程成本之和,再除以 2:

 a1 = 1.414214(cost1 + cost2) / 2
对角线像元的成本计算

确定对角线移动的累积成本时,使用以下公式:

 accum_cost = a1 +1.414214(cost2 + cost3) / 2

累积成本像元列表

使用图论创建累积成本距离栅格可被视作尝试识别最低成本像元,并将其添加到输出列表。这是起始于源像元的迭代过程。每个像元的目标是快速分配到输出成本距离栅格中。

比较路径距离和成本距离

路径距离的处理过程与成本距离相似(请参阅成本距离工具的工作原理)。首先确定源像元。然后确定到达与源像元相邻的各像元的行程成本。下一步,将各近邻像元按照从最低成本到最高成本的顺序列入列表。成本最低的像元位置将从列表中移除。最后,确定到达列表中被移除像元的各近邻的最低累积成本。

处理累积成本值列表 (3)

处理一直重复,直到栅格中的所有像元都分配到了一个累积成本。成本距离和路径距离工具的区别在于如何计算从一个像元移动到下一个像元的成本。

路径距离公式

从像元的角度考虑,路径距离工具主要用于为分析范围中的每一像元位置确定从成本最低的源到达此像元的最低成本路径。每个像元都需要确定从某个源到达自身的最低累积成本路径,可获得最小成本路径的源,以及最小成本路径。

路径距离

在成本面上的像元之间移动所需的成本通过上述讨论的公式确定。在路径距离中,这些成本(在以下等式中标识为 Cost_Surface)可以通过表面距离 (Surface_distance) 以及水平和垂直系数来修改。公式根据最小成本路径行程方向是否可以到达垂直或对角线方向上的相邻像元,计算从像元 a 到像元 b 的整个行程成本,定义如下:

  • 垂直:
    Cost_distance = Cost_Surface(ab) * Surface_distance(ab) *
                     {[Friction(a) * Horizontal_factor(a) + 
                       Friction(b) * Horizontal_factor(b)] / 2} *
                     Vertical_factor(ab)
  • 对角线:
    Cost_distance = Cost_Surface(ab) * Surface_distance(ab) * 1.414214 *
                     {[Friction(a) * Horizontal_factor(a) + 
                       Friction(b) * Horizontal_factor(b)] / 2} *
                     Vertical_factor(ab)

请注意,在将水平系数求和后,才能将线段的摩擦值除以 2。

累积成本距离

从像元 a 穿过像元 b 到像元 c 的累积行程成本如下:

Accum_cost_distance = a1 + Cost_Surface(bc) * Surface_distance(bc) * 
                 {[Friction(b) * Horizontal_factor(b) + 
                   Friction(c) * Horizontal_factor(c)]/2} *
                 Vertical_factor(bc)
  • 其中:

    a1 为从像元 a 到像元 b 的整个行程成本。

水平和垂直参数

有多种不同参数类型可以控制水平和垂直摩擦系数。对于每种系数,可以使用各种修饰属性对分析执行进一步的控制。

关于这些参数的更多细节,请参阅以下部分:

相关主题


7/10/2012