2011-12-27 12 views
6

Qualcuno sa come funziona l'indicizzazione geospaziale, intendo l'algoritmo per calcolare i punti più vicini?all'interno del meccanismo di indicizzazione geospaziale in mongodb

In SQL possiamo fare cose come questa:
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
sicuro che questo non è sufficiente a fronte di indicizzazione geospaziale di MongoDB efficiente, ma come si fa a calcolare MongoDB e ordinare?

Molte grazie in anticipo.

risposta

4

Cuore di mongodb geospatial è Geohashes. Geohash è una struttura gerarchica di dati spaziali

che suddivide lo spazio in secchi d'forma di griglia.

non riuscivo a trovare i collegamenti appropriati per le implementazioni geohash in mongo, ma questo thread potrebbe dare alcuni spunti.

+1

Grazie! Questo aiuta molto. Mai sentito parlare di Geohashes, sembra che ho bisogno di google e approfondire il primo ~~ – adamsmith

2

dal 10gen site:

L'implementazione corrente codifica codici hash geografiche in cima standard di MongoDB B-alberi. I risultati delle query $ vicine sono esatti. Una limitazione con questa codifica, mentre veloce, è che le ricerche di prefisso non danno risultati esatti , specialmente attorno alle aree di bit flip. MongoDB risolve questo effettuando una ricerca vicino alla griglia dopo la scansione del prefisso iniziale per selezionare punti inattivi. Ciò generalmente garantisce che le prestazioni rimangano molto elevate fornendo al contempo risultati corretti.

+0

Ci sono anche commenti sulle specifiche dell'implementazione nel codice sorgente C++ che è open source e disponibile per il download (ho il codice sorgente su un altro computer ma penso che sia un albero z-order-b ... dal mio punto di vista il risultato finale è fondamentalmente un algoritmo quad-key) – Jordan