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()
Example #2
0
            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)