Hi Ben,
   Interesting approach, but only works if you know how you want to
break things up ahead of time.  I'd like to be able to pick a point
and say 'give me everything within 1km' or 'give me everything within
100km'.

Cheers,
Pete

On Sep 9, 4:30 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
wrote:
> Dave,
>
> Thank you for this post.  Your description of how to handle date
> ranges led me to a solution on the map lat/long issue that has gotten
> so much discussion in various threads.  I've posted the following in a
> couple of other threads as well, since it seems to be a real issue.
> But the solution is redundant properties, as you indicate.  Basically,
> the idea is finding a way to tokenize a region so that an infinite
> number of points becomes a block...
>
> What I do is that 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 your code is something like...
>
>  square = '-122.0x35.6'    # based on whatever normalizing function
> you use
>  points = (SELECT * FROM Locations WHERE gridList=:1", square)
>
> ...you'll find that the original point we saved above will return.  Of
> course, this is a simple example.  Each grid square can be any size
> and shape, and you can cluster as many as you like in whatever shape
> you like.  For me, a 3x3 grid of 0.1 degree squares is good enough.
> 0.1 degrees is approximately 7 miles in the north/south direction, and
> up to that big in the east-west dimension, at least at the equator.
> It's a blunt tool, but once I've got a reasonable set of map data
> back, then I can do further operations to throw out what I don't need.
>
> It's all about metadata.  Don't think in terms of inequalities and
> boundary conditions, think in terms of inclusive ranges.  With a
> little creativity, you don't need inequalities, at least for this
> problem.
>
> Best,
>
> Ben
>
> On Sep 7, 7:37 am, "David Symonds" <[EMAIL PROTECTED]> wrote:
>
> > On Sun, Sep 7, 2008 at 9:42 PM, Nash <[EMAIL PROTECTED]> wrote:
>
> > > This is the part of the appengine that starts to get frustrating, the
> > > more criteria you will want to add, the more impossible you will find
> > > it to be.
> > > If all you are looking for is to find data for a particular date then
> > > I suggest adding three fields to your entity: year, month, day. If you
> > > want to get results for a particular day, just provide values for
> > > these attributes. By breaking the date unto three parts, you can also
> > > get results by month, by year etc. But if you have want to pull data
> > > between two points and between two dates, then good luck!
>
> > In that case, you would use multiple properties: one for the whole
> > date, and then split it out Y/M/D. Remember: BigTable is designed for
> > lots of redundant data that makes it really easy and fast to index and
> > find what you want. Don't be afraid to drop in redundant properties.
>
> > Dave.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to