【问题标题】:Determining if a point is on a road判断一个点是否在路上
【发布时间】:2010-11-22 03:37:10
【问题描述】:

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

谢谢,

杰夫

【问题讨论】:

  • 感谢大家的快速解答。这些听起来与我将要采取的方法相似,但想检查我是否做错了什么。你的回答很有帮助。

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


【解决方案1】:

找到点到直线的最小距离(它将是一个垂直于直线的向量)。实际计算,其中 P0 是路段的第一个点,v 是路段向量,w 是从 P0 到相关点的向量。您将不得不遍历折线中的每条边。如果距离小于该路段的宽度,则它“在”道路上。

d = |v x w| / |v|

根据您将它们视为圆形(恒定半径)还是角形,这些角可能会很棘手。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多