我正在使用http://libspatialindex.github.com/中的spacespaceindex库

我在主内存中创建一个R *树:

size_t capacity = 10;
bool bWriteThrough = false;
fileInMem = StorageManager
    ::createNewRandomEvictionsBuffer(*memStorage, capacity, bWriteThrough);

double fillFactor = 0.7;
size_t indexCapacity = 10;
size_t leafCapacity = 10;
size_t dimension = 2;
RTree::RTreeVariant rv = RTree::RV_RSTAR;
tree = RTree::createNewRTree(*fileInMem, fillFactor, indexCapacity,
   leafCapacity, dimension, rv, indexIdentifier);

然后,我要插入大量的边界框,当前的边界框为2.5M(德国巴伐利亚州的公路网)。稍后,我将致力于插入欧洲的所有道路。

存储管理器和rtree的参数的最佳选择是什么?通常,我正在使用rtree来找到最接近给定查询(bbox交叉点)的道路。

最佳答案

由于您的数据是静态的,因此良好的大容量负载可能适合您。最受欢迎(且相当简单)的bluk加载是Sort-Tile-Recursive。但是,它是围绕点数据而设计的。插入空间对象时,它可能无法正常工作。

如果您使用的是批量加载,它将不再是R *树,而是普通的R树。

容量10听起来对我来说太少了。您想要更大的扇出。但是您需要进行基准测试,这取决于数据集和查询,这有什么好处。我肯定会尝试100或更多。

09-13 12:58