#!/usr/bin/env python3 # -*- coding: UTF-8 -*- #Nom : : get_zh_cen.py #Description : #Copyright : 2021, CEN38 #Auteur : Colas Geier #Version : 1.0 from .zh import * from .sites import sites ##################################### ### Bilan ### ##################################### def get_bilan(code_site=None, nom_site=None): ''' :sites: list,str. Nom de code du site de la zh. ''' SITES = sites ZH = zh() info = SITES.get_sitesInfos(ids=code_site, nom=nom_site) CB = ZH.get_habitat(id_site=code_site, nom_site=nom_site) delim = ZH.get_delim(id_site=code_site, nom_site=nom_site) desc = ZH.get_usageprocess(id_site=code_site, nom_site=nom_site) rghyd = ZH.get_regHydro(id_site=code_site, nom_site=nom_site) subm = ZH.get_sub(id_site=code_site, nom_site=nom_site) conn = ZH.get_connex(id_site=code_site, nom_site=nom_site) fct = ZH.get_fct(id_site=code_site, nom_site=nom_site) evall = SITES.get_sitesGeom(id_site=code_site, nom_site=nom_site).drop(columns=['geom']) sub_con = pd.merge(subm, conn, how='outer', on=['id', 'id_site', 'date']) \ .rename(columns={'description': 'desc_connex'}) fctmt = { 'entree_eau': rghyd[rghyd.in_out == 'entree'].drop(columns=['in_out'],errors='ignore'), 'sortie_eau': rghyd[rghyd.in_out == 'sortie'].drop(columns=['in_out'],errors='ignore'), 'sub_connex': sub_con, } lst_df = { 'infos':info, 'corine_biotope': CB, 'delimitation': delim, 'description': desc, 'fonctionnement': fctmt, 'fonction': fct, 'evaluation': evall} for key in lst_df: if isinstance(lst_df[key], pd.DataFrame): lst_df[key].name = key if isinstance(lst_df[key], dict): for d in lst_df[key]: lst_df[key][d].name = d lst_df[key]['title'] = key return lst_df def write_bilan(df, output): ''' :df: dict. Dictionnaire de DataFrame. Ecriture d'un feuillet par élément du dictionnaire. Le nom du DataFrame est le titre du feuillet. output: str. chemin_vers_mon_fichier/mon_fichier.xlsx ''' # Ecriture des données with pd.ExcelWriter(output) as writer: for d in df: DF = df[d] if isinstance(DF, pd.DataFrame): DF.to_excel(writer,sheet_name=DF.name,startrow=1 , startcol=0, index=False, header=DF.columns) ws = writer.book.active writer.sheets[DF.name].cell(1,1,value=DF.name) writer.save() elif isinstance(DF, dict): for i,d in enumerate(DF): if d == 'title': continue if i == 0: row = 1 col = 0 else: col = DF[d].shape[1] + col + 3 DF[d].to_excel(writer,sheet_name=DF['title'],startrow=row , startcol=col, index=False) ws = writer.book.active writer.sheets[DF['title']].cell(column=col+1,row=row,value=d) writer.save()