【发布时间】:2015-03-12 18:37:13
【问题描述】:
因此 boost 以 R-trees 的形式提供了很好的空间索引功能。这很简洁,但是一旦构建树似乎还不能序列化它,我错了吗?
通常的“out_archive
所以第一个问题:有人知道如何用 boost 序列化 R-tree 吗?
如果不是,那么我的第二个问题是:您将如何将索引永久存储在磁盘上以避免每次都重新构建它? (我有一个包含 145M 条目的数据集,构建索引需要几个小时,所以我真的不想多次构建它!)
【问题讨论】:
-
请参阅stackoverflow.com/questions/13599557/… 了解类似问题。如果我们谈论的是 145M 条目,我认为向基于内存的 R-Trees 实现添加持久性是没有意义的。相反,请使用专为持久存储索引信息而设计的实现。
-
另一个想法是创建一个虚拟堆(使用磁盘文件作为虚拟存储),并将所有用于分配、访问和释放 R-Tree 项的调用映射到适当的虚拟堆 API .该虚拟内存堆的“交换”文件将成为您的持久索引,并且在运行时,您可以在内存中保存尽可能多的条目,并在内存可用时缓存交换文件。
标签: c++ serialization boost boost-geometry