main.py 2.72 KB
Newer Older
Romain Creuzenet's avatar
Romain Creuzenet committed
1
2
3
"""File to execute to show results"""
import numpy as np
import matplotlib.pyplot as plt
Romain Creuzenet's avatar
Romain Creuzenet committed
4
from datetime import datetime, timedelta
Romain Creuzenet's avatar
Romain Creuzenet committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
Romain Creuzenet's avatar
Romain Creuzenet committed
43
        stations = []
Romain Creuzenet's avatar
Romain Creuzenet committed
44
        print("Choisissez une station parmis celles-ci:")
Romain Creuzenet's avatar
Romain Creuzenet committed
45
46
47
48
49
50
51
        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()

Romain Creuzenet's avatar
Romain Creuzenet committed
52
53
54
55
56
57
58
59
60
61
62
63
64
65
        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 = []
{}'s avatar
{} committed
66

Romain Creuzenet's avatar
Romain Creuzenet committed
67
68
        query = "SELECT * FROM {} WHERE station={}".format(self.table, station.__repr__())
        for row in execute_query(query):
Romain Creuzenet's avatar
Romain Creuzenet committed
69
70
71
            value = getattr(row, attr)
            if value is None:
                continue
Romain Creuzenet's avatar
Romain Creuzenet committed
72
            x.append(datetime(*list(row.time)))
Romain Creuzenet's avatar
Romain Creuzenet committed
73
74
75
            y.append(value)

        date, last_date = x[0], x[-1]  # first date and last date, initialisation
Romain Creuzenet's avatar
Romain Creuzenet committed
76
77
78
        x = np.array(x)
        y = np.array(y)
        plt.plot(x, y, label=attr)
{}'s avatar
{} committed
79
        plt.title("Donnees de " + str(value) + " pour la station : " + station )
Romain Creuzenet's avatar
Romain Creuzenet committed
80
81
        plt.legend()
        plt.show()
{}'s avatar
{} committed
82
        plt.savefig('plot.png')
Romain Creuzenet's avatar
Romain Creuzenet committed
83
84
85
86
87
88
89
90
91
92

    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()