c – R树50,000英尺概述?

我正在研究一个学校项目,该项目涉及获取一个纬度/长点并找到已知地点列表中的前五个最近点.该列表将存储在内存中,需要注意的是我们必须选择“适当的数据结构” – 也就是说,我们不能简单地将所有位置存储在数组中并以线性方式逐个比较距离.老师建议将美国州的地点数据分组,以防止计算显然距离太远的地方的距离.我想我可以做得更好.

从我在网上的研究看来,似乎R-Tree或其变体之一可能是一个简洁的解决方案.不幸的是,这句话是我理解实际技术的原因,因为文学对于我的非学术头脑来说太过密集了.

>有人能给我一个非常高的概述,说明用lat / long数据填充R-Tree的过程是什么,然后遍历树以找到给定点的那5个最近邻居?
>此外,该项目是在C中,我不必重新发明这个,所以如果你使用了R Tree的现有开源C实现,我会对你的经历感兴趣.

更新:This blog post描述了区域划分空间(如PR四叉树)的直接搜索算法.希望有助于未来的读者.

解决方法

您是否考虑过其他数据结构?
我相信,Point Quadtree不是R-tree,而是更有效地满足您的需求. Spatial Index Demos为可能的数据结构列表提供了一些演示,包括R-tree和Point Quadtree.希望它能给出洞察力.

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...