from pycen import con_fon, update_to_sql import geopandas as gpd from os import path def milieu(x): d_milieu = gpd.pd.read_sql('SELECT * FROM sites.d_milieux',con_fon) dict_m = dict(zip(d_milieu.milieu_lib,d_milieu.milieu_id)) x.replace({'milieu':dict_m},inplace=True) x.rename(columns={'milieu':'milieu_id'},inplace=True) def typ_site(x): d_site = gpd.pd.read_sql('SELECT * FROM sites.d_typsite',con_fon) dict_s = dict(zip(d_site.typsite_lib,d_site.typsite_id)) x.replace({'typ_site':dict_s},inplace=True) x.rename(columns={'typ_site':'typsite_id'},inplace=True) if __name__ == "__main__": PATH = '/home/colas/Documents/tmp/Foncier/LONE' file = 'LONE.xlsx' geofile = 'Contour_site_lĂ´nes.shp' df = (gpd.pd.read_excel(path.join(PATH,file)) .rename(columns={'id_site':'site_id'})) milieu(df) typ_site(df) _gdf = gpd.read_file(path.join(PATH,geofile)) gdf = gpd.GeoDataFrame(df,geometry=[_gdf.unary_union],crs=_gdf.crs) gdf.rename_geometry('geom',inplace=True) gdf['surf_m2'] = gdf.area gdf.to_postgis('sites',con_fon,'sites',if_exists='append',index=False) gdf.rename_geometry('geom_ecolo',inplace=True) update_to_sql(gdf,con_fon,'sites','sites','site_id')