【发布时间】:2012-01-22 03:57:48
【问题描述】:
我正在尝试找到一种方法,在给定地理坐标(纬度、经度)的情况下,可以有效地(可能为 O(log(n)))找到与查询位置最近的给定数量的位置。
查询点事先不知道,但我可以提前组织其他位置,以优化查询。
有没有这样的方法,还是我必须订购并裁剪所有同行的列表?
【问题讨论】:
标签: algorithm geolocation location distance
我正在尝试找到一种方法,在给定地理坐标(纬度、经度)的情况下,可以有效地(可能为 O(log(n)))找到与查询位置最近的给定数量的位置。
查询点事先不知道,但我可以提前组织其他位置,以优化查询。
有没有这样的方法,还是我必须订购并裁剪所有同行的列表?
【问题讨论】:
标签: algorithm geolocation location distance
如果您的曲面满足三角不等式,即欧克里德空间,重新排序空间索引的最佳算法是空间填充曲线或怪物曲线。它将二维问题简化为一维问题并离散化并解决空间的寻址问题。查找类似位置的方法类似于 O(log(n))。您可以在 nick 空间索引 hilbert 曲线四叉树博客中找到一篇不错的文章。我建议也看一下 n 元单调格雷码。我给自己写了一个 php 实现,包括 4 个方向的希尔伯特曲线和摩尔曲线。
【讨论】: