import matplotlib.pyplot as plt import numpy as np import psycopg2 scale=1/30000 conn = psycopg2.connect("dbname=michelferreira user=michelferreira") cursor_psql = conn.cursor() sql = "create table tempo (tempo_id int primary key, hora int)" cursor_psql.execute(sql) for i in range(24): sql = "insert into tempo values("+str(i)+","+str(i)+")" cursor_psql.execute(sql) sql = "create table estado (estado_id int primary key, estado varchar(6))" cursor_psql.execute(sql) sql = "insert into estado values (0,'FREE'),(1,'BUSY'),(2,'PICKUP'),(3,'PAUSE')" cursor_psql.execute(sql) sql = "create table localizacao (localizacao_id int primary key, praca_de_taxi varchar(30),freguesia varchar(80))" cursor_psql.execute(sql) sql = "select name,des_simpli from taxi_stands,cont_aad_caop2018 where concelho='PORTO' and st_within(proj_location,proj_boundary) union select 'Fora de praça',des_simpli from taxi_stands,cont_aad_caop2018 where concelho='PORTO'" cursor_psql.execute(sql) results = cursor_psql.fetchall() i = 0 for row in results: sql = "insert into localizacao values ("+str(i)+",'"+row[0]+"','"+row[1]+"')" cursor_psql.execute(sql) i = i + 1 sql = "create table dw_trajectos (tempo_id int, estado_id int, localizacao_id int, total_trajectos int, total_metros int, media_segundos int)" cursor_psql.execute(sql) sql = "insert into dw_trajectos select extract('hour' from to_timestamp(ts)),estado_id,localizacao_id,count(*),cast(sum(st_length(proj_track)) as integer),cast(avg(st_numpoints(proj_track)) as integer) from tracks,taxi_stands,localizacao,estado where state=estado.estado and name=localizacao.praca_de_taxi and st_distance(st_startpoint(proj_track),proj_location)<50 group by 1,2,3 union select extract('hour' from to_timestamp(ts)),estado_id,localizacao_id,count(*),cast(sum(st_length(proj_track)) as integer),cast(avg(st_numpoints(proj_track)) as integer) from tracks,cont_aad_caop2018,localizacao,estado where state=estado.estado and concelho='PORTO' and des_simpli=localizacao.freguesia and localizacao.praca_de_taxi='Fora de praça' and not exists (select * from taxi_stands where st_distance(st_startpoint(proj_track),proj_location)<50) and st_within(st_startpoint(proj_track),proj_boundary) group by 1,2,3" cursor_psql.execute(sql) conn.commit() conn.close()