因此,boost以R树的形式提供了不错的空间索引功能。这很整洁,但是一旦树被构建,似乎还无法序列化,是吗?
常规的“ out_archive << rtree”语法不起作用,因为rtree没有serialize()成员。在boost 1.57中,似乎有一些实验代码,例如/boost/geometry/index/detail/serialization.hpp,但实际上似乎没有编译!
所以第一个问题:有人知道如何使用boost序列化R树吗?
如果不是,那么我的第二个问题是:您将如何将索引永久存储在磁盘上,以避免每次都重新构建索引?(我有一个包含1.45亿个条目的数据集,构建索引需要花费几个小时,所以我真的不想多次构建索引!)
可以加载包(使用打包算法)。
此外,还有创建包含一些对象的R树的算法。这项技术称为批量加载,是通过使用打包算法[5] [6]完成的。此方法速度更快,并导致R树具有更好的内部结构。这意味着查询性能得到提高。
[5] Leutenegger,Scott T .;Edgington,Jeffrey M .;洛佩兹,马里奥·A(1997)。STR:一种简单高效的R树打包算法
[6] Garcia,Yvan J .;洛佩兹,马里奥·A。Leutenegger,Scott T.(1997)。批量加载R树的贪婪算法
更多详细信息:http : //www.boost.org/doc/libs/1_57_0/libs/geometry/doc/html/geometry/spatial_indexes/introduction.html
您可以将内存映射文件与自定义分配器一起使用。这样,您可以使用所需的任何表示形式,它将自动保留
更多详细信息:http : //www.boost.org/doc/libs/1_57_0/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句