diff --git a/3_AZALEE/create_tab_zh_ponctuel.py b/3_AZALEE/create_tab_zh_ponctuel.py index 5a22428..9c486ec 100644 --- a/3_AZALEE/create_tab_zh_ponctuel.py +++ b/3_AZALEE/create_tab_zh_ponctuel.py @@ -81,6 +81,7 @@ if __name__ == "__main__": .str.replace('AbsenceZH','Absence ZH') .str.replace('Zone humide non cartographiée et','non cartographier | ZH') .str.replace('continuité zh de la gère, à visiter','continuité zh de la gère | à visiter') + .str.replace('à visiter','A visiter') .replace([x for x in gdf.statut.unique() if x is not None],'',regex=True) .replace([x for x in gdf.source.unique() if x is not None],'',regex=True) .str.strip() @@ -112,16 +113,37 @@ if __name__ == "__main__": gdf['source'] = (gdf['source'] .apply(lambda x: upper_first_letter(x)) .str.replace('Interprétation','Photointerprétation')) - gdf['type'] = (gdf.comment + + is_inventaire = (gdf.observateu + .str.contains('Le Pic Vert|LPO Isère|Lo Parvi|Nature Vivante|ONF',case=False,na=False)) + + isna_source = gdf['source'].isna() + is_cenisere = gdf.observateu.str.contains('cen isère',case=False,na=False) + gdf.loc[is_inventaire&isna_source,'source'] = 'Inventaire' + + + gdf.loc[~is_inventaire&isna_source&~is_cenisere].observateu + + gdf['type'] = (gdf.comment + .str.replace('prairie','Prairie') .str.replace('Prairie humide','Prairiehumide') .str.split('\\|| ',n=1) .str[0] .str.replace('Prairiehumide','Prairie humide') .str.strip() - .replace('Roselières','Roselière') + .replace({ + 'Roselières':'Roselière', + 'Ornières':'Ornière', + 'Fontaine':'Source', + 'Lac':'Mare/lac alpin', + 'Culture':'Culture temporairement inondée', + 'Grève':'Alluvion', + 'ZH':'Tourbière', + }) .apply(lambda x: upper_first_letter(x)) ) gdf['comment'] = (gdf.comment + .str.replace('prairie','Prairie') .replace([x for x in gdf.type.unique() if x is not None or x.contains('INVZH')],'',regex=True) .str.replace('Prairie humide','Prairiehumide') .str.split('\\|| ',n=1) @@ -141,25 +163,117 @@ if __name__ == "__main__": gdf.loc[invzh,'type'] = None gdf.comment = (gdf.comment + .str.strip() + .str.removeprefix('\|') + .str.strip() + .str.removeprefix('?') + .str.strip() + .str.removeprefix('-') + .str.removesuffix('-') .str.strip() .replace('',None) .apply(lambda x: upper_first_letter(x))) - - gdf.to_postgis('zh_ponctuelles',con,'zones_humides',if_exists='replace',index=True,index_label='gid') + is_interpret = gdf['source'].str.contains('interprétation',case=False,na=False) + gdf.loc[is_interpret,'ponctuelle'] = 'Incertain' + gdf.loc[~is_interpret,'ponctuelle'] = 'Oui' + + is_jlg = gdf.observateu=='CEN Isère (J.-L. Grossi)' + type_isna = gdf['type'].isna() + gdf.loc[is_jlg&type_isna,'type'] = 'Mare' + gdf.drop(gdf[gdf.observateu.isna()].index,inplace=True) + + is_balm = gdf.observateu=='CEN Isère (C. Balmain)' + is_lafo = gdf.observateu=='CEN Isère (A.Lafon)' + is_nico = gdf.observateu=='CEN Isère (N. Biron)' + is_obs_inc = gdf.observateu=='Inconnu' + is_zh = gdf['type']=='Petite zh' + is_inconnu = gdf['type']=='Inconnu' + gdf.loc[is_balm&~is_zh&is_inconnu,'type'] = 'Étang' + gdf.loc[is_balm&is_zh&is_inconnu,'type'] = 'Suintement' + gdf.loc[is_lafo&is_inconnu,'type'] = 'Boisement' + gdf.loc[is_obs_inc&is_inconnu,'type'] = 'Étang' + gdf.loc[is_nico&is_inconnu,'type'] = 'Prairie humide' + + + is_visite = gdf['statut'].isin(['Possible ?','Groupement fontinal possible ?','Groupement fontinal, possible ?','Roselière et possible mare','Non cartographier']) + gdf.loc[is_visite,'statut'] = 'A visiter' + statut_isna = gdf['statut'].isna() + gdf.loc[is_interpret&statut_isna,'statut'] = 'A visiter' + + dict_type = { + **dict.fromkeys(['Barrage','Bassin','Lagunage'],'Artificiel'), + **dict.fromkeys(['Mégaphorbiaie','Prairie','Prairie humide','Roselière'],'Prairie humide et roselière'), + **dict.fromkeys(['Source', 'Suintement', 'Talus'],'Source et Suintement'), + **dict.fromkeys(['Ornière', 'Mare'],'Mare'), + **dict.fromkeys(['Boisement', 'Peupleraie'],'Boisement'), + } + gdf['classe'] = (gdf['type'] + .replace(dict_type)) + + + # A faire : + # - Vérifier la suppression des zhAbsentes + # - Intersecter avec la couche zh surfacique, + # dissocier les donner d'intersection et conserver + # dans une autre couche les zones ponctuelles correspondant à des Mares/Etangs/bassin/Lac + + + + + bdd_table = 'zh_ponctuelles_encours' + gdf.to_postgis(bdd_table,con,'zones_humides',if_exists='replace',index=True if 'gid' not in gdf.columns else False,index_label='gid') sql = """ - ALTER TABLE zones_humides.zh_ponctuelles ADD PRIMARY KEY (gid); - GRANT ALL ON TABLE zones_humides.zh_ponctuelles TO grp_admin; - GRANT SELECT ON TABLE zones_humides.zh_ponctuelles TO grp_consult; + ALTER TABLE zones_humides.{tab} ADD PRIMARY KEY (gid); + GRANT ALL ON TABLE zones_humides.{tab} TO grp_admin; + GRANT SELECT ON TABLE zones_humides.{tab} TO grp_consult; + """.format(tab=bdd_table) + with con.begin() as cnx: + cnx.execute(sql) + + + ########### POTENTIELLE SURFACIQUE ############# + sql = """ + SELECT * FROM zones_humides.zh_ponctuelles; + """ + gdf = gpd.read_postgis( + sql = sql, + con = con) + is_interpret = gdf['source'].str.contains('interprétation',case=False,na=False) + del_notzh = ~(gdf['statut'] == 'Absence ZH') + avere = gdf[~is_interpret&del_notzh].copy() + is_visite = avere['statut'].isin(['Possible ?','Groupement fontinal, possible ?','Roselière et possible mare','Non cartographier']) + avere.loc[is_visite,'statut'] = 'A visiter' + dict_type = { + **dict.fromkeys(['Barrage','Bassin','Lagunage'],'Artificiel'), + **dict.fromkeys(['Mégaphorbiaie','Prairie','Prairie humide','Roselière'],'Prairie humide et roselière'), + **dict.fromkeys(['Source', 'Suintement', 'Talus'],'Source et Suintement'), + **dict.fromkeys(['Ornière', 'Mare'],'Mare'), + **dict.fromkeys(['Boisement', 'Peupleraie'],'Boisement'), + } + avere['classe'] = (gdf['type'] + .replace(dict_type)) + + ########### POTENTIELLE ############# + ptent = gdf[is_interpret&del_notzh].copy() + + # avere['a_visiter'] = None + avere.to_postgis('zh_ponctuelles_averee',con,'zones_humides',if_exists='replace',index_label='gid') + + sql = """ + ALTER TABLE zones_humides.zh_ponctuelles_averee ADD PRIMARY KEY (gid); + GRANT ALL ON TABLE zones_humides.zh_ponctuelles_averee TO grp_admin; + GRANT SELECT ON TABLE zones_humides.zh_ponctuelles_averee TO grp_consult; """ with con.begin() as cnx: cnx.execute(sql) + test = """ SELECT * FROM zones_humides.zh_ponctuelles; """ - data = gpd.pd.read_sql_query( + data = gpd.read_postgis( sql = test, con = con)