Python_scripts/3_AZALEE/tmp/manip_invPS_CDIsère2016.py

147 lines
4.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import geopandas as gpd
from pycen import con
path0 = '/home/colas/Documents/9_PROJETS/2_PS/TO IMPORT/'
file = 'CDisère_PS2016_4Montagnes.shp'
dic = {
'identifian':'ident',
'habitat1' : 'code_hab1',
'partpoly1': 'n_hab1',
'habitat2' : 'code_hab2',
'partpoly2': 'n_hab2',
'habitat3' : 'code_hab3',
'partpoly3': 'n_hab3',
'habitat4' : 'code_hab4',
'partpoly4': 'n_hab4',
'légende':'legende',
'embrou_cod':'niv_embrous',
'embrous':'%_embrous',
'sol nu_cod':'recouvmnt',
'sol nu':'%_recouvmnt',
'orchidées':'rmq_phyto',
'alliance':'rmq_phytosocio',
'maec':'rmq_contract_agri',
}
dic_auth = {
'Anne-Lyse Murro':'MURRO Anne-Lyse',
'Lucas Berardi' : 'BERARDI Lucas'
}
dic_prat = {
'Mixte' : 'Fauche, Pâturage',
'Adandon':'Abandon',
'P�turage':'Pâturage'
}
dic_stat = {
'Aucun' : 'Non communautaire',
'Prioriataire' : 'Prioritaire'
}
dic_date = {
'mai 2016' : '2016-05-01',
'juin 2016' : '2016-06-01',
'juillet 2016' : '2016-07-01',
'aout 2016' : '2016-08-01',
'août 2016' : '2016-08-01',
}
keep_cols = ['auteur','date',*dic.values(),'rosette','pratique','statut','remarques','geom']
def emb_correct(df):
l1 = ['GIR3','AU7']
l2 = ['BOI1','VIL10','VIL8a']
l3 = ['MEA4a','ME']
l4 = ['MO3','MA3','VIL14','BD1','VF','CHA2','CHA5','ROM3']
l5 = ['BEL1','JA5','AU4']
df.loc[df.index.isin(l1),'niv_embrous'] = 1
df.loc[df.index.isin(l2),'%_embrous'] = 4
df.loc[df.index.isin(l3),'%_embrous'] = 29
df.loc[df.index.isin(l4),'%_embrous'] = 30
df.loc[df.index.isin(l5),'%_embrous'] = 60
return df
def sol_correct(df):
# df.loc[df.index=='GEY1','%_recouvmnt'] = 19
df.loc[df.index=='CHA5','%_recouvmnt'] = 21
# df.loc[df.index=='GEY2','%_recouvmnt'] = 19
# df.loc[df.index=='SN1','%_recouvmnt'] = 19
df.loc[df.index=='AU1','%_recouvmnt'] = 21
df.loc[(df.recouvmnt==1)&(df['%_recouvmnt']>0),'%_recouvmnt'] = 0
df.loc[(df.recouvmnt==2)&(df['%_recouvmnt']>10),'%_recouvmnt'] = 10
df.loc[(df.recouvmnt==3)&(df['%_recouvmnt']>20),'%_recouvmnt'] = 20
df.loc[(df.recouvmnt==4)&(df['%_recouvmnt']<21),'%_recouvmnt'] = 21
return df
# récupération des données
sql = 'SELECT site_code,geom FROM ps.v_pelouseseches'
v_ps = gpd.read_postgis(sql, con)
df0 = gpd.read_file(path0 + file)
df0.columns = df0.columns.str.lower()
df0.rename(columns=dic, inplace=True)
df0.rename_geometry('geom', inplace=True)
df = df0[keep_cols].copy()
df.set_index('ident', inplace=True)
df.pratique.replace(dic_prat,inplace=True)
df.statut.replace(dic_stat,inplace=True)
df.auteur.replace(dic_auth,inplace=True,regex=True)
df.date = df.date.str.lower()
df.date.replace(dic_date,inplace=True)
df.date = gpd.pd.to_datetime(df.date)
df = emb_correct(df)
df = sol_correct(df)
# Correction code Corine Biotope
df.loc[df.code_hab2=='41D','code_hab2'] = '41.D'
# Concaténation des remarques
df.loc[~df.rmq_phyto.isna(),'remarques'] = df.loc[~df.rmq_phyto.isna(),'remarques'] +\
'; rmq_phyto : ' + df.loc[~df.rmq_phyto.isna(),'rmq_phyto']
df.loc[~df.rosette.isna(),'remarques'] = df.loc[~df.rosette.isna(),'remarques'] +\
'; rosette : ' + df.loc[~df.rosette.isna(),'rosette']
df.loc[~df.rmq_phytosocio.isna(),'remarques'] = df.loc[~df.rmq_phytosocio.isna(),'remarques'] +\
'; rmq_phytosocio : ' + df.loc[~df.rmq_phytosocio.isna(),'rmq_phytosocio']
df.loc[~df.rmq_contract_agri.isna(),'remarques'] = df.loc[~df.rmq_contract_agri.isna(),'remarques'] +\
'; rmq_contract_agri : ' + df.loc[~df.rmq_contract_agri.isna(),'rmq_contract_agri']
del df['rmq_phyto']
del df['rosette']
del df['rmq_phytosocio']
del df['rmq_contract_agri']
df.reset_index(drop=False,inplace=True)
df.rename(columns={'ident':'id_origine'}, inplace=True)
df['table_org'] = file
df['structure'] = 'CD Isère'
# END SCRIPT #
## tri des géométries avant insertion
# Identification des superpositions new_site/old_site
df_inters = gpd.sjoin(df,v_ps, how='left')
del df_inters['index_right']
lst_old_site = df_inters.site_code.unique()
v_ps = v_ps[v_ps.site_code.isin(lst_old_site)].copy()
# Calcul du recouvrement
df.reset_index(drop=False,inplace=True)
v_ps.loc[:,'surf'] = v_ps.area
tmp = gpd.overlay(v_ps,df[['ident','geom']],how='intersection',make_valid=True)
tmp['perc_rcvmt'] = 100*tmp.area/tmp['surf']
tmp_sitemaj = tmp[(tmp.perc_rcvmt > 10)&(~tmp.ident.duplicated(keep=False))].ident
tmp_sitenew = tmp[tmp.perc_rcvmt <= 10].ident.unique()
site_newvsold = {
'old' : [*tmp.site_code.unique()],
'new' : [*tmp.ident.unique()],
}
df_new = df_inters[df_inters.site_code.isna()]
df_inters.drop(df_new.index,inplace=True)
df_maj = df_inters[~df_inters.site_code.duplicated(keep=False)]
df_inters.drop(df_maj.index,inplace=True)
df_rep = df_inters.copy()
df_new = gpd.pd.concat([df_new,df_rep],axis=0)