Python_scripts/13_BDCEN/clean_topographie_site.py
2025-02-25 16:51:06 +01:00

146 lines
5.6 KiB
Python

import geopandas as gpd
from pycen import con_bdcen
###############
#### TOPO #####
###############
sql = '''
ALTER TABLE sites_topo.topo_ligne RENAME column "Geometry" to geom;
ALTER TABLE sites_topo.topo_ligne OWNER TO cen_admin;
CREATE SEQUENCE sites_topo.topo_ligne_id_seq OWNED BY sites_topo.topo_ligne."PK_UID";
SELECT setval('sites_topo.topo_ligne_id_seq', coalesce(max("PK_UID"), 0) + 1, false) FROM sites_topo.topo_ligne;
ALTER TABLE sites_topo.topo_ligne ALTER COLUMN "PK_UID" SET DEFAULT nextval('sites_topo.topo_ligne_id_seq');
'''
with con_bdcen.begin() as cnx:
cnx.execute(sql)
tline_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='topo_ligne')
tline_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='topo_ligne')
tmp = gpd.pd.concat([tline_clt,tline_sai])
isdupl = tmp.geometry.to_wkt().duplicated(keep=False)
tmp[isdupl]
iners = tline_sai.buffer(-1).intersects(tline_clt.unary_union)
(tline_sai[~iners]
.rename_geometry('geom')
.to_postgis(
'topo_ligne',
con_bdcen,
schema='sites_topo',
if_exists='append',
index=False,
))
tpoly_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='topo_polygone')
tpoly_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='topo_polygone')
gpd.pd.concat([tpoly_clt,tpoly_sai]).drop_duplicates(subset='geometry')
iners = tpoly_sai.intersects(tpoly_clt.unary_union)
(tpoly_sai[~iners]
.rename_geometry('geom')
.to_postgis(
'topo_polygone',
con_bdcen,
schema='sites_topo',
if_exists='append',
index=False,
))
tpnt_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='topo_point')
tpnt_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='topo_point')
tmp = gpd.pd.concat([tpnt_clt,tpnt_sai])
isdupl = tmp.geometry.to_wkt().duplicated(keep=False)
tmp[isdupl].drop_duplicates(subset='geometry')
gpd.pd.concat([tpnt_clt,tpnt_sai]).drop_duplicates(subset='geometry')
iners = tpnt_sai.intersects(tpnt_clt.unary_union)
(tpnt_sai[~iners]
.rename_geometry('geom')
.to_postgis(
'topo_point',
con_bdcen,
schema='sites_topo',
if_exists='append',
index=False,
))
###############
#### HYDRO ####
###############
sql = '''
--ALTER TABLE sites_hydro.hydro_point RENAME column "Geometry" to geom;
ALTER TABLE sites_hydro.hydro_point OWNER TO cen_admin;
CREATE SEQUENCE sites_hydro.hydro_point_id_seq OWNED BY sites_hydro.hydro_point."PK_UID";
SELECT setval('sites_hydro.hydro_point_id_seq', coalesce(max("PK_UID"), 0) + 1, false) FROM sites_hydro.hydro_point;
ALTER TABLE sites_hydro.hydro_point ALTER COLUMN "PK_UID" SET DEFAULT nextval('sites_hydro.hydro_point_id_seq');
'''
with con_bdcen.begin() as cnx:
cnx.execute(sql)
hline_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='hydro_ligne')
hline_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='hydro_ligne')
hline_sai.dropna(subset='geometry',inplace=True)
tmp = gpd.pd.concat([hline_clt,hline_sai])
isdupl = tmp.geometry.to_wkt().duplicated(keep=False)
tmp[isdupl]
hline_clt[hline_clt.geometry.to_wkt().duplicated(keep=False)]
hline_sai[hline_sai.geometry.to_wkt().duplicated(keep=False)]
iners = hline_sai.buffer(-1).intersects(hline_clt.unary_union)
(hline_sai[~iners]
.rename_geometry('geom')
.to_postgis(
'hydro_ligne',
con_bdcen,
schema='sites_hydro',
if_exists='append',
index=False,
))
res = gpd.read_postgis('SELECT * FROM sites_hydro.hydro_ligne',con_bdcen)
res['geom_wkt'] = res.geom.to_wkt()
res[res.geom_wkt.duplicated(keep=False)].sort_values(['geom_wkt','Type']).PK_UID.to_list()
hpoly_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='hydro_polygone')
hpoly_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='hydro_polygone')
tmp = gpd.pd.concat([hpoly_clt,hpoly_sai])
isdupl = tmp.geometry.to_wkt().duplicated(keep=False)
tmp[isdupl]
iners = hpoly_sai.buffer(-1).intersects(hpoly_clt.unary_union)
(hpoly_sai
.rename_geometry('geom')
.to_postgis(
'hydro_polygone',
con_bdcen,
schema='sites_hydro',
if_exists='append',
index=False,
))
res = gpd.read_postgis('SELECT * FROM sites_hydro.hydro_polygone',con_bdcen)
res['geom_wkt'] = res.geom.to_wkt()
res[res.geom_wkt.duplicated(keep=False)].sort_values(['geom_wkt','Type','NOM']).PK_UID.to_list()
hpnt_clt = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_consultation.sqlite',layer='hydro_point')
hpnt_clt.dropna(subset='geometry', inplace=True)
hpnt_sai = gpd.read_file('/home/colas/Documents/5_BDD/7_CEN38/topographie_saisie.sqlite',layer='hydro_point')
hpnt_sai.replace({'':None}, inplace=True)
tmp = gpd.pd.concat([hpnt_clt,hpnt_sai])
isdupl = tmp.geometry.to_wkt().duplicated(keep=False)
tmp[isdupl].drop_duplicates(subset='geometry')
gpd.pd.concat([hpnt_clt,hpnt_sai]).drop_duplicates(subset='geometry')
iners = hpnt_sai.intersects(hpnt_clt.unary_union)
(hpnt_sai
.rename_geometry('geom')
.to_postgis(
'hydro_point',
con_bdcen,
schema='sites_hydro',
if_exists='append',
index=False,
))
res = gpd.read_postgis('SELECT * FROM sites_hydro.hydro_point',con_bdcen)
res['geom_wkt'] = res.geom.to_wkt()
res[res.geom_wkt.duplicated(keep=False)].sort_values(['geom_wkt','Type','TYPE_PRINC']).PK_UID.to_list()