from pycen import ps,con_bdcen import geopandas as gpd # Liste des habitats souhaités list_habs = ['35.21','35.23','34.12','64.11','64.12'] habs = '|'.join(list_habs) # v_pelouseseches dfps = ps.v_pelouseseches() cb_col = dfps.columns[dfps.columns.str.startswith('cb_hab')] cdate = dfps.columns[dfps.columns.str.contains('date')] for c in cdate: dfps[c] = gpd.pd.to_datetime(dfps[c]) dfps['date'] = dfps[cdate].max(axis=1) dfps['auteur'] = None for c in cdate: typ = c.removeprefix('date') dfps.loc[dfps[c].eq(dfps.date),'auteur'] = dfps[dfps[c].eq(dfps.date)]['auteur'+typ] dfps.drop( columns=[*cdate,*'auteur' + cdate.str.removeprefix('date')], inplace=True ) df = gpd.GeoDataFrame() for c in cb_col: res = dfps[dfps[c].str.contains(habs,na=False)].copy() df = gpd.pd.concat([df,res]) df.drop_duplicates(inplace=True) print('Extract %s unités parcellaires ...'%df.shape[0]) # PB_codehab_nonPresent_dans_corineBiotope sql = 'SELECT * FROM pelouse_seche."PB_codehab_nonPresent_dans_corineBiotope"' dfpb = gpd.read_postgis(sql,con_bdcen) dfps['date'] = gpd.pd.to_datetime(dfps['date']) dfpb.rename(columns={ 'id_site' : 'site_code', 'pratiques':'pratique', 'niv_embrous':'embrouss', 'recouvmnt':'recouvrement', 'remarques':'rmq_site', 'code_hab1':'cb_hab1', 'code_hab2':'cb_hab2', 'code_hab3':'cb_hab3', 'code_hab4':'cb_hab4', 'code_hab5':'cb_hab5', }, inplace=True) samecol = dfpb.columns[dfpb.columns.isin(dfps.columns)] diffcol = dfpb.columns[~dfpb.columns.isin(dfps.columns)] dfpb = dfpb[samecol] cb_colpb = dfpb.columns[dfpb.columns.str.startswith('cb_hab')] list_habspb = ['PS sur sable','Friche sableuse'] habspb = '|'.join(list_habspb) for c in cb_colpb: res = dfpb[dfpb[c].str.contains(habspb,na=False)].copy() df = gpd.pd.concat([df,res]) df.drop_duplicates(inplace=True) df['date'] = gpd.pd.to_datetime(df['date']).astype(str) # df['date'] = gpd.pd.to_datetime(df['date'], unit='D') print('Extract %s unités parcellaires ...'%df.shape[0]) df.to_file('/home/colas/Documents/9_PROJETS/2_PS/EXPORT/PNA_pelouse_sableuse.gpkg',driver='GPKG')