【发布时间】:2010-11-22 03:37:10
【问题描述】:
如果我有一条描述道路的折线并且我知道所有部分的道路宽度,是否有一种算法可以用来确定道路上是否有一个点?我不完全确定如何执行此操作,因为线本身的宽度为 1px。
谢谢,
杰夫
【问题讨论】:
-
感谢大家的快速解答。这些听起来与我将要采取的方法相似,但想检查我是否做错了什么。你的回答很有帮助。
标签: maps gis polygon polyline arcgis-js-api
如果我有一条描述道路的折线并且我知道所有部分的道路宽度,是否有一种算法可以用来确定道路上是否有一个点?我不完全确定如何执行此操作,因为线本身的宽度为 1px。
谢谢,
杰夫
【问题讨论】:
标签: maps gis polygon polyline arcgis-js-api
找到点到直线的最小距离(它将是一个垂直于直线的向量)。实际计算,其中 P0 是路段的第一个点,v 是路段向量,w 是从 P0 到相关点的向量。您将不得不遍历折线中的每条边。如果距离小于该路段的宽度,则它“在”道路上。
d = |v x w| / |v|
根据您将它们视为圆形(恒定半径)还是角形,这些角可能会很棘手。
【讨论】:
也许您可以获取每个线段,构建线段的矩形 + 其宽度,并使用矩形/点碰撞算法来确定矩形是否包含该点。一个好的算法将考虑宽度 = 1 的情况,它应该简单地尝试构建线段的反函数并确定 y-1(point.y) 是否是 line_segment.x1 和 line_segment.x2 之间的 x
【讨论】: