2012-01-16 8 views
5

Sto sviluppando un'applicazione gis usando l'API di Google Maps. Attualmente sto usando Postgis db.Applicazione GIS con django e google maps usando mongodb

Sto considerando di passare a MongoDB e ho seguito le domande su questo,

  1. È MongoDB una scelta praticabile per la memorizzazione di dati GIS. (È possibile un altro motore NoSQL?)

  2. Il django-nonrel ha modificato il modulo django.contrib.gis per il supporto mongodb? e quanto bene funziona?

Grazie in anticipo :)

risposta

5

Come dichiarato da Sergio Tulentsev, MongoDB ha indici spaziali. Ma non tutti i tipi di geometria possono essere memorizzati. Per quanto ne so, al momento solo i punti possono essere memorizzati. È tuttavia possibile eseguire una query utilizzando un poligono.

Poiché MongoDB è molto flessibile, è possibile memorizzare la geometria come testo, ma anche come oggetto JSON. Ad esempio, è possibile memorizzare una coordinata come: {lon: 52.1234, lat: 14.1245}. Puoi interpretare ciò sulla tua applicazione come preferisci.

Lo svantaggio di questo è che non esiste alcun indice nativo. Se non hai mai bisogno di interrogare in base alla posizione/relazione spaziale, stai bene. Se hai una query basata sulla posizione/relazione spaziale, dovresti scrivere il tuo indice. Può essere una cosa difficile ...

C'è CouchDB che ha un'aggiunta GeoSpatial. Non so come funziona/cosa supporta però.

Un approccio ibrido viene spesso adottato da alcune aziende di grandi dimensioni. Ad esempio, utilizzare MongoDB per archiviare/interrogare i dati normali e PostGIS per archiviare/interrogare i dati geospaziali.

+0

grazie per la vostra risposta, attualmente anch'io sto adottando l'approccio ibrido ma sto considerando di passare a NoSQL completo su questo. –

3

Ho lavorato con MongoDb memorizzando i punti di interesse nel DB, quindi facendo il punto in poly queries, insieme alle query radius e Mongo è stato FAR superiore a PostGres. Ho avuto tempi di risposta molto più rapidi con centinaia di migliaia di articoli.

Direi tuttavia che, a seconda della complessità delle query (ad esempio se stai facendo qualcosa oltre il punto in poli, raggio attorno a un punto), potresti desiderare un GIS db più pesante come postgres .. sei solo andando a ottenere il peso extra di postgres pure.

Mi spiace di non poter parlare anche di django.

4

Sviluppatore di Django MongoDB Engine qui.

Non abbiamo alcun tipo di supporto reale per le funzionalità GIS di MongoDB. È comunque possibile eseguire query geospaziali "lavorando intorno a Django" (vedere http://django-mongodb.org/topics/lowerlevel.html - il primo esempio riguarda in realtà gli indici Geo).

Dovrebbe essere possibile, tuttavia, implementare il supporto GIS nativo di Django nel backend MongoDB. Siamo davvero felici di guidare chi vuole avvicinarsi a questo compito!

+0

Ciao Jonas, mi piacerebbe aiutare con l'implementazione del supporto GIS nativo Django per il backend MongoDB. Stai ancora cercando sviluppatori? –

+0

Non sto più lavorando attivamente a quel progetto, ma sì, immagino che siano incredibilmente felici di ogni nuovo contributore! –

+0

Grazie, Jonas. Se potessi mettermi in contatto con qualcuno o indirizzarmi verso una pagina, sarebbe fantastico –