"""File to execute to show results""" import numpy as np import matplotlib.pyplot as plt from datetime import datetime, timedelta from parameters import SESSION def execute_query(query): for row in SESSION.execute(query): yield row def ask_q(possibilities, text=">>> "): answer = None while answer not in possibilities: answer = input(text) return answer class Manager: table = None # table name use by the function def run(self): """Chose""" print("Choisissez ce que vous voulez faire") print("\t1 - Pour un point donné de l’espace, je veux pouvoir avoir un historique du passé") print("\t2 - À un instant donné je veux pouvoir obtenir une carte me représentant n’importe quel indicateur") print("\t3 - Pour une période de temps donnée, je veux pouvoir obtenir clusteriser l’espace, et représenter " "cette clusterisation") decision = { "1": "historic", "2": "map", "3": "cluster" } answer = ask_q(decision.keys()) getattr(self, decision[answer])() def historic(self): self.table = "TABLE_SPACE" # Search station stations = [] print("Choisissez une station parmis celles-ci:") query = "SELECT DISTINCT station FROM {}".format(self.table) for i, row in enumerate(execute_query(query), 1): end = "\n" if i % 3 == 0 else "" print("\t", row.station, end=end) stations.append(row.station) print() station = ask_q(stations) # Search element decision = { "tmpf": "La témparature", "relh": "L'humidité" } print("Choisissez un élément parmis les suivant :") for code, text in decision.items(): print("\t-", text, ":", code) attr = ask_q(decision.keys()) x = [] y = [] saisons = { 'spring': { 'n': 0, 'somme': 0, 'month': [3, 4, 5], # March - May 'end': lambda dt: datetime(dt.year, 6, 1) - timedelta(days=1), 'legend': False, 'color': 'r' }, 'summer': { 'n': 0, 'somme': 0, 'month': [6, 7, 8], # June - August 'end': lambda dt: datetime(dt.year, 9, 1) - timedelta(days=1), 'legend': False, 'color': 'y' }, 'automne': { 'n': 0, 'somme': 0, 'month': [9, 10, 11], # September - November 'end': lambda dt: datetime(dt.year, 12, 1) - timedelta(days=1), 'legend': False, 'color': 'm' }, 'winter': { 'n': 0, 'somme': 0, 'month': [12, 1, 2], # December - Febrarie 'end': lambda dt: datetime(dt.year + 1, 3, 1) - timedelta(days=1), 'legend': False, 'color': 'k' } } query = "SELECT * FROM {} WHERE station={}".format(self.table, station.__repr__()) for row in execute_query(query): value = getattr(row, attr) if value is None: continue x.append(datetime(*list(row.time))) y.append(value) # For saison for saison, d in saisons.items(): if row.time[1] in d['month']: d['n'] += 1 d['somme'] += value break date, last_date = x[0], x[-1] # first date and last date, initialisation x = np.array(x) y = np.array(y) plt.plot(x, y, label=attr) # Mark saison while date < last_date: for saison, d in saisons.items(): if date.month in d['month']: next_date = min(last_date, d['end'](date)) moyenne = d['somme'] / d['n'] if d['legend']: plt.plot([date, next_date], [moyenne, moyenne], d['color'], linewidth=4) else: plt.plot([date, next_date], [moyenne, moyenne], d['color'], label=saison, linewidth=4) d['legend'] = True date = next_date + timedelta(days=1) break plt.title(station) plt.legend() plt.show() def map(self): print("Cette fonction n'est pas implémentée") def cluster(self): print("Cette fonction n'est pas implémentée") if __name__ == "__main__": Manager().run()