在距离计算中考虑障碍

适用于 Image Server

障碍是位于计算距离的两个位置之间的障碍物。 障碍可以是湖泊、分车道高速公路或山脉等要素。 当存在障碍时,直线距离会发生变化。 您可能希望在考虑绕过障碍所需的额外距离后,了解位置之间可能的最短距离。

徒步者和小屋之间的直线路径

当道路上存在障碍时,旅行者必须绕过它。

如果徒步者和小屋之间存在湖泊时,徒步者的路径会发生改变。

通过包括障碍并结合实际表面距离,可以调整直线距离。 确定调整后的直线距离后,可以通过成本表面源特征垂直系数水平系数来控制遇到距离的速度。 如果这些速率系数中的任何一个在指定时存在障碍,则围绕障碍的绕道将是位置之间的最小成本距离。

障碍用例

障碍可用于解决各种情况,例如:

  • 在野生动物研究中,确定两个被湖泊隔开的栖息地之间的距离。
  • 确定两个中间存在一个半岛的码头之间船只航行的最短距离。
  • 在需要绕过陡峭悬崖的区域中,确定一条徒步路线。
  • 定义飞行路径,以应对飞机与目的地之间的风暴。

使用障碍调整直线距离分析

可以在概念上将距离分析分为以下相关功能领域:

从第一个功能区开始,如下所示,使用障碍调整直线距离。 在该情景中,涉及对四个森林护林员站(紫色点)和一些河流(蓝色线)进行数据采集。

直线距离的结果显示了每个非源像元到最近护林员站的距离。

四个护林员站的直线距离地图
显示了每个非源像元到最近护林员站的直线距离。 河流也显示在地图上。

由于旅行者需要绕过障碍,因此障碍会调整直线距离。

因绕过河流(即障碍)移动而调整的直线距离地图
护林员无法穿越河流,所以河流将作为障碍。 请注意,障碍的另一侧距离增加。

当不存在障碍时,直线源方向和返回方向栅格是相同的。

四个护林员站的直线方向地图
源方向栅格指示了到最近护林员站的方向。 方向基于罗盘方向(0 到 360 度)。

返回方向栅格为每个像元标识了从该像元返回到最近源的方向。 当引入障碍时,旅行者必须绕过它们。

因包含障碍而改变的返回方向栅格地图
显示了包含河流障碍的返回方向栅格。 先前栅格的源方向值必须进行修改,以允许旅行者绕过河流。

创建包含障碍的距离栅格

要创建纳入障碍的距离栅格,请完成以下步骤:

  1. 打开距离累积工具。
  2. 提供输入栅格或要素源数据参数中的源。
  3. 对输出距离栅格进行命名。
  4. 识别输入障碍栅格或要素数据参数中的障碍。
  5. 指定其他必要参数。
  6. 单击运行

障碍影响距离计算

以下部分提供了如何使用距离累积工具,调整包含障碍的直线距离的信息。

指定障碍

如果需要绕过障碍,则障碍会改变距离计算。 障碍的示例包括湖泊、分车道高速公路、山脉、河流或悬崖。 提供了可用于指定障碍位置的输入参数,该参数可以是要素数据或栅格数据。 如果此参数的输入是要素类,则需在运行工具时将其转换为栅格。

您还可以以其他方式定义障碍。 如果提供了表面栅格、成本表面、垂直系数栅格或水平系数栅格,则这些栅格中的 NoData 像元被视为障碍。 如果设置了掩膜环境,则位于掩膜覆盖区域之外的位置(NoData 像元)也将被视为障碍。 在所有情况下,障碍禁止移动。 必要时,将对所有障碍进行轻微加厚,以防止出现任何允许穿越障碍的裂缝。 有关详细信息,请参阅以下加厚障碍以防止裂缝部分。

综上所述,可以在具有输入表面栅格、成本表面栅格、垂直系数栅格和水平系数栅格的有效值的位置,以及分析环境中定义的掩膜区域内的位置(如果指定)之间进行移动。 不允许在由障碍输入定义的位置、掩膜区域之外的位置(NoData 像元)或表面栅格、成本表面栅格、垂直系数栅格或水平系数栅格具有 NoData 值的任何位置之间移动。

障碍会影响输出距离栅格

执行距离分析时生成的以下输出栅格将受障碍影响:

  • 距离累积栅格
  • 返回方向栅格
  • 源方向栅格

距离累积栅格

对于每个非源像元,输出距离累积栅格可计算到最近或成本最低的源的距离累积。 如果指定了障碍输入,距离值会考虑绕过障碍像元的绕行。

例如,在新的建筑群中选择靠近现有电力线的位置更佳。 在下图中,显示了从每个非源像元到最近电力线(蓝线)的距离。 未指定障碍输入。 显示了生成的距离栅格,绿色表示较近的位置。

电力线的直线距离地图
显示了电力线的直线距离。 对于每个像元,计算到最近电力线段的直线距离。

由于当地限制,新的电力线不能穿过山脊顶部。 下图显示了将山脊线(紫色线)添加为障碍将造成的影响。 请注意,由于需要绕过山脊线,山脊线另一侧的位置(浅棕色)现在距离电力线更远。

因绕过障碍移动而调整的直线距离地图
调整直线距离以考虑绕过障碍所需的额外距离。

注:

如果障碍导致某些位置与源断开连接,则不会计算与断开的像元之间的距离。

返回方向栅格和源方向栅格

通过距离累积,还可以创建返回方向栅格和源方向栅格。 对于每个非源像元,返回方向栅格用于标识离开非源像元返回最近或成本最低的源时的方向。

