From 05cb232becbadd153c5be06a5052a0dade5db36a Mon Sep 17 00:00:00 2001 From: Colas Geier Date: Thu, 14 Mar 2024 14:10:02 +0100 Subject: [PATCH] intersection v_zh --- 3_AZALEE/create_tab_zh_ponctuel.py | 55 +++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/3_AZALEE/create_tab_zh_ponctuel.py b/3_AZALEE/create_tab_zh_ponctuel.py index 9c486ec..c5ab523 100644 --- a/3_AZALEE/create_tab_zh_ponctuel.py +++ b/3_AZALEE/create_tab_zh_ponctuel.py @@ -2,10 +2,11 @@ # -*- coding: UTF-8 -*-. import geopandas as gpd -from pycen import con +from pycen import con,zh from os import path,listdir from re import findall +v_zh = zh().v_zoneshumides() PATH = '/media/colas/SRV/FICHIERS/OUTILS/CARTOGRAPHIE/ESPACE DE TRAVAIL/ETUDES/Zones humides' lst_layer = [x for x in listdir(PATH) if (x.endswith('.shp') or x.endswith('.gpkg')) and x.startswith('ZHP')] @@ -61,6 +62,7 @@ if __name__ == "__main__": gdf.sort_values(['datemodif'],inplace=True,ignore_index=True,ascending=False) gdf.drop(columns=['X','Y'],inplace=True,errors='ignore') gdf.rename_geometry('geom',inplace=True) + # Suppression des doublons de géometries - temps de calcul long gdf.drop_duplicates(subset='geom',inplace=True,ignore_index=True,keep='first') tmp = (gdf.descripti2 @@ -200,6 +202,9 @@ if __name__ == "__main__": statut_isna = gdf['statut'].isna() gdf.loc[is_interpret&statut_isna,'statut'] = 'A visiter' + is_zh2 = gdf['statut'].isna()&gdf['comment'].str.startswith('Zh',na=False) + gdf.loc[is_zh2,'statut'] = 'A décrire' + dict_type = { **dict.fromkeys(['Barrage','Bassin','Lagunage'],'Artificiel'), **dict.fromkeys(['Mégaphorbiaie','Prairie','Prairie humide','Roselière'],'Prairie humide et roselière'), @@ -210,18 +215,58 @@ if __name__ == "__main__": gdf['classe'] = (gdf['type'] .replace(dict_type)) + # Harmonisation des observateurs + dict_obs = { + 'NB':'CEN Isère (N. Biron)', + 'Nico':'CEN Isère (N. Biron)', + 'Alix':'CEN Isère (A. Guedou)', + 'N BIRON':'CEN Isère (N. Biron)', + 'N. Biron (CEN Isère)':'CEN Isère (N. Biron)', + 'Nicolas Biron':'CEN Isère (N. Biron)', + 'M. Juton (CEN Isère)':'CEN Isère (M. Juton)', + 'CEN Isère (J.-L. Grossi)':'CEN Isère (J. L. Grossi)', + 'Lpo Isère (F. Frossard)':'LPO Isère (F. Frossard)', + 'Lpo Isère (H. Coffre)':'LPO Isère (H. Coffre)', + 'Lpo Isère (D. Loose)':'LPO Isère (D. Loose)', + 'J. F. Noblet':'Le Pic Vert (J. F. Noblet)', + 'R. Fonters':'LPO Isère (R. Fonters)', + 'R. Marciau':'CEN Isère (R. Marciau)', + } + gdf.replace(dict_obs,inplace=True) + + # Suppression des ZH taguer Absence + not_zh = gdf['statut']=='Absence ZH' + idx_notzh = gdf[not_zh].index + gdf.drop(idx_notzh,inplace=True) + + # Intersection des zh_ponctuelles et zh_surfacique - temps de calcul long + v_zh_union = v_zh.unary_union + is_intersect = gdf.intersects(v_zh_union) + + lst_drop = ['Tourbière','Culture','Boisement','Prairie humide','Roselière','Grève','Barrage','Lac'] + drop_prospect_pontc = ~gdf['type'].isin(lst_drop) + gdf_zh = gdf[is_intersect&drop_prospect_pontc].copy() + gdf_ponct= gdf[~is_intersect].copy() + # 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' + gdf_ponct.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.{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) - - 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') + bdd_table = 'zh_ponctuelles_in_zh' + gdf_zh.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.{tab} ADD PRIMARY KEY (gid);