openlamb/stazioni.py

44 lines
1.5 KiB
Python
Executable File

#!/usr/bin/python3
import os.path
import tabulate
import pandas as pd
from sodapy import Socrata
def _connect():
client = Socrata("www.dati.lombardia.it", None)
return client
def get_stazioni(offline=False):
if offline:
stazioni = pd.read_csv("stazioni.csv")
stazioni_df = pd.DataFrame.from_records(stazioni)
stazioni_df.drop(columns=["Storico", "Idstazione", "Utm_Nord", "UTM_Est", "lat", "lng", "location",
"Limiti amministrativi 2014 delle province di Regione Lombardia",
"Limiti amministrativi 2015 delle province di Regione Lombardia"], inplace=True)
stazioni_df.columns = [x.lower() for x in stazioni_df.columns]
else:
client = _connect()
stazioni = client.get("ib47-atvt")
stazioni_df = pd.DataFrame.from_records(stazioni)
stazioni_df.drop(columns=[":@computed_region_6hky_swhk", ":@computed_region_ttgh_9sm5", "utm_est",
"utm_nord", "storico", "idstazione", "lat", "lng", "location"], inplace=True)
stazioni_df["datastart"] = pd.to_datetime(stazioni_df["datastart"])
stazioni_df["datastop"] = pd.to_datetime(stazioni_df["datastop"])
return stazioni_df
def print_stazioni():
pd.set_option('display.max_rows', None)
if os.path.exists("stazioni.csv"):
stazioni = get_stazioni(offline=True)
else:
stazioni = get_stazioni()
print(tabulate.tabulate(stazioni, headers='keys', tablefmt='simple'))
if __name__ == '__main__':
print_stazioni()