在距离计算中考虑障碍

适用于 ArcGIS Image for ArcGIS Online。

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

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

当障碍挡道时,旅行者必须绕行。

当徒步旅行者和小屋之间存在湖泊时,徒步旅行者的路径随之改变

可以通过包含障碍并合并实际出行的表面距离来调整直线距离。 确定经调整的直线距离后,可以通过成本表面源特征垂直系数水平系数来控制遇到该距离的比率。 如果使用障碍指定这些比率系数中的任何一个,则绕行障碍将为位置之间的最小成本距离。

障碍用例

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

  • 在野生动物研究中,确定两个栖息地之间的距离,这两个栖息地之间存在一个湖泊。
  • 当两个码头之间存在半岛时,确定船在两个码头之间行驶的最短距离。
  • 当要导航的区域中存在陡峭下降时,确定徒步旅行路径。
  • 当飞机和其目的地之间存在风暴时,确定飞机应该采用的飞行路径。

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

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

在第一个功能区中,可以使用障碍来调整直线距离,如下图所示。 该方案包括 4 个护林员站(紫色点)和一些河流(蓝色线)的集合。

直线距离结果可标识从每个非源像元到最近的护林员站的距离。

与 4 个护林员站的直线距离地图
将显示从每个非源像元到最近的护林员站的直线距离。 将显示河流。

由于旅行者需要在障碍周围移动,因此障碍将调整直线距离。

进行调整以便围绕障碍河流移动的直线距离地图
由于护林员无法穿越河流,因此河流将成为障碍。 请注意,障碍另一侧的距离会有所增加。

如果没有障碍,则直线源方向将与反向栅格相同。

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

针对每个像元,反向栅格将标识从像元返回至最近的源时的移动方向。 如果引入了障碍,则旅行者必须在障碍周围移动。

通过包含障碍而改变的反向栅格地图
将显示合并的河流障碍的反向栅格。 必须更改先前栅格中的源方向值,才能允许旅行者绕行河流。

创建包含障碍的距离栅格

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

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

障碍会影响距离计算

以下部分将提供有关使用距离累积工具调整包含障碍的直线距离的信息。

指定障碍

如果您需要绕行障碍,则障碍会更改距离计算。 障碍的示例包括湖泊、分车道高速公路、山脉或悬崖。 您可以使用一个输入参数将障碍位置所在的位置指定为要素或栅格数据。 如果此参数的输入是要素类,则当工具运行时,它将转换为栅格。

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

总而言之,允许跨输入表面栅格、成本表面栅格、垂直系数栅格和水平系数栅格中具有有效值的位置,以及跨分析环境中定义的掩膜区域内的位置(如指定)进行移动。 不允许跨障碍输入定义的位置、掩膜区域外的位置(NoData 像元)或跨表面栅格、成本表面栅格、垂直系数栅格或水平系数栅格具有 NoData 值的位置进行移动。

障碍会影响输出距离栅格

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

  • 距离累积栅格
  • 反向栅格
  • 源方向栅格

距离累积栅格

对于每个非源像元,输出距离累积栅格将计算到最近的源或成本最低的源的累积距离。 如果已指定障碍输入,则距离值可以说明绕行障碍像元。

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

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

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

进行调整以便围绕障碍移动的直线距离地图
将调整直线距离以考虑围绕障碍移动所需的附加距离。

注:

如果障碍导致任何位置与源断开连接,则不会计算到断开连接的像元的距离。

反向和源方向栅格

借助距离累积,您还可以创建反向栅格和源方向栅格。 对于每个非源像元,反向栅格可标识您离开非源像元,返回至最近的源或成本最低的源时的行进方向。

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

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

例如,如果陆地半岛位于皮划艇和目的地(Jim 的皮划艇租赁店)之间,则在计算皮划艇爱好者到达目的地的行进距离时,将说明反向输出和源方向输出之间的差异。 该半岛将成为皮划艇爱好者(旅行者)的障碍。 由于皮划艇爱好者必须在陆地上导航,因此在下图的反向栅格中,每个像元将存储皮划艇爱好者应从像元中移出,以划回 Jim 的皮划艇租赁店的方向。 将由深蓝色箭头指示代表性像元的这种定向移动。 在源方向栅格中,每个像元将存储返回到 Jim 的皮划艇租赁店的直线方向。 将由浅蓝色箭头指示此方向。 这两个方向是不同的。 蓝色箭头指示皮划艇在半岛周围移动,而浅蓝色箭头指示从任何位置返回到 Jim 的皮划艇租赁店的直线方向,不考虑半岛的位置。

当皮划艇爱好者和目的地之间存在半岛时,指示源和反向之间差异的地图
Jim 的皮划艇租赁店位于图像的左下角(橙色点)。 海岸和黄色的面为障碍。 对于一组样本像元,将显示反向值(深蓝色)和源方向值(浅蓝色)。 黄色的面将指示皮划艇爱好者需要避开的船只停泊位置。

反向栅格的重要用途是生成从目的地返回到最近的源的最短路径。 在下图中,输出反向栅格是最佳路径为线工具的输入,用于定义皮划艇爱好者(紫色点)应绕行半岛(障碍)的最短路径,从而避开船只停泊区(黄色面)以返回到皮划艇租赁区。

皮划艇应围绕半岛移动以返回到皮划艇租赁区的路径
最佳路径为线工具将使用直线距离输出和反向输出来创建到源的最短折线路径,从而避开障碍。

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

添加障碍后,它们可以更改最近的源像元或成本最低的源像元。 例如,在以下第一个图像中,存在两个源 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。