81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
#!/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()
|