邻域分析工具计算距离的方法
定义距离的方法
任意两个要素之间的距离按两者间最短间距计算,即两个要素彼此最接近的距离。所有计算距离的地理处理工具都使用该逻辑,包括以下工具:近邻分析、生成邻近表、点距离和空间连接(带有 CLOSEST 匹配选项)。
当输入数据采用等距离投影坐标系时,可得到最精确的距离测量。尽管不论在任何坐标系中都可以进行距离计算,但是当您的数据采用地理坐标系或选择了不恰当的投影坐标系时,结果可能不精确甚至没有意义。
在以下介绍中,距离始终指两个要素的最小间距。
特别注意事项
- 与同一要素距离等近的要素可以有多个。在此种情况下,可随机选择其中一个等近的要素作为最近要素。
- 当一个要素包含或包含于另一个要素时,两者间的距离为零。
- 就是说,当一个要素处于某个面中时,该要素和其周围的面之间的距离为零。
- 只要两个要素有至少一个公共的 x,y 坐标,两者间的距离就为零。
- 也就是说,当两个要素相交、叠置、交叉或相接时,两者间的距离为零。
- 始终以面要素的边界而不是面的中心或质心来计算距离。
- 如上所述,如果要素完全处于某个面内,则该要素与其周围的面之间的距离为零。
- 无论以哪个要素作为测量起始点或终止点,两个要素(可为任何类型)间的距离始终相同。
查找距离的基本操作
应根据要素的几何类型和其他因素(如坐标系)来计算距离。但是,下面详细介绍了三种确定距离计算方法的基本规则。
- 两点间的距离是连接两点的直线。
- 点到直线的距离是点到直线的垂线或最近的折点的距离。
- 折线间的距离取决于线段折点。
规则 1:两点间的距离是连接点的直线
下图显示两点间的距离以及邻域分析工具使用的其他几个关键字和要素。
通过生成邻近表和点距离工具将上述注释中的关键字(IN_FID、NEAR_DIST、NEAR_FID、NEAR_X、NEAR_Y 和 NEAR_ANGLE)添加到输出中,并在运行近邻分析工具时将这些关键字添加到输入要素类中。
多点至多点
对于计算多点间距离的特殊情况,可使用规则 1 计算输入多点要素中的每一点到邻近多点要素中的每一点的距离,这些距离中的最短距离是两个多点要素间的距离。
另外,如果多点要素中的某一点在另一个多点要素中的某一点之上,则两个多点要素间的距离为零。这适用于所有多部分要素。
规则 2:点到折线间的距离是点到折线的垂线或最近的折点的距离
在 ArcGIS 中,线要素称为折线。线和折线这两个术语可互换。折线是点的有序集合,这些点称为折点。"vertex" 是 "vertice" 的单数形式。一条折线可以拥有任意多的折点。由两个折点定义的线叫做线段。定义一条线段的两个折点称为端点。
同理,面是由一条或多条折线定义的封闭区域。
点和线段间的最短距离是点到线段的垂线。如果无法在线段的端点之间画出垂线,那么点到最近端点的距离为最短距离。
点到折线
如果折线只有一条线段,可使用规则 2 得出该距离。
当折线有多条线段时(最常见情况),先确定与点距离最近的线段,之后使用规则 2 得出该距离。
点到面
因为面是由有序线段集合围成的封闭区域,因此计算点到面的距离首先要确定与点距离最近的线段,之后使用规则 2 得出该距离。
仅当点位于面外时距离为正值;否则,距离为零。
在上图中,点 2 和 3 到平面的距离为零,而点 1 和 4 到平面的距离为正值。
规则 3:折线间的距离取决于线段折点
对于两个非点要素,如线段:
- 使用规则 2 计算输入线段的每个端点到邻近线段的距离。
- 计算出邻近线段的每个端点到输入线段的距离。
折线到折线
最简单的情况是,假设每个折线要素都有一条线段。下图显示从折点 C 到由折点 AB 定义的线段的垂线 CX。也可以计算从折点 D 到线段的垂线,但是该距离长于 CX。因此,CX 是从线段 CD 到线段 AB 的最短距离。
请注意,因为无法画出从折点 A 或 B 到线段 CD 的垂线,因此要从折点 A 或 B 到折点 C 计算最短距离。结果是 AC 为线段 AB 到线段 CD 的最短距离。
在两个计算出的距离(AC 和 CX)中,因为 CX 在所有折点到线段的距离中最短,因此它是两条线段间的最短距离。
当两条折线都有多条线段时,找到最近的两条线段,之后根据规则 3 计算两者间的距离。
折线到面
当计算折线和面之间的距离时,要确定最近的两条线段:一条来自折线,而另外一条来自组成面边界的一系列线段。按照规则 3 中介绍的如下过程计算这两条线段间的距离。
计算邻近角
在任意两个要素类型间,通过两个最近的点和在两点间画出的一条线计算该距离。这条线和水平轴之间的角是邻近角。
逆时针测量角,该角度介于 0 与 180 度之间。
顺时针测量角,该角度介于 0 与 -180 度之间。
概要
下图给出的概览图说明如何计算不同要素类型间的距离以及如何按照上述内容确定最近位置。未显示所有可能的组合。