I need to be able to print out the correct zipcodes that meet the thresh hold criteria, i can filter through them and operate on them, but the last step is to print which zipcodes are within 50miles of the center one.
here is my code
import sys
import csv
import math
dicts = {}
origin =[]
#methods to convert to radians
def getLatRad(latitude):
return float(latitude) * (math.pi/180.0)
def getLongRad(longitude):
return float(longitude) * (math.pi/180.0)
#method to find which zipcodes are within thresh
def getnearbylist(center, thresh, ziplist):
try:
f = open("zips.csv")
csvParser = csv.reader(f)
for row in csvParser:
zipcode= row[0].strip()
latitude= row[2].replace('"', '').strip()
longitude=row[3].replace('"', '').strip()
dicts[zipcode] = {'zipcode':zipcode,'latitude': latitude, 'longitude':longitude}
if center in dicts:
origin=dicts[center]
longRad2= getLongRad(origin['longitude'])
latRad2= getLatRad(origin['latitude'])
matched = {match: dicts[match] for match in ziplist if match in dicts}
for x in matched:
longRad1= getLongRad(matched[x]['longitude'])
latRad1= getLatRad(matched[x]['latitude'])
dlon = longRad2 - longRad1
dlat = latRad2 - latRad1
a = math.sin(dlat/2)**2 + math.cos(latRad1) * math.cos(latRad2) * math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
m = 3960 * c
if m <thresh: # cant figure out how to return zipcodes instead of m value
print m
except ValueError:
pass
def main():
center = '12601' # Our center zipcode
thresh = 50 # We are looking for zipcodes within 50 miles
ziplist = ['12481', '10001', '12203', '10303', '12561'] # Our test list
nearbylist = getnearbylist(center, thresh, ziplist) # Call the function
print nearbylist
if __name__ == '__main__':
main()
so instead of printing m, i want to return the zipcodes
thanks!
You need to capture the zips found to be nearby.