确定一个点是否在路上

时间:2009-08-24 01:41:55

标签: maps gis polygon polyline arcgis-js-api

如果我有一条描述道路的折线并且我知道所有部分的道路宽度,我是否可以使用一种算法来确定某个点是否在路上?我不完全确定如何做到这一点,因为线本身的宽度为1px。

感谢,

杰夫

2 个答案:

答案 0 :(得分:2)

找到点到线的最小距离(它将是垂直于线的矢量)。实际计算,其中P0是路段的第一个点,v是路段向量,w是从P0到所讨论的点的向量。您将不得不迭代折线中的每条边。如果距离小于该段的宽度,那么它就在路上“。”

d = |v x w| / |v|

角落可能很棘手,具体取决于您是将它们视为圆角(恒定半径)还是角度。

答案 1 :(得分:2)

也许您可以拍摄每个线段,构建线段的矩形+宽度,并使用矩形/点碰撞算法来确定矩形是否包含该点。一个好的算法将考虑width = 1场景,它应该只是尝试构建线段的反函数并确定y-1(point.y)是否是line_segment.x1和line_segment.x2之间的x