for constituency in constituencies.keys(): if constituencies[constituency].contains(point): postcode_constituencies[postcode] = constituency last_constituencies.append(constituency) break # Sometimes we don't get a result, usually because of postcodes on # Scottish islands which fall outside the constituency boundaries # we're using. Collect those postcodes into a list of unknowns, # for further processing (eg. a lookup on http://parliament.uk or a # best guess by distance). if postcode not in postcode_constituencies: unknowns.append((postcode, point)) if verbose and 0 == (n % 1000): print("%d postcodes processed" % n) return (postcode_constituencies, unknowns) if __name__ == "__main__": constituencies = get_constituency_list(open("constituencies.kml")) (postcode_constituencies, unknowns) = map_postcodes_to_constituencies("all_postcodes.csv", constituencies) postcode_constituencies.update(guess_unknown_postcodes(unknowns, constituencies)) for postcode in postcode_constituencies: this_constituency = waw_app.models.Constituency.objects.filter(name__exact=postcode_constituencies[postcode])[0] new_postcode = waw_app.models.Postcode.objects.create(postcode=postcode, constituency=this_constituency) new_postcode.save()
if postcode not in postcode_constituencies: for possible_constituency in constituencies.keys(): if constituencies[possible_constituency].contains(point): constituency = possible_constituency break # Sometimes we don't get a result, usually because of postcodes on # Scottish islands which fall outside the constituency boundaries # we're using. Make a best guess. if constituency is None: constituency = guess_constituency(postcode, point, constituencies) if constituency not in ids: ids[constituency] = waw_app.models.Constituency.objects.filter( name__exact=constituency)[0] new_postcode = waw_app.models.Postcode.objects.create( postcode=postcode, constituency=ids[constituency]) new_postcode.save() last_constituencies.append(constituency) if __name__ == "__main__": constituencies = get_constituency_list() for file_name in os.listdir("./raw_data/postcode_files/"): print file_name base = time.time() map_postcodes_to_constituencies("".join(["./raw_data/postcode_files/", file_name]), constituencies, {}) print (time.time() - base)