Я использую библиотеку пространственного индекса из http://libspatialindex.github.com/.
Я создаю дерево 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,5 млн (дорожная сеть Баварии в Германии). Позже постараюсь вставить все дороги Европы.
Каков хороший выбор параметров для менеджера хранилища и rtree? В основном я использую rtree для поиска ближайших дорог к заданному запросу (пересечение bbox).