[Zope] searching by miles from __ zip code

Dylan Reinhardt zope@dylanreinhardt.com
12 Jun 2003 09:25:37 -0700


On Wed, 2003-06-11 at 20:06, Sean Kelley wrote:
> Has anyone done something in python/zope to allow for searching by 
> number of miles from a zip code?  

I did something like this several years ago, but not in Python.  It
isn't difficult if you're OK being accurate to within a mile or two.

First thing, you get a data set that gives the map coordinates for each
post office.  USGS maintains a massive set of data about landmarks that
includes this data, though it's probably available elsewhere as well.  

Once you have this data, you close your eyes and assume that since
there's a 1:1 relationship between zip codes and post offices, you now
have a map point that's somewhat central for each zip.  Then you swear
to yourself never to subject this hypothesis to actual testing.  :-)

You could just calculate the hypotenuse of a right triangle to get the
distance between two map points, but first you have to deal with a
problem: there are a fixed number of feet per degree of longitude, but
the number of feet per degree of latitude varies considerably,
particularly once Alaska and Hawaii are factored in.  

You could pick an average land distance for each degree of latitude or 
calculate the latitude distance based on the average of the longitudes
being compared. I wouldn't be surprised if you could find a table that
gives these figures.

I suppose you could even include calculations for the curvature of the
Earth, but given that you're only going to be accurate to a couple miles
anyway, it's not going to make much difference at most intervals.

HTH,

Dylan