Hacker News new | past | comments | ask | show | jobs | submit login
Free US ZIP Code Database as CSV (coolthingoftheday.blogspot.com)
36 points by iamelgringo on April 29, 2008 | hide | past | favorite | 13 comments



I have a better and more recent one, courtesy of yours truly (don't spread it around):

http://therobert.org/stuff/misc/5-digit%20Commercial.csv

7.7MB | February 2008

I need a database that shows the population in each zip code, too. If any good Samaritan can share, that would be great.


The census will generate that database for you:

Go to http://factfinder.census.gov/servlet/DCGeoSelectServlet?ds_n...

Click "All 5-Digit ZIP Code Tabulation Areas"

Click "GO"

Click "P1. Total Population"

Click "Add"

Click "Next"

Click "Start Download"


> don't spread it around Why not? Is it not public domain, or are you worried about the load on your server, or what?


The latter. You're free to upload it elsewhere and spread it, however.


bzip2 it. It will slash the size to a fraction of its current size.




That seems useful, but it's more aggregated data (by state & region, not zip).


The google maps API also has pretty good geocoding, for free. You can give it a location, and it will tell you not just lat/lng, but also how specific that location is. (Is it a zip code? A city name? An intersection? A precise address?)


Does anyone know a good resource for searching within an X mile radius given a zipcode?


Download the database I posted in my other comment here, and try this SQL statement:

   SELECT z.ZIPcode, (sqrt((z.latitude-z2.latitude)*(z.latitude-z2.latitude)+(z.longtitude-z2.longtitude)*(z.longtitude-z2.longtitude)))) AS dist
   FROM `zip` AS `z`, `zip` AS `z2`
   WHERE `z2`.`ZIPcode = 'YOURZIPCODE'
   ORDER BY dist LIMIT 10
Might be faster if you do a query to get the lat and long for the ZIP code you need first, though. Hell, it would probably be fastest to skip the database all together and just import the data and loop the distance formula, recording the smallest distances as you go.


mySQL 'SELECT zip FROM '.insert table here.' WHERE (POW((69.1(tablelongitude-"'.$obj->longitude.'")cos('.$obj->latitude.'/57.3)),"2")+POW((69.1(tablelatitude-"'.$obj->latitude.'")),"2"))<('.$radius.''.$radius.') '; You need the origin long and lat, and the radius (distance), but the nice thing is the database does all the radius distance calculations internally without passing it to the scripting language, in a fraction of second depending on the server and DB. This is the query I used in http://mybandsupport.com. You can see the result by entering the zipcode in the splash screen and clicking search. The function takes your zip, gets the long and lat, then the DB compares it to every zip's (4500) long and lat to find every zip within 20 miles.

Just a note: comparing every zip code and its distance and recording the distance to a DB would create upwards of 12 million records. This might be the breaking point for some.... I was thinking about doing it myself. Once I worked out the numbers I backed away.

If you know the origin and destination long and lat this works well to calc distance. $dist = sin(deg2rad($this->lat1)) * sin(deg2rad($this->lat2)) + cos(deg2rad($this->lat1)) * cos(deg2rad($this->lat2)) * cos(deg2rad($theta));


First, convert your locations and zip codes to latitude and longitude. Then use something like this: http://jan.ucc.nau.edu/~cvm/latlon_formula.html




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: