我有一组由两点定义的线段。给定一个点,我如何找到离该点最近的线段?
我已经编写了一个算法来计算点和线段之间的距离。 不管怎样,为每个段计算这样的距离,然后选择距离最短的段并不是很有效:(
由于路段代表街道,这实际上是一个反向地理编码问题,所以我希望这个问题有众所周知的解决方案...
非常感谢!
最佳答案
使用网格、kd 树、四叉树或类似的二进制空间划分方法。然后,从你的点所在的树单元格开始,开始探索线段,直到从点到包含线段的单元格的距离大于目前找到的最小距离。
http://en.wikipedia.org/wiki/Binary_space_partitioning
(当然,这是假设路段/街道很少发生变化,但您有很多点需要定位)。
关于在许多段中找到最接近点的算法(反向地理编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423852/