邻近分析工具计算距离的方法

任意两个要素之间的距离均被计算为两者之间的最短间隔,即两个要素最接近彼此的位置。 所有用于计算距离的地理处理工具(包括近邻分析生成近邻表空间连接(含最近选项)等工具)均采用此计算逻辑。

当输入数据采用等距投影坐标系时,距离测量结果最为精确。 虽然无论采用何种坐标系均可执行距离计算,但若数据使用地理坐标系或未正确选择的投影坐标系,计算结果可能不准确甚至毫无意义。

了解有关坐标系和投影的详细信息

在下文论述中,“距离”始终指代两个要素之间的最小间隔。

特别注意事项

请记住以下几点:

  • 可能存在多个要素与另一要素同等接近的情况。 此时,系统将随机选择其中一个同等接近的要素作为最近要素。
  • 当某要素被另一要素包含或位于其内部时,两者间距离为零。
    • 这意味着若某要素位于面内部,则该要素与周边面的距离为零。
  • 当两个要素之间存在至少一个共享的 x,y 坐标时,其距离为零。
    • 这意味着当两个要素相交、重叠、交叉或接触时,两者间距离为零。
  • 距离始终计算至面要素的边界,而非面的中心或质心。
    • 如前所述,若某要素完全位于面内部,则该要素与周边面的距离为零。
  • 任意两个要素(任何类型)间的距离计算结果始终保持一致,与测量的起点和终点无关。

距离计算的基本运算规则

距离计算取决于要素的几何类型以及坐标系等其他因素。 但是,以下三条基本规则(下文详述)决定了距离的计算方式:

  1. 两点之间的距离为连接两点的直线距离。
  2. 点与线之间的距离计算采用垂距或最近折点原则。
  3. 折线之间的距离由线段折点决定。

规则 1:两点之间的距离为连接两点的直线距离

下图展示了两点间的距离测量方式,以及邻近分析工具使用的几个其他关键字和要素。

邻近分析相关字段图示

上图中的关键字(IN_FIDNEAR_DISTNEAR_FIDNEAR_XNEAR_YNEAR_ANGLE)是通过生成近邻表工具添加到输出以及运行近邻分析工具时添加到输入要素类的字段。

多点要素间

针对多点要素间距离计算的特殊情况:使用规则 1 计算输入多点要素中各点与近邻多点要素中各点的距离,其中最小距离即为两个多点要素间的距离。

此外,若某个多点要素的某一点与另一个多点要素的某一点重合,则两个多点要素间的距离为零。 此原则适用于所有多部分要素。

规则2:点与折线间的距离计算采用垂距或最近折点原则

在 ArcGIS 中,线要素称为折线。 “线”与“折线”这两个术语可互换使用。 折线是有序点集,这些点称为折点。 单个折点称为折点。 折线可包含任意数量的折点。 由两个折点定义的线称为线段。 定义线段的两个折点称为端点。

类似地,面是由一条或多条折线定义的封闭区域。

点到线段的最短距离为到该线段的垂距。 若垂足不在线段端点范围内,则到最近端点的距离为最短距离。

点与折线距离计算

点到折线

若折线仅包含一个线段,则直接应用规则 2 计算距离。

当折线包含多个线段(最常见情况)时,首先确定距该点最近的线段,再应用规则 2 计算距离。

点到面

由于面是由有序线段集合定义的封闭区域,计算点到面的距离需要先确定距该点最近的线段,再应用规则 2 计算距离。

仅当点位于面外部时距离为正值;否则距离为零。

面内外点近距

在上图中,点 2 和点 3 的距离为零,点 1 和点 4 的距离为正值。

规则 3:折线之间的距离由线段折点决定:

对于两个非点要素(如两条线段):

  1. 使用规则 2 计算输入线段各端点到近邻线段的距离。
  2. 计算近邻线段各端点到输入线段的距离。
取上述两组距离值中的较小值作为两线段间的距离。

折线间

在最简单的情况下,假设两条折线均各含一个线段。 下图显示了从折点 C 到由折点 AB 定义的线段的垂距 CX。 虽然也可从折点 D 计算垂距,但其距离大于 CX。 因此,CX 是从线段 CD 到线段 AB 的最短距离。

请注意,从折点 A 或 B 无法向线段 CD 作垂线,因此最近距离取折点 A 和 B 到折点 C 的距离。 最终结果为 AC 是线段 AB 到线段 CD 的最短距离。

在计算得到的两个距离值(AC 和 CX)中,CX 是所有折点到线段距离中的最小值,故为两线段间的最短距离。

两线段间的距离

当两条折线均包含多个线段时,首先找到最接近的两个线段,然后按照规则 3 计算两者之间的距离。

折线到面

当计算折线与面之间的距离时,首先确定最接近的两个线段:一个来自折线,另一个来自面边界线段序列。 然后按照规则 3 描述的流程计算这两个线段间的距离。

总结

下图整体展示了不同要素类型间距离的计算方式以及最近位置的可能情况。 并非所有可能组合均予展示。

如何计算要素间距离

相关主题