Python_scripts/multi_auteurTOrelation_table.py

74 lines
1.9 KiB
Python

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
#Nom : multi_auteurTOrelation_table.py
#Description :
#Copyright : 2021, CEN38
#Auteur : Colas Geier
#Version : 1.0
import pycen
import pandas as pd
import geopandas as gpd
from sqlalchemy import create_engine
from geoalchemy2 import Geometry
# Parametres bdd OUT
user = 'colas_g'
pwd = 'adm1n*38*'
adr = '192.168.60.10'
base = 'bd_cen'
con = create_engine('postgresql+psycopg2://{0}:{1}@{2}/{3}'.format(user,pwd,adr,base), echo=False)
aut = pycen.sites().auteur
aut.loc[aut.prenom.isna(),'auteur'] = aut.nom
aut.loc[~aut.prenom.isna(),'auteur'] = aut.nom + ' ' + aut.prenom
df = pycen.sites().get_sitesInfos()
df_aut = df[['id', 'auteur']]
df_aut.set_index('id', inplace=True)
df_aut = df_aut.auteur.str.split(' \& ',expand=True)
df_rSitAut = pd.DataFrame(columns=['auteur'])
for col in df_aut.columns:
tmp = pd.DataFrame(data=df_aut.loc[~df_aut[col].isna(),col], copy=True)
tmp.columns = ['auteur']
df_rSitAut = pd.concat([df_rSitAut, tmp])
df_rSitAut.auteur.replace(aut.auteur.tolist(),aut.id.tolist(), inplace=True)
df_rSitAut.columns = ['id_auteur']
df_rSitAut.index.name = 'id_site'
df_rSitAut.reset_index(inplace=True)
df_rSitAut.to_sql(
name='r_sites_auteur',
con = con,
schema='sites',
index=False,
if_exists='append',
)
df = pycen.sites().get_sitesGeom()
df_aut = df[['id', 'auteur']]
df_aut.set_index('id', inplace=True)
df_aut = df_aut.auteur.str.split(' \& ',expand=True)
df_rSitAut = pd.DataFrame(columns=['auteur'])
for col in df_aut.columns:
tmp = pd.DataFrame(data=df_aut.loc[~df_aut[col].isna(),col], copy=True)
tmp.columns = ['auteur']
df_rSitAut = pd.concat([df_rSitAut, tmp])
df_rSitAut.auteur.replace(aut.auteur.tolist(),aut.id.tolist(), inplace=True)
df_rSitAut.columns = ['id_auteur']
df_rSitAut.index.name = 'id_geom_site'
df_rSitAut.reset_index(inplace=True)
df_rSitAut.to_sql(
name='r_geomsites_auteur',
con = con,
schema='sites',
index=False,
if_exists='append',
)