2010-06-03 7 views
7

Dans ma demande, je souhaite stocker des données géographiques (longitude et latitude). Ensuite, je veux demander "quelle place est dans cette région". Une requête de type SQL ne peut pas être utilisée, car les "filtres d'inégalité sont autorisés sur une seule propriété" dans GQL link textComment stocker et rechercher des données géographiques dans AppEngine?

Connaissez-vous une autre solution pour stocker ces données dans la base de données AppEngine et les demander avec GQL?

Répondre

7

J'ai eu du succès en utilisant le projet open-source geomodel pour stocker et interroger des données lat/lon dans la banque de données App Engine. Il utilise un geohash pour activer l'interrogation sur une seule propriété, il est disponible pour Python et Java et comme il est open source, vous pouvez modifier le code pour l'adapter à votre cas particulier si nécessaire. Il est également intéressant de noter qu'il a été annoncé à Google I/O il y a quelques semaines que le datastore fournirait (bientôt bientôt) un support natif pour les requêtes géospatiales et de date, en utilisant une courbe de Hilbert en interne. Cela permettrait une interrogation rapide pour la boîte englobante ou même dans des requêtes polygonales arbitraires. Vous pouvez regarder the video de cette discussion en ligne pour plus de détails, c'est une discussion assez intéressante.

0

Vous pouvez utiliser Geohash pour coder la latitude et la longitude en une seule chaîne, puis utiliser simplement un index de propriété croissant et décroissant pour localiser les correspondances les plus proches.