diff --git a/5_GEONATURE/pivot_bdc_status_v2.py b/5_GEONATURE/pivot_bdc_status_v2.py index ba7c068..6a5fa97 100644 --- a/5_GEONATURE/pivot_bdc_status_v2.py +++ b/5_GEONATURE/pivot_bdc_status_v2.py @@ -1,4 +1,5 @@ from pycen import con_gn +import requests import numpy as np import pandas as pd import os @@ -32,6 +33,313 @@ def get_status(lst): ;""".format(cd_nom = tuple(lst)) return pd.read_sql_query(sql,con_gn) +def get_api_status(cd_nom:int): + res = requests.api.get('https://geonature.cen-isere.fr/taxhub/api/taxref/%i'%cd_nom) + if res.status_code == 200: + return res.json() + else : + raise('Error : %i\tcd_nom : %i'%(res.status_code,cd_nom)) + +def get_taxon_status(lst): + from datetime import datetime as dt + init = dt.now() + st = [get_api_status(x) for x in lst] # TOO LONG + print(dt.now()-init) + phylo = { + 'cd_ref':[x['cd_ref'] for x in st], + 'nom_valide':[x['nom_valide'] if 'nom_valide' in x.keys() else None for x in st], + 'nom_vernac':[x['nom_vern'] if 'nom_vern' in x.keys() else None for x in st], + 'regne':[x['regne'] if 'regne' in x.keys() else None for x in st], + 'group1_inp':[x['group1_inpn'] if 'group1_inpn' in x.keys() else None for x in st], + 'group2_inp':[x['group2_inp'] if 'group2_inp' in x.keys() else None for x in st], + 'group3_inpn':[x['group3_inpn'] for x in st], + 'classe':[x['classe'] if 'classe' in x.keys() else None for x in st], + 'ordre':[x['ordre'] if 'ordre' in x.keys() else None for x in st], + 'famille':[x['famille'] if 'famille' in x.keys() else None for x in st]} + cd_status = { + 'AL':[ + [val['values'][v]['code_statut'] + for val in x['status']['AL']['text'].values() for v in val['values'] ] + if 'AL' in x['status'].keys() else None + for x in st + ], + 'BERN':[ + [val['values'][v]['code_statut'] + for val in x['status']['BERN']['text'].values() for v in val['values'] ] + if 'BERN' in x['status'].keys() else None + for x in st + ], + 'BONN':[ + [val['values'][v]['code_statut'] + for val in x['status']['BONN']['text'].values() for v in val['values'] ] + if 'BONN' in x['status'].keys() else None + for x in st + ], + 'DH':[ + [val['values'][v]['code_statut'] + for val in x['status']['DH']['text'].values() for v in val['values'] ] + if 'DH' in x['status'].keys() else None + for x in st + ], + 'DO':[ + [val['values'][v]['code_statut'] + for val in x['status']['DO']['text'].values() for v in val['values'] ] + if 'DO' in x['status'].keys() else None + for x in st + ], + 'LRE':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRE']['text'].values() for v in val['values'] ] + if 'LRE' in x['status'].keys() else None + for x in st + ], + 'LRM':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRM']['text'].values() for v in val['values'] ] + if 'LRM' in x['status'].keys() else None + for x in st + ], + 'LRN':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRN']['text'].values() for v in val['values'] ] + if 'LRN' in x['status'].keys() else None + for x in st + ], + 'LRR':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRR']['text'].values() for v in val['values'] ] + if 'LRR' in x['status'].keys() else None + for x in st + ], + 'PAPNAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['PAPNAT']['text'].values() for v in val['values'] ] + if 'PAPNAT' in x['status'].keys() else None + for x in st + ], + 'PD':[ + [val['values'][v]['code_statut'] + for val in x['status']['PD']['text'].values() for v in val['values'] ] + if 'PD' in x['status'].keys() else None + for x in st + ], + 'PD':[ + [val['values'][v]['code_statut'] + for val in x['status']['PD']['text'].values() for v in val['values'] ] + if 'PD' in x['status'].keys() else None + for x in st + ], + 'PNA':[ + [val['values'][v]['code_statut'] + for val in x['status']['PNA']['text'].values() for v in val['values'] ] + if 'PNA' in x['status'].keys() else None + for x in st + ], + 'PR':[ + [val['values'][v]['code_statut'] + for val in x['status']['PR']['text'].values() for v in val['values'] ] + if 'PR' in x['status'].keys() else None + for x in st + ], + 'REGL':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGL']['text'].values() for v in val['values'] ] + if 'REGL' in x['status'].keys() else None + for x in st + ], + 'REGLII':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLII']['text'].values() for v in val['values'] ] + if 'REGLII' in x['status'].keys() else None + for x in st + ], + 'REGLLUTTE':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLLUTTE']['text'].values() for v in val['values'] ] + if 'REGLLUTTE' in x['status'].keys() else None + for x in st + ], + 'REGLSO':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLSO']['text'].values() for v in val['values'] ] + if 'REGLSO' in x['status'].keys() else None + for x in st + ], + 'SCAP NAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['SCAP NAT']['text'].values() for v in val['values'] ] + if 'SCAP NAT' in x['status'].keys() else None + for x in st + ], + 'SCAP REG':[ + [val['values'][v]['code_statut'] + for val in x['status']['SCAP REG']['text'].values() for v in val['values'] ] + if 'SCAP REG' in x['status'].keys() else None + for x in st + ], + 'SENSNAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['SENSNAT']['text'].values() for v in val['values'] ] + if 'SENSNAT' in x['status'].keys() else None + for x in st + ], + 'ZDET':[ + [val['values'][v]['code_statut'] + for val in x['status']['ZDET']['text'].values() for v in val['values'] ] + if 'ZDET' in x['status'].keys() else None + for x in st + ], + 'exPNA':[ + [val['values'][v]['code_statut'] + for val in x['status']['exPNA']['text'].values() for v in val['values'] ] + if 'exPNA' in x['status'].keys() else None + for x in st + ], + + } + cd_status = { + 'AL':[ + [val['values'][v]['code_statut'] + for val in x['status']['AL']['text'].values() for v in val['values'] ] + if 'AL' in x['status'].keys() else None + for x in st + ], + 'BERN':[ + [val['values'][v]['code_statut'] + for val in x['status']['BERN']['text'].values() for v in val['values'] ] + if 'BERN' in x['status'].keys() else None + for x in st + ], + 'BONN':[ + [val['values'][v]['code_statut'] + for val in x['status']['BONN']['text'].values() for v in val['values'] ] + if 'BONN' in x['status'].keys() else None + for x in st + ], + 'DH':[ + [val['values'][v]['code_statut'] + for val in x['status']['DH']['text'].values() for v in val['values'] ] + if 'DH' in x['status'].keys() else None + for x in st + ], + 'DO':[ + [val['values'][v]['code_statut'] + for val in x['status']['DO']['text'].values() for v in val['values'] ] + if 'DO' in x['status'].keys() else None + for x in st + ], + 'LRE':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRE']['text'].values() for v in val['values'] ] + if 'LRE' in x['status'].keys() else None + for x in st + ], + 'LRM':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRM']['text'].values() for v in val['values'] ] + if 'LRM' in x['status'].keys() else None + for x in st + ], + 'LRN':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRN']['text'].values() for v in val['values'] ] + if 'LRN' in x['status'].keys() else None + for x in st + ], + 'LRR':[ + [val['values'][v]['code_statut'] + for val in x['status']['LRR']['text'].values() for v in val['values'] ] + if 'LRR' in x['status'].keys() else None + for x in st + ], + 'PAPNAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['PAPNAT']['text'].values() for v in val['values'] ] + if 'PAPNAT' in x['status'].keys() else None + for x in st + ], + 'PD':[ + [val['values'][v]['code_statut'] + for val in x['status']['PD']['text'].values() for v in val['values'] ] + if 'PD' in x['status'].keys() else None + for x in st + ], + 'PD':[ + [val['values'][v]['code_statut'] + for val in x['status']['PD']['text'].values() for v in val['values'] ] + if 'PD' in x['status'].keys() else None + for x in st + ], + 'PNA':[ + [val['values'][v]['code_statut'] + for val in x['status']['PNA']['text'].values() for v in val['values'] ] + if 'PNA' in x['status'].keys() else None + for x in st + ], + 'PR':[ + [val['values'][v]['code_statut'] + for val in x['status']['PR']['text'].values() for v in val['values'] ] + if 'PR' in x['status'].keys() else None + for x in st + ], + 'REGL':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGL']['text'].values() for v in val['values'] ] + if 'REGL' in x['status'].keys() else None + for x in st + ], + 'REGLII':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLII']['text'].values() for v in val['values'] ] + if 'REGLII' in x['status'].keys() else None + for x in st + ], + 'REGLLUTTE':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLLUTTE']['text'].values() for v in val['values'] ] + if 'REGLLUTTE' in x['status'].keys() else None + for x in st + ], + 'REGLSO':[ + [val['values'][v]['code_statut'] + for val in x['status']['REGLSO']['text'].values() for v in val['values'] ] + if 'REGLSO' in x['status'].keys() else None + for x in st + ], + 'SCAP NAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['SCAP NAT']['text'].values() for v in val['values'] ] + if 'SCAP NAT' in x['status'].keys() else None + for x in st + ], + 'SCAP REG':[ + [val['values'][v]['code_statut'] + for val in x['status']['SCAP REG']['text'].values() for v in val['values'] ] + if 'SCAP REG' in x['status'].keys() else None + for x in st + ], + 'SENSNAT':[ + [val['values'][v]['code_statut'] + for val in x['status']['SENSNAT']['text'].values() for v in val['values'] ] + if 'SENSNAT' in x['status'].keys() else None + for x in st + ], + 'ZDET':[ + [val['values'][v]['code_statut'] + for val in x['status']['ZDET']['text'].values() for v in val['values'] ] + if 'ZDET' in x['status'].keys() else None + for x in st + ], + 'exPNA':[ + [val['values'][v]['code_statut'] + for val in x['status']['exPNA']['text'].values() for v in val['values'] ] + if 'exPNA' in x['status'].keys() else None + for x in st + ], + + } + return pd.DataFrame({**phylo,**cd_status}) + dict_dep = { '38':'Isère', '42':'Loire', @@ -43,13 +351,15 @@ dict_dep = { if __name__ == "__main__": PATH = '/media/colas/SRV/FICHIERS/SITES/SITES GERES/ROLA_ROLANDE-MAUPAS/ROLA_PPI/ROLA_2025-2034_PG/donneesnaturalistes' - file = 'liste sp_ROLA.xlsx' + file = '3_liste sp_ROLA.xlsx' sheet = 'liste sp' # Liste des CD_NOM en entrée cd_col = 'cd_ref' taxlist = pd.read_excel(os.path.join(PATH,file),sheet,usecols=[cd_col],header=0) tab_sp = pd.read_excel(os.path.join(PATH,file),sheet,index_col=cd_col) + lst = taxlist[cd_col] + df = get_status(taxlist[cd_col].astype(str)) for c in ['cd_ref','cd_nom','lb_nom']: