序列化/反序列化Boost.Geometry rtree

时间:2016-10-26 07:38:41

标签: c++ boost boost-serialization r-tree boost-geometry

简短版本:是否有任何稳定/可靠的方法来序列化/反序列化Boost.Geometry rtree?

更长的版本:Boost.Geometry中的rtree实现具有对序列化/反序列化的实验性支持,但是支持是不稳定的,它有时会在反序列化期间抛出异常。我甚至不知道它是否会以静默方式破坏树数据。

我已经实现了一个简单但非常慢的hack:序列化所有树节点(而不是整个树),并在反序列化期间重建树。我想要更快的东西。

1 个答案:

答案 0 :(得分:0)

您可以使用提供批量装载的包装构造函数。

参见http://www.boost.org/doc/libs/1_62_0/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html  *

namespace  bgi  =  boost::geometry::index; 
typedef  std::pair<Box,  int>  Value; 
typedef  bgi::rtree<  Value,  bgi::linear<32>  >  RTree; 

std::vector<Value>  values; 
/*fill the values container*/ 

RTree  rt; 
rt.insert(values.begin(),  values.end()); 

如果您的迭代器是输入迭代器,则可以避免使用临时副本(values容器不需要是容器)。