django-zipdistance/README

57 lines
2.4 KiB
Plaintext

==============================
django-zipdistance
==============================
django-zipdistance is a simple application to find the distance
between any two zip codes. The fixture provided with this application
is derived from the Year 2000 Zip Code Tabulation Area (ZCTA) tables
provided by the US Census Bureau. The Census Bureau notes:
ZCTAs are generalized area representations of U.S. Postal Service
(USPS) ZIP Code service areas. In most instances the ZCTA code
equals the ZIP Code for an area. Some ZIP Codes represent very
few addresses (sometimes only one) and therefore will not appear
in the ZCTA database. ZCTA is a trademark of the U.S. Census
Bureau; ZIP Code is a registered trademark of the U.S. Postal
Service.
In short, the ZCTAs most likely, but are not guaranteed to, correspond
with ZIP Codes for any given address. In testing, this database
proved to be entirely acceptable for most of the United States. But
just to make sure, I repeat: THE SOFTWARE AND DATA FILES ARE PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
-----------------------------
Standard Usage:
Find all the zipcodes within 50 miles:
from zipdistance.models import ZipDistance
target = ZipDistance.objects.get(zipcode = zip_form.cleaned_data['zipcode1'].strip())
zips = ZipDistance.objects.distance_from(target, 50)
Find the distance between two zipcodes:
from zipdistance.models import ZipDistance
zip1 = ZipDistance.objects.get(zipcode = zip_form.cleaned_data['zipcode1'].strip())
zip2 = ZipDistance.objects.get(zipcode = zip_form.cleaned_data['zipcode1'].strip())
zip1.distance_between(zip_2)
Find all the stores within a given distance.
from zipdistance.models import ZipDistance
from yourapp.models import Store
zips = ZipDistance.objects.distance_from(target, 50)
stores = Store.objects.get(zipcode__in = [z.zipcode for z in zips])
That last one's not terribly efficient. If you used the ZipMap as a
way of storing zipcodes, you could probably come up with something
smarter.