2010-06-03 12 views
7

Nella mia applicazione, voglio memorizzare i dati geografici (longitudine e latitudine). Poi voglio chiedere "quale posto è in questa regione". Non è possibile utilizzare la query di tipo SQL, in quanto "Filtri di disuguaglianza sono consentiti su una sola proprietà" in GQL link textCome archiviare e cercare dati geografici in AppEngine?

Conoscete un'altra soluzione su come memorizzare questi dati nel database AppEngine e richiederli con GQL?

risposta

7

Ho avuto successo utilizzando il progetto open source geomodel per la memorizzazione e l'interrogazione di dati lat/lon nell'archivio dati App Engine. Utilizza uno geohash per abilitare le query su una singola proprietà, è disponibile sia per Python che per Java e poiché è open source è possibile modificare il codice per adattarlo al caso specifico, se necessario.

Vale anche la pena notare che è stato annunciato a Google I/O un paio di settimane fa che il datastore un giorno (si spera presto) fornirà supporto nativo per query geospaziali e di data, utilizzando internamente una curva di Hilbert. Ciò consentirebbe una query veloce per il bounding box o anche in query poligonali arbitrarie. Puoi guardare the video di quella conversazione online per maggiori dettagli, è una discussione piuttosto interessante.

0

È possibile utilizzare Geohash per codificare latitudine e longitudine in una singola stringa, quindi utilizzare solo un indice di proprietà ascendente e discendente per individuare le corrispondenze più vicine.