pyspc.data.sacha.data.Sacha
- class pyspc.data.sacha.data.Sacha(filename=None)[source]
Bases :
MdbClasse destinée à traiter les bases SACHA.
- filename
Chemin de la base de données
- Type:
str
- sql
Requête courante au format SQL
- Type:
str
- __init__(filename=None)[source]
Initialisation de l’instance Sacha.
- Paramètres:
filename (str) – Chemin de la base de données
Methods
__init__([filename])Initialisation de l'instance Sacha.
check_datatypes(datatype)Contrôle du type de base SACHA.
check_hydrotypes(hydrotype)Contrôle du référentiel des stations.
check_prcp_src(prcp_src)Contrôle des sources de données de pluie dans Sacha.
check_sql_return([content, warning])Contrôler le retour de la requête SQL.
check_varnames(varname)Contrôle de la grandeur SACHA.
close()Fermer la connexion à la base de données et le curseur <dbase>.
commit()Commiter/accepter les enregistrements ajoutés.
connect()Créer la connexion à la base de données et le curseur pyodbc.
execute([warning])Exécution de la requête SQL.
from_datetime([dtime, fmt, tolerance])Convertir un <string> ou un <datetime> au format accepté par Access.
get_datacoverage([nosta, realtime, varname, ...])Récupérer les informations relatives au contenu en données de la base.
Types de base SACHA.
Référentiels des stations.
get_inventory([dirname])Recenser le contenu de la base SACHA.
get_locations([hydro_version])Recenser les lieux existant dans la base SACHA.
Lister les sources de données de pluie dans Sacha.
Grandeurs dans SACHA.
insert_locations([locations, hydro_version])Insérer les lieux dans la base SACHA.
read([codes, first_dt, last_dt, realtime, ...])Lecture de la base Sacha.
rollback()Annuler les enregistrements ajoutés.
- check_datatypes(datatype)[source]
Contrôle du type de base SACHA.
- Paramètres:
dataype (str) – Type de base SACHA
- Lève:
ValueError – Si le type de base Sacha est incorrect
Voir aussi
- check_hydrotypes(hydrotype)[source]
Contrôle du référentiel des stations.
- Paramètres:
hydrotype (str) – Référentiel des stations
- Lève:
ValueError – Si le référentiel des stations est incorrect
Voir aussi
- check_prcp_src(prcp_src)[source]
Contrôle des sources de données de pluie dans Sacha.
- Paramètres:
prcp_src (str) – Source de données de pluie dans Sacha Valeurs possibles [“gauge”, “radar”]
- Lève:
ValueError – Si la source de données de pluie
Voir aussi
- check_sql_return(content=None, warning=False)
Contrôler le retour de la requête SQL.
- check_varnames(varname)[source]
Contrôle de la grandeur SACHA.
- Paramètres:
varname (str) – Grandeur
- Lève:
ValueError – Si la grandeur est incorrecte
Voir aussi
- close()
Fermer la connexion à la base de données et le curseur <dbase>.
- commit()
Commiter/accepter les enregistrements ajoutés.
- connect()
Créer la connexion à la base de données et le curseur pyodbc.
Avertissement
Cette méthode nécessite l’import de la bibliothèque tierce pyodbc
- execute(warning=True)
Exécution de la requête SQL.
- Paramètres:
warning (bool) – Afficher les avertissements. Par défaut: True
- Renvoie:
list or None – Eléments retenus par la requête SQL
.. warning:: Cette méthode nécessite l’import de la – bibliothèque tierce pyodbc
- static from_datetime(dtime=None, fmt=None, tolerance=0)
Convertir un <string> ou un <datetime> au format accepté par Access.
Convertir les dates du format “str” au format “datetime.datetime”
- Convertir en réel: mode de stockage des dates dans Access
Il faut ajouter 1 jour lors du calcul du flottant car 366j en 1900 (Access) et 365j en 1900 (datetime.datetime)
Il faut enlever/ajouter 60 sec. (tolerance) dans le calcul du flottant pour contrer le pb de précision numérique SQL/ACCESS
- Paramètres:
dtime (datetime ou str) – Date à convertir
fmt (str) – Format de la date, si définie comme un str
tolerance (int) – Tolérance en secondes. Par défaut: 0
- Renvoie:
Valeur réelle correspondant à la date et à la tolérance
- Type renvoyé:
float
- get_datacoverage(nosta=None, realtime=False, varname=None, prcp_src=None)[source]
Récupérer les informations relatives au contenu en données de la base.
- Paramètres:
nosta (int) – Clé unique de la station. Voir Sacha.get_locations
realtime (bool) – Données temps-réel (True) ou historique (False). Défaut: False
varname (str) – Grandeur
prcp_src (str) – Origine des données pluviométriques
- Renvoie:
Couverture des données: valeur minimale, valeur maximale, compteur date minimale, date maximale, taux de valeurs manquantes
- Type renvoyé:
dict
Voir aussi
Exemples
>>> from pyspc.data.sacha import Sacha >>> f = 'data/io/dbase/sacha_montpezat.mdb' >>> reader = Sacha(filename=f) >>> coverage = reader.get_datacoverage(nosta=6, realtime=False, ... varname='PH', prcp_src='gauge') >>> coverage [{'end': datetime.datetime(2008, 11, 5, 0, 0), 'length': 145, 'length_ratio': 1.0, 'missing_length': 0, 'missing_ratio': 0.0, 'start': datetime.datetime(2008, 10, 30, 0, 0), 'value_max': 16.0, 'value_min': 0.0}] >>> coverage = reader.get_datacoverage(nosta=6, realtime=False, ... varname='TH') >>> coverage [{'end': None, 'length': 0, 'length_ratio': nan, 'missing_length': nan, 'missing_ratio': nan, 'start': None, 'value_max': nan, 'value_min': nan}]
- classmethod get_datatypes()[source]
Types de base SACHA.
- Renvoie:
Types de base SACHA
- Type renvoyé:
list
- classmethod get_hydrotypes()[source]
Référentiels des stations.
- Renvoie:
Référentiels des stations
- Type renvoyé:
list
- get_inventory(dirname=None)[source]
Recenser le contenu de la base SACHA.
- Paramètres:
dirname (str) – Répertoire de destination des fichiers csv exportés. Si non défini, la méthode renvoie les informations sous la forme de dictionnaires Si défini, la méthode renvoie la liste des fichiers csv écrits
- Renvoie:
tuple – Si dirname n’est pas défini: (locations, datacoverages)
list – Si dirname est défini : fichiers csv écrits
Voir aussi
Exemples
>>> from pyspc.data.sacha import Sacha >>> f = 'data/io/dbase/sacha_montpezat.mdb' >>> reader = Sacha(filename=f) >>> filenames = reader.get_inventory(dirname='inventory') >>> for x in filenames: ... print(x) inventory/sacha_montpezat_locs_hydro2.csv inventory/sacha_montpezat_locs_hydro3.csv inventory/sacha_montpezat_HH_donnees_treel.csv inventory/sacha_montpezat_PH-gauge_donnees_treel.csv inventory/sacha_montpezat_PH-radar_donnees_treel.csv inventory/sacha_montpezat_QH_donnees_treel.csv inventory/sacha_montpezat_TH_donnees_treel.csv inventory/sacha_montpezat_HH_donnees.csv inventory/sacha_montpezat_PH-gauge_donnees.csv inventory/sacha_montpezat_PH-radar_donnees.csv inventory/sacha_montpezat_QH_donnees.csv inventory/sacha_montpezat_TH_donnees.csv
- get_locations(hydro_version='hydro2')[source]
Recenser les lieux existant dans la base SACHA.
- Paramètres:
hydro_version (str) – Référentiel hydrométrique parmi [“hydro2”, “hydro3”]. Par défaut: “hydro2”
- Renvoie:
locations – Dictionnaire des méta-données des lieux
- Type renvoyé:
dict
Voir aussi
Exemples
>>> from pyspc.data.sacha import Sacha >>> f = 'data/io/dbase/sacha_montpezat.mdb' >>> reader = Sacha(filename=f) >>> locs = reader.get_locations() >>> locs {1: {'altitude': None, 'bv': None, 'code_bareme': None, 'codeh': None, 'codep': 'K0009910', 'codeq': None, 'codet': None, 'comment': None, 'courdo': 'Loire Amont', 'nom': 'Sainte-Eulalie', 'nosta': 1, 'xlmabert': None, 'ylambert': None}, 2: {'altitude': None, 'bv': None, 'code_bareme': 'K0010020', 'codeh': 'K0010020', 'codep': None, 'codeq': 'K0010020', 'codet': None, 'comment': None, 'courdo': 'Loire', 'nom': 'Barrage-de-la-Palisse', 'nosta': 2, 'xlmabert': None, 'ylambert': None}, 3: {'altitude': None, 'bv': None, 'code_bareme': 'K0018720', 'codeh': 'K0018720', 'codep': None, 'codeq': 'K0018720', 'codet': None, 'comment': None, 'courdo': 'Loire', 'nom': 'Barrage-du-Peyron', 'nosta': 3, 'xlmabert': None, 'ylambert': None}, 4: {'altitude': None, 'bv': None, 'code_bareme': None, 'codeh': None, 'codep': 'K0029910', 'codeq': None, 'codet': None, 'comment': None, 'courdo': 'Loire Amont', 'nom': "Lac d'Issarlès", 'nosta': 4, 'xlmabert': None, 'ylambert': None}, 5: {'altitude': None, 'bv': 229.0, 'code_bareme': 'K0030020', 'codeh': 'K0030020', 'codep': 'K0030020', 'codeq': 'K0030020', 'codet': None, 'comment': None, 'courdo': 'Loire', 'nom': 'Pont-de-la-Borie', 'nosta': 5, 'xlmabert': None, 'ylambert': None}, 6: {'altitude': None, 'bv': 432.0, 'code_bareme': None, 'codeh': 'K0100020', 'codep': 'K0100020', 'codeq': 'K0100020', 'codet': None, 'comment': 'Périodes de retour des seuils réglementaires', 'courdo': 'Loire', 'nom': 'Goudet', 'nosta': 6, 'xlmabert': None, 'ylambert': None}, 7: {'altitude': None, 'bv': None, 'code_bareme': None, 'codeh': None, 'codep': '07154005', 'codeq': None, 'codet': '07154005', 'comment': None, 'courdo': 'Haut Bassin Loire', 'nom': "Mazan-L'Abbaye MF", 'nosta': 7, 'xlmabert': None, 'ylambert': None}}
>>> locs = reader.get_locations(hydro_version='hydro3') >>> locs {'1_2_07235005': {'nature': 2, 'nosta': 1, 'ordre': 0, 'tr': 1, 'valeur': '07235005'}, '2_0_K001002010': {'nature': 0, 'nosta': 2, 'ordre': 0, 'tr': 1, 'valeur': 'K001002010'}, '2_1_K001002010': {'nature': 1, 'nosta': 2, 'ordre': 0, 'tr': 1, 'valeur': 'K001002010'}, '3_0_K001872010': {'nature': 0, 'nosta': 3, 'ordre': 0, 'tr': 1, 'valeur': 'K001872010'}, '3_1_K001872010': {'nature': 1, 'nosta': 3, 'ordre': 0, 'tr': 1, 'valeur': 'K001872010'}, '4_2_07119002': {'nature': 2, 'nosta': 4, 'ordre': 0, 'tr': 1, 'valeur': '07119002'}, '5_0_K003002010': {'nature': 0, 'nosta': 5, 'ordre': 0, 'tr': 1, 'valeur': 'K003002010'}, '5_1_K003002010': {'nature': 1, 'nosta': 5, 'ordre': 0, 'tr': 1, 'valeur': 'K003002010'}, '6_0_K010002010': {'nature': 0, 'nosta': 6, 'ordre': 0, 'tr': 1, 'valeur': 'K010002010'}, '6_1_K010002010': {'nature': 1, 'nosta': 6, 'ordre': 0, 'tr': 1, 'valeur': 'K010002010'}, '6_1_K010002011': {'nature': 1, 'nosta': 6, 'ordre': 1, 'tr': 0, 'valeur': 'K010002011'}, '6_2_43101002': {'nature': 2, 'nosta': 6, 'ordre': 0, 'tr': 1, 'valeur': '43101002'}, '7_2_07154005': {'nature': 2, 'nosta': 7, 'ordre': 0, 'tr': 1, 'valeur': '07154005'}}
- classmethod get_prcp_src()[source]
Lister les sources de données de pluie dans Sacha.
- Renvoie:
Sources de données de pluie dans Sacha
- Type renvoyé:
list
- classmethod get_varnames()[source]
Grandeurs dans SACHA.
- Renvoie:
Grandeurs dans SACHA
- Type renvoyé:
list
- insert_locations(locations=None, hydro_version='hydro2')[source]
Insérer les lieux dans la base SACHA.
- Paramètres:
locations (dict) – Méta-données des lieux
hydro_version (str) – Référentiel hydrométrique parmi [“hydro2”, “hydro3”]. Par défaut: “hydro2”
- Renvoie:
rows – Dictionnaire de correspondance entre les clés de <locations> et les clés primaires
- Type renvoyé:
dict
Voir aussi
- read(codes=None, first_dt=None, last_dt=None, realtime=False, varname=None, prcp_src=None, hydro_version='hydro3', strict=True, warning=False)[source]
Lecture de la base Sacha.
- Paramètres:
codes (list) – Liste des identifiants des stations
first_dt (datetime) – Premier pas de temps des données
last_dt (datetime) – Dernier pas de temps des données
realtime (bool) – Données temps-réel (True) ou historique (False). Défaut: False
varname (str) – Grandeur
prcp_src (str) – Origine des données pluviométriques
hydro_version (str) – Référentiel hydrométrique parmi [“hydro2”, “hydro3”]
strict (bool) – Codification stricte selon la norme Hydro3. Par défaut: True
warning (bool) – Afficher les avertissements ? Par défaut: False
- Renvoie:
Tableau des données
- Type renvoyé:
pnd.DataFrame
Voir aussi
Exemples
>>> from pyspc.data.sacha import Sacha >>> f = 'data/io/dbase/sacha_montpezat.mdb' >>> reader = Sacha(filename=f)
Extraction des données historiques, dans le référentiel Hydro2
>>> content = reader.read( ... codes=['K0030020', 'K0100020'], ... varname='QH', ... first_dt=dt(2008, 11, 1, 23), ... last_dt=dt(2008, 11, 2, 2), ... realtime=False, ... hydro_version='hydro2' ... ) >>> content K0030020 K0100020 QH QH 2008-11-01 23:00:00 206.0 222.0 2008-11-02 00:00:00 288.0 195.0 2008-11-02 01:00:00 280.0 677.0 2008-11-02 02:00:00 137.0 771.0
- rollback()
Annuler les enregistrements ajoutés.