I've got a better solution than geohashing. I break down the grid into sub-degree squares by truncating after the first decimal point, and then when I save something that I need to find on the map later, I save metadata with that point indicating the surrounding grid squares.
So if I have a point with long -122.123123123 and lat 35.56565, that's in a grid square called -122.1x35.5, and it's surrounded as follows: [-122.2x35.6][-122.1x35.6][-122.0x35.6] [-122.2x35.5][-122.1x35.5][-122.0x35.5] [-122.2x35.4][-122.1x35.4][-122.0x35.4] Those are all represented in my object as a list (db.StringListProperty, so you have to do the right permutations to make them into strings), and because of the way lists work, if a point that you're searching on is in any of the grid squares associated with a saved point, that saved point will come up. To wit, if you have saved that above point, and someone comes in searching on an address that corresponds to LONG -122.0857 LAT 35.69999, that corresponds to grid square '-122.0x35.6', which is in your upper right hand corner. Thus, if you search for something like: square = '-122.0x35.6' points = (SELECT * FROM Locations WHERE gridList=:1", square) ...you'll find that the original point we saved above will return. It's all about metadata. Don't think in terms of inequalities and boundary conditions, think in terms of inclusive ranges. Best, On Sep 3, 1:23 pm, Pierre <[EMAIL PROTECTED]> wrote: > Hi, > > I need to find points (lat/lng) within a certain bounding box. To do > so, I triedGeohashpython implementation (http://mappinghacks.com/ > code/geohash.py.txt). > > Problem's data is : > - I have 2 points (South west SW corner / North east NE corner) > describing a geographic Bounding box > - I have a model (let's call it 'Poi') having a field "geohash" of > type Db.StringProperty + Lat and Lng field (Float) > > Question is : How on earth (lol :-) ) can I find all Poi within my > bounding box ? > > I've already tried something like : > > CreateGeohashfor SW, createGeohashfor NE and do something like : > > "SELECT * FROM Poi WHEREgeohash>:1 andgeohash<= :2,geohash(SW),geohash(NE)" > > Also tried with geoindex, at different depth but all this fails and > still give points not located within Bounding box. > Also tried like describe in "http://labs.metacarta.com/blog/27.entry/ > geographic-queries-on-google-app-engine/" to create a small > surrounding box for each Poi and then create ageohashfor this > specific bounding box to be in between my SW->NE bounding box.... > > Nothing is working even with "not worst case" (I mean equatorial > problem...) case/ > > Any help will be greatly appreciated. > > Thanks all, > > Pierre --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---
