在许多段中找到最接近点的算法(反向地理编码)

标签 algorithm math reverse-geocoding segments

我有一组由两点定义的线段。给定一个点,我如何找到离该点最近的线段?

我已经编写了一个算法来计算点和线段之间的距离。 不管怎样,为每个段计算这样的距离,然后选择距离最短的段并不是很有效:(

由于路段代表街道,这实际上是一个反向地理编码问题,所以我希望这个问题有众所周知的解决方案...

非常感谢!

最佳答案

使用网格、kd 树、四叉树或类似的二进制空间划分方法。然后,从你的点所在的树单元格开始,开始探索线段,直到从点到包含线段的单元格的距离大于目前找到的最小距离。

http://en.wikipedia.org/wiki/Binary_space_partitioning

(当然,这是假设路段/街道很少发生变化,但您有很多点需要定位)。

关于在许多段中找到最接近点的算法(反向地理编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423852/

相关文章:

iphone - 将街道名称和城市反向地理编码为文本

algorithm - 生成没有排列的序列

算法 - 如何生成日期结构?

algorithm - N个圆的共同重叠

c++ - 在 C++ 中求解 Ax = b, A = 下三角矩阵

javascript - 如何使用 Angular 从用户那里检索地理位置

algorithm - 在完整的无向加权图中寻找哈密顿路径与哈密顿电路

algorithm - 如何获取BB[α]树的高度

java - 如何从输入生成随机值?

angular - 使用 Angular 进行反向地理编码