2012-10-25 5 views
5

Sto usando la libreria spatialindex da http://libspatialindex.github.com/scelta dei parametri per R * dell'albero utilizzando SpatialIndex biblioteca

sto creando un * albero R nella memoria principale:

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); 

Poi sto inserimento di un grande numero di scatole di delimitazione, attualmente circa 2,5 milioni (rete stradale della Baviera in Germania). Più tardi cercherò di inserire tutte le strade dell'Europa.

Quali sono i parametri validi per il gestore di archiviazione e il rtree? Per lo più sto usando il rtree per trovare le strade più vicine a una determinata query (bbox intersezione).

+0

+1 Perché non avevo mai sentito parlare di un albero R * prima ed è piuttosto interessante. http://en.wikipedia.org/wiki/R*_tree –

+0

beh, si tratta di una struttura di indice piuttosto standard, utilizzata per rispondere alle query dell'intervallo di spazio (concedimi tutti gli oggetti che rientrano in una determinata query del rettangolo) e alle domande più vicine (dammi gli oggetti k-più vicini alla mia query punto). Se sei interessato, dai uno sguardo agli indici spaziali in generale: http://en.wikipedia.org/wiki/Spatial_database – arthur

risposta

3

Dato che i dati sono statici, un buon carico di carico può funzionare per voi. Il più popolare (e piuttosto semplice) carico di bluk è Sort-Tile-Recursive. Tuttavia, è in qualche modo progettato attorno ai dati dei punti. Mentre stai inserendo oggetti spaziali, potrebbe anche non funzionare.

Se si utilizza un carico di massa, non sarà più un albero R *, ma un albero R normale.

Capacità 10 suoni modo troppo poco per me. Vuoi un fan-out molto più grande. Ma dovrai fare un benchmark, questo è il set di dati e dipende dalla query. Sicuramente proverei 100 o più.

+0

Grazie per i commenti e le informazioni. Ho già aumentato entrambi i valori di capacità a 100. Questo costruisce un albero di altezza 3. Proverò a sperimentare con i valori e pubblicarli qui in pochi giorni .. – arthur

+0

Secondo quanto spiegato da Mario in http: // lists. gispython.org/pipermail/spatialindex/2013-June/000354.html, l'albero caricato in blocco non è né semplice albero R, né R * -tree. – mloskot

+0

Quindi quella mail è imprecisa. Il caricamento collettivo di un albero R con STR non produrrà lo * albero * stesso come un albero a R caricato in modo incrementale (per ovvi motivi, ad esempio il tasso di riempimento è molto più alto rispetto a un albero caricato incrementale), ma tuttavia è un valido R- * e * R * -tree e possono essere interrogati e aggiornati allo stesso modo. –

Problemi correlati