我有位于核心数据中的位置数据的对象,我希望能够获取并显示当前位置的最近点。我知道有一些公式可以计算从当前纬度/经度到存储纬度/经度的距离,但我很好奇为核心数据中存储的一组1000多点执行此操作的最佳方法。我知道我可以将核心数据中的点返回到数组,然后循环查找点之间的距离的最小值,但我想是有一种更有效的方法,可能以某种方式利用核心数据。
任何见解都将受到赞赏。
编辑: 我不知道在初始搜索中我是如何错过这个的,但是this SO question建议只是迭代核心数据对象的数组,但是根据当前位置用一个边界框限制数组大小。这是我能做的最好的吗?
答案 0 :(得分:2)
我对核心数据知之甚少,但有一些众所周知的算法,如Quadtree来解决这个问题
答案 1 :(得分:2)
从我可以收集到的内容来看,在这种情况下,最佳方法似乎是使用当前位置周围的边界框返回一个点数组。
如果返回的数组为空,则可以检索当前位置的特定范围内的点,然后增加该框的大小。一旦某些结果返回,计算数组中最近的结果并使用该点。
答案 2 :(得分:1)
您正在制作的内容名为Nearest neighbor search,并且有一个维基百科条目,描述了用于计算它的方法。我认为这是一个良好的开端,因为每种方法的复杂性都是状态,因此您可以根据实施方式来衡量复杂性:)
NNS最简单的解决方案 问题是计算距离 从查询点到其他每一个 指向数据库,保持跟踪 迄今为止“最好的”。这个算法, 有时被称为天真 方法,运行时间为O(Nd)
位置敏感散列(LSH)是一个 在空间中对点进行分组的技术 基于一定距离进入“水桶” 在点上运行的度量。点 在...之下彼此接近 选择的度量标准映射到相同的 高概率的桶