def handle(self, *args, **kwargs): now = datetime.now() #error_file = open("gis_errors.txt", "w") #success_file = open("gis_success.txt", "w") output_sql = open(get_logfile_path("boundaries_sql", "sql"), "w") BOUNDARY_TYPES = { 'district': 'admin1', 'block': 'admin2', 'project': 'admin2', 'cluster': 'admin3', 'circle': 'admin3' } empty_boundaries = [] for hierarchy in BoundaryHierarchy.objects.all(): hierarchy_name = hierarchy.name if hierarchy_name not in BOUNDARY_TYPES: continue admin_level = BOUNDARY_TYPES[hierarchy_name] boundaries = Boundary.objects.filter(hierarchy=hierarchy) for boundary in boundaries: qstring = "schooldetails__%s" % admin_level filter_q = {qstring: boundary} schools = School.objects.filter(**filter_q).exclude(instcoord__isnull=True) if not schools.exists(): empty_boundaries.append(boundary.id) continue #import pdb;pdb.set_trace() points = [s.instcoord.coord for s in schools] multipoint_string = ", ".join(["%f %f" % (p.x, p.y,) for p in points]) multipoint_wkt = "MULTIPOINT(%s)" % multipoint_string hierarchy_cap = hierarchy_name.capitalize() if BoundaryCoord.objects.filter(boundary=boundary).exists(): sql = "UPDATE boundary_coord SET coord=ST_SetSRID(ST_Centroid('%s'), 4326) WHERE id_bndry=%d;" % (multipoint_wkt, boundary.id,) else: sql = "INSERT INTO boundary_coord (id_bndry, type, coord) VALUES (%d, '%s', ST_SetSRID(ST_Centroid('%s'), 4326));" % (boundary.id, hierarchy_cap, multipoint_wkt,) print sql output_sql.write(sql + "\n") output_sql.close() errors = open(get_logfile_path("empty_boundaries", "txt"), "w") errors.write(json.dumps(empty_boundaries, indent=2)) errors.close()
def handle(self, *args, **kwargs): output_sql = open(get_logfile_path("gis_sql", "sql"), "w") #output_writer = csv.writer(output_csv) dise_not_found = [] successes = [] for school in School.objects.exclude(instcoord__isnull=False)\ .exclude(dise_info__isnull=True): dise_code = school.dise_info_id try: dise_code_int = int(dise_code) except: continue gis_results = SchoolGIS.objects.filter(code=dise_code_int) if gis_results.count() == 0: print "Dise code not found: " + dise_code dise_not_found.append(dise_code_int) #error_file.write("Dise code not found: " + dise_code + "\n") elif gis_results.count() > 1: print "More than one Dise code found: " + dise_code #error_file.write("More than one Dise code found: " + dise_code + "\n") else: gis = gis_results[0] sql = "INSERT INTO inst_coord (instid, coord) VALUES (%s, ST_GeomFromText('%s', 4326));\n" % ( school.id, gis.centroid.wkt, ) output_sql.write(sql) success = { 'gis_master_name': gis.name, 'klp_name': school.name, 'klp_id': school.id } successes.append(success) output_sql.close() error_file = open(get_logfile_path("gis_errors", "txt"), "w") error_file.write(json.dumps(dise_not_found, indent=2)) error_file.close() success_file = open(get_logfile_path("gis_success", "txt"), "w") success_file.write(json.dumps(successes, indent=2)) success_file.close()
def handle(self, *args, **kwargs): output_sql = open(get_logfile_path("gis_sql", "sql"), "w") #output_writer = csv.writer(output_csv) dise_not_found = [] successes = [] for school in School.objects.exclude(instcoord__isnull=False)\ .exclude(dise_info__isnull=True): dise_code = school.dise_info_id try: dise_code_int = int(dise_code) except: continue gis_results = SchoolGIS.objects.filter(code=dise_code_int) if gis_results.count() == 0: print "Dise code not found: " + dise_code dise_not_found.append(dise_code_int) #error_file.write("Dise code not found: " + dise_code + "\n") elif gis_results.count() > 1: print "More than one Dise code found: " + dise_code #error_file.write("More than one Dise code found: " + dise_code + "\n") else: gis = gis_results[0] sql = "INSERT INTO inst_coord (instid, coord) VALUES (%s, ST_GeomFromText('%s', 4326));\n" % (school.id, gis.centroid.wkt,) output_sql.write(sql) success = { 'gis_master_name': gis.name, 'klp_name': school.name, 'klp_id': school.id } successes.append(success) output_sql.close() error_file = open(get_logfile_path("gis_errors", "txt"), "w") error_file.write(json.dumps(dise_not_found, indent=2)) error_file.close() success_file = open(get_logfile_path("gis_success", "txt"), "w") success_file.write(json.dumps(successes, indent=2)) success_file.close()