24 #include "SpatialIndex.h"
26 using namespace SpatialIndex;
40 mList.append( d.getIdentifier() );
53 mStorageManager = StorageManager::createNewMemoryStorageManager();
57 unsigned int capacity = 10;
58 bool writeThrough =
false;
59 mStorage = StorageManager::createNewRandomEvictionsBuffer( *mStorageManager, capacity, writeThrough );
62 double fillFactor = 0.7;
63 unsigned long indexCapacity = 10;
64 unsigned long leafCapacity = 10;
65 unsigned long dimension = 2;
66 RTree::RTreeVariant variant = RTree::RV_RSTAR;
70 mRTree = RTree::createNewRTree( *mStorage, fillFactor, indexCapacity,
71 leafCapacity, dimension, variant, indexId );
78 delete mStorageManager;
83 double pt1[2], pt2[2];
88 return Tools::Geometry::Region( pt1, pt2, 2 );
104 Tools::Geometry::Region r;
106 if ( !featureInfo( f, r,
id ) )
112 mRTree->insertData( 0, 0, r,
id );
114 catch ( Tools::Exception &e )
117 QgsDebugMsg( QString(
"Tools::Exception caught: " ).arg( e.what().c_str() ) );
119 catch (
const std::exception &e )
122 QgsDebugMsg( QString(
"std::exception caught: " ).arg( e.what() ) );
126 QgsDebugMsg(
"unknown spatial index exception caught" );
134 Tools::Geometry::Region r;
136 if ( !featureInfo( f, r,
id ) )
140 return mRTree->deleteData( r,
id );
148 Tools::Geometry::Region r = rectToRegion( rect );
150 mRTree->intersectsWithQuery( r, visitor );
163 Tools::Geometry::Point p( pt, 2 );
165 mRTree->nearestNeighborQuery( neighbors, p, visitor );