Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import psycopg2
- import turtle
- import math
- def parse_point(point):
- aux = point[6:-1].split()
- aux[0] = float(aux[0])
- aux[1] = float(aux[1])
- return aux
- db = psycopg2.connect(user = 'postgres', password = 'postgres' , host = 'localhost', database = 'taxis')
- turtle.speed(0)
- turtle.tracer(100)
- def draw_square(i,j,ratio):
- turtle.penup()
- turtle.goto(i,j)
- turtle.color(ratio , 0, 1 - ratio)
- turtle.begin_fill()
- turtle.pendown()
- turtle.forward(1)
- turtle.right(90)
- turtle.forward(1)
- turtle.right(90)
- turtle.forward(1)
- turtle.right(90)
- turtle.forward(1)
- turtle.right(90)
- turtle.end_fill()
- turtle.penup()
- def heat_map(db):
- query = 'SELECT st_xmin(st_envelope(st_collect(st_transform(geom,3763)))),st_ymin(st_envelope(st_collect(st_transform(geom,3763)))),st_xmax(st_envelope(st_collect(st_transform(geom,3763)))),st_ymax(st_envelope(st_collect(st_transform(geom,3763)))), st_astext(st_envelope(st_collect(st_transform(geom,3763)))) FROM cont_aad_caop2017 WHERE concelho = \'PORTO\';'
- cursor = db.cursor()
- cursor.execute(query)
- results = cursor.fetchall()
- results = results[0]
- xmin = float(results[0])
- ymin = float(results[1])
- xmax = float(results[2])
- ymax = float(results[3])
- poligono = results[4]
- #print(poligono)
- xrects = math.ceil((xmax - xmin) / 600)
- yrects = math.ceil((ymax - ymin) / 600)
- turtle.setworldcoordinates(0,0,int(xrects),int(yrects))
- print(xrects)
- print(yrects)
- turtle.left(90)
- query = 'SELECT count(*) FROM taxi_services;'
- cursor.execute(query)
- results = cursor.fetchall()
- total = int(results[0][0])
- print(total)
- maximo = 0
- resultados_finais = list()
- for i in range(int(yrects)):
- resultados_finais.append(list())
- for j in range(int(xrects)):
- currx = xmin + j * 600
- curry = ymin + i * 600
- currx2 = xmin + (j+1) * 600
- curry2 = ymin + (i+1) * 600
- query = 'SELECT count(*) FROM taxi_services WHERE st_x(st_transform(initial_point,3763)) >= ' + str(currx) + ' AND st_x(st_transform(initial_point,3763)) <= ' + str(currx2) + ' AND st_y(st_transform(initial_point,3763)) >= ' + str(curry) + ' AND st_y(st_transform(initial_point,3763)) <= ' + str(curry2) + ';'
- cursor.execute(query)
- results = cursor.fetchall()
- nservicos = int(results[0][0])
- resultados_finais[i].append(nservicos)
- print(nservicos)
- if nservicos > maximo:
- maximo = nservicos
- for i in range(int(yrects)):
- for j in range(int(xrects)):
- draw_square(j,i,(resultados_finais[i][j] * 1.0) / (maximo * 1.0))
- turtle.exitonclick()
- heat_map(db)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement