因此,boost以R-tree的形式提供了良好的空间索引功能。这很整洁,但是一旦它构建完成后它似乎还没有序列化它,我错了吗?
通常的“out_archive<< rtree”语法不起作用,因为rtree没有serialize()成员。在boost 1.57中似乎有一些实验代码,例如/boost/geometry/index/detail/serialization.hpp,但它实际上似乎没有编译!
所以第一个问题:有人知道如何使用boost序列化R树吗?
如果没有,那么我的第二个问题是:您将如何将索引永久存储在磁盘上以避免每次都重建它? (我有一个145M条目的数据集,构建索引需要几个小时,所以我真的不想不止一次构建它!)
答案 0 :(得分:6)
可以加载包(使用Packing算法)。
此外,还有一些算法可以创建包含一些对象数量的R树。这种技术称为批量加载,通过使用打包算法[5] [6]完成。这种方法更快,并且导致R树具有更好的内部结构。这意味着查询性能会提高。
[5] Leutenegger,Scott T。; Edgington,Jeffrey M。; Lopez,Mario A.(1997)。 STR:一种简单高效的R-Tree打包算法
[6] Garcia,Yvan J。; Lopez,Mario A。; Leutenegger,Scott T.(1997)。用于批量加载R树的贪心算法
您可以将内存映射文件与自定义分配器一起使用。这样你就可以使用你想要的任何表示,它会自动持续