我有一组由两点定义的段。鉴于一点,我怎样才能发现最接近这一点的细分?
我已经编写了一种计算点和段之间距离的算法。 无论如何,为每个段计算这样的距离然后选择具有最低距离的段并不是真正有效:(
由于段代表街道,这实际上是一个反向地理编码问题所以我希望有这个问题的众所周知的解决方案......
感谢很多!
答案 0 :(得分:4)
使用网格,kd树,四叉树或类似的二进制空间分区方法。然后,从您的点所在的树单元格开始,开始探索线段,直到从点到包含线段的单元格的距离大于到目前为止找到的最小距离。
http://en.wikipedia.org/wiki/Binary_space_partitioning
(当然,这是假设片段/街道很少变化,但你有很多点可以定位)。