对于每个非源像元,源方向栅格用于标识到最近或成本最低的源像元的方向。 如果计算直线距离时没有障碍,则这两个输出是相同的;如果存在障碍,则不同。

返回方向栅格和源方向栅格使用与罗盘相同的约定。 值的范围是 0 度到 360 度,并为源像元保留 0 度。 正东朝右侧,角度值以顺时针方向增加,因此 90 表示东,180 表示南,270 表示西,360 表示北。 这两个栅格报告实际方向,返回方向栅格以浮点值报告角度,而源方向栅格以整型值报告。

返回方向和源方向输出的差异可通过以下示例来说明,例如计算皮划艇划向目的地(Jim's 皮划艇租赁处)时,在皮划艇和目的地之间存在一块陆地半岛。 该半岛成为了皮划艇(旅行者)的障碍。 在下图的返回方向栅格中,每个像元存储了皮划艇离开该像元划向 Jim's 皮划艇租赁处的方向,因为皮划艇必须绕过陆地。 在代表性像元中,通过深蓝色箭头表示此方向移动。 在源方向栅格中,每个像元存储了返回到 Jim's 皮划艇租赁处的直线方向。 此方向使用浅蓝色箭头表示。 这两个方向是不同的。 深蓝色箭头指引皮划艇绕过半岛,而浅蓝色箭头则表示从任意位置返回 Jim's 皮划艇租赁处的直线方向,无论是否经过半岛。

指示当皮划艇和目的地之间有半岛时源方向和返回方向的差异的地图。
Jim's 皮划艇租赁处位于图像的左下角(橙色点)。 海岸线和黄色面为障碍。 对于一组示例像元,显示了返回方向值(深蓝色)和源方向值(浅蓝色)。 黄色面表示皮划艇需要避开的停船位置。

返回方向栅格的一个重要用途是生成从目的地到最近源的最短路径。 在下图中,输出的返回方向栅格是最佳路径为线工具的输入,用于定义皮划艇(紫色点)围绕半岛(障碍)绕过船坞(黄色面)返回皮划艇租赁区域的最短路径。

皮划艇绕过半岛返回皮划艇租赁处的划行路径
最佳路径为线工具使用直线距离输出和返回方向输出创建到源的避开障碍的最短折线路径。

障碍可以改变最近或成本最低的源

当添加障碍时,它们可能会改变到达的最近或成本最低的源像元。 例如,在以下第一个图像中,存在两个源 S1 和 S2。 对于非源像元 x,最近的源为 S1。

像元 x 与最近的源 S1 之间的角度为 180 度
在非源像元 x 处,最近的源像元为 S1,并且值 180 存储在输出方向地图中 x 位置处。

在下一图像中添加了一个水平障碍。 现在,距离 x 最近的源为 S2(如绕过障碍右端的灰色路径所示)。

水平障碍将最近的源从 S1 变为 S2
存在障碍(水平深灰色线)时,距离 x 最近的源像元变为 S2。 直接指向 S2 的方向与沿最短路径行进时的返回方向不同。

因此,障碍的存在可能会改变返回方向栅格中像元的输出值。 在此示例中,如果没有障碍,则 x 在返回方向栅格中的值将为 180.0。 如果存在障碍,则 x 的返回方向将为 121.5。

对于源方向栅格,如果没有障碍,则距离 x 最近的源为 S1,位于南方(180 度方向)。 当添加水平障碍时,分配给 x 的源方向大约为 135 度(浅蓝色箭头),这是从 x 到源 S2 的直线方向,而不是途中的方向。 由于存在障碍,x 到 S2 的返回方向和源方向是不同的。

在输出距离分配栅格中,x 值将从没有障碍时的 S1 更改为存在障碍时的 S2。

如果提供了成本表面和障碍,对于非源像元 x 值,可能会出现以下三种情况:

  1. 如果没有障碍,S1 为成本最低的源;而存在障碍时,S2 成为了具有累积成本大于 S1 值的成本最低的源。
  2. 如果没有障碍,S2 是成本最低的源,源 S2 最初比 S1 到达成本更低。 存在障碍时,S2 仍然是成本最低的源,但累积成本有所增加。
  3. 如果没有障碍,S2 是成本最低的源,但到达 S2 的路径不会经过障碍。 存在障碍时,S2 累积成本保持不变。 障碍没有造成影响。

如果提供了成本表面,且 x 成本最低的源从 S1 更改为 S2,则源方向栅格将发生变化。 但是,如果 S2 最初是成本最低的源,则 x 的源方向将保持不变。

增加障碍的厚度以防止裂缝

障碍可以表示为线性要素,例如道路或河流。 在这种情况下,在执行距离操作之前,必须将线性要素栅格化。 作为栅格,线性要素仅有一个像元的厚度。 虽然在完全水平或垂直的情况下,可以保留障碍性质,但可能存在对角线的情况。 在这种情况下,旅行者可能会通过障碍中的缝隙滑过。

为了防止这种情况发生,距离累积距离分配工具会自动将对角线部分增加一个像元的厚度。 因为旅行者无法通过对角线通过,所以障碍输入将保持为真正的障碍。

通过略微增加对角线的厚度来防止旅行者穿过障碍中的裂缝
旅行者可能会通过障碍中的对角线裂缝滑行(左图)。 为了防止这种情况发生,对角线的部分会略微加厚(右图)。

如果输入障碍是栅格数据集,则对角线像元加厚过程也会发生在仅一个像元宽度的对角线像元上。

作为工具参数中指定的数据集,障碍会与成本表面合并,并在必要时增加成本表面中的 NoData 像元的厚度。 因此,无论障碍是由数据集指定还是其位置在成本表面中被指定为 NoData,都会对障碍进行加厚,从而避免潜在的裂缝。