def populations(cities=config.allcities.keys()+["Greater London"]): for city in cities: print "Loading population for city:", city # Save the population of the city st = Statistics(name=city+"_population", stat=config.allcities[city][1]) st.save()
def calculate_statistics(cities=config.allcities.keys()+["Greater London"]): for city in cities: print "Calculating statistics for city:", city for crimetype in config.crimetypes: max_x = None min_x = None nb = Neighbourhood.objects.filter(council__convexhull__name=city) for n in nb: count = Crimepoint.objects.filter(neighbourhood=n).filter(crimecat=crimetype).count() if (max_x and min_x) is None: max_x = count min_x = count elif count > max_x: max_x = count elif count < min_x: min_x = count max_x = "{0:.2f}".format(max_x) min_x = "{0:.2f}".format(min_x) _name = city+"_neighbourhood_min_"+crimetype st = Statistics(name=_name, stat=min_x) st.save() _name = city+"_neighbourhood_max_"+crimetype st = Statistics(name=_name, stat=max_x) st.save() max_x = None min_x = None councils = Council.objects.filter(convexhull__name=city) postcodes = Postcode.objects.filter(poly__intersects=councils[0].poly) for p in postcodes: #Get all the crimes in this postcode count = Crimepoint.objects.filter(pt__within=p.poly).filter(crimecat=crimetype).count() if (max_x and min_x) is None: max_x = count min_x = count elif count > max_x: max_x = count elif count < min_x: min_x = count max_x = "{0:.2f}".format(max_x) min_x = "{0:.2f}".format(min_x) _name = city+"_postcode_min_"+crimetype st = Statistics(name=_name, stat=min_x) st.save() _name = city+"_postcode_max_"+crimetype st = Statistics(name=_name, stat=max_x) st.save()