我正在尝试找到一种有效的方法,可能是O(log(n)),根据地理坐标(lat,lon)找到给定数量的最近位置到查询位置。
预先不知道查询点,但我可以提前组织其他位置以优化查询。
是否有这样的方法,还是我必须订购并裁剪所有同行的清单?
答案 0 :(得分:0)
如果你的表面满足三角不等式,即是一个euklidian空间,重新排序空间索引的最佳算法是空间填充曲线或怪物曲线。它将2d问题简化为1d问题并离散化并解决空间的问题。查找类似位置的方法类似于O(log(n))。你可以在nick空间索引hilbert curve四叉树博客上找到一篇好文章。我建议也看看n-ary monotonic grey code。我自己编写了一个php实现,包括4个方向的hilbert曲线和moore曲线。