MX-CIF四叉树的批量加载算法

时间:2011-08-05 00:26:07

标签: spatial quadtree

我的应用程序从地图文件加载~100k项目(矩形)的集合,然后构建MX-CIF四叉树作为快速查找的索引。四叉树在启动时构建,其内容在运行时不会更改。

(在MX-CIF四叉树中,项目由完全包含它的最小节点存储...内部和叶子节点都可能包含项目)

在第一遍中,我找到了集合的外部区域,所以我知道根节点有多大。

在第二遍中,我将每个项目添加到完全包含它的最小节点。一旦节点传递了一定数量的项目,它就会被拆分,子节点将在新的父节点和4个子节点之间重新分配。

鉴于我预先拥有所有项目,我怎样才能更有效地构建树?

1 个答案:

答案 0 :(得分:0)

你真的需要MX-CIF树吗? 对于矩形,我建议使用X-Tree或PH-Tree。

如果您事先知道整个数据集(批量加载),则X树来自R树并具有出色的插入时间。它们还具有非常好的范围查询性能。可以在此处找到示例实现:  XXL Library

PH-Tree在批量加载时稍慢,但如果对象在之后更新/移动则要快得多。范围查询性能类似于X树,但是在提取小结果集时PH树更快(主要成本在于提取值,而对于X树,主要成本在于处理查询(找到第一个节点) ,...))。此处提供了PH树实现:PH-Tree

免责声明:我参与了PH树的开发。