view zh v2

This commit is contained in:
Colas Geier 2024-02-26 15:32:02 +01:00
parent bfcc86a5a7
commit 9543915c73

View File

@ -1,27 +1,10 @@
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-.
from sqlalchemy import create_engine, text
from sqlalchemy.engine import URL
from sqlalchemy import text
from datetime import datetime as dt
import pandas as pd
import geopandas as gpd
# Parametres bdd
user = 'cen_admin'
pwd = '#CEN38@venir'
adr = '91.134.194.221'
port = '5432'
base = 'azalee'
url = URL.create('postgresql+psycopg2',
username=user,
password=pwd,
host=adr,
database=base,
)
con = create_engine(url)
from pycen import con
drop_v_zh = 'DROP VIEW IF EXISTS zones_humides.v_zoneshumides CASCADE;'
with con.begin() as cnx:
@ -216,7 +199,7 @@ SELECT DISTINCT ON (id_site)
int_patri,
"val_socioEco"
FROM crosstab(
$$WITH auteur AS (
$$ WITH auteur AS (
SELECT DISTINCT ON (id_sitefct)
c.id_sitefct,
string_agg(c1.auteur,';' ORDER BY c1.auteur) auteur
@ -224,26 +207,41 @@ FROM crosstab(
JOIN personnes.v_personne c1 ON c1.id = c.id_auteur
GROUP BY c.id_sitefct
ORDER BY 1
)
SELECT
--a.id_geom_site::bigint,
id_site,
d.auteur,
MAX(a.date) date,
c.nom_court type_param,
string_agg(
CASE WHEN a.description IS NULL THEN b.nom
WHEN a.description = '' THEN b.nom
ELSE CONCAT(b.nom,' (',a.description,')') END,
), tmp_select as (
SELECT
id_site,
(SELECT regexp_split_to_table(auth,',') FROM (values (string_agg(d.auteur,',' order by ROW()))) AS value(auth) Limit 1) auteur,
MAX(a.date) date,
c.nom_court type_param,
b.nom,
string_agg(DISTINCT a.description,'\n') remark
FROM zones_humides.r_site_fctecosociopatri a
JOIN (zones_humides.param_fct_eco_socio_patri b
JOIN zones_humides.type_param_fct c ON b.id_type = c.id
) ON a.id_fct = b.id
JOIN auteur d ON d.id_sitefct = a.id
WHERE a."valid"
GROUP BY a.id_site,c.nom_court,b.nom
ORDER BY a.id_site,c.nom_court DESC,b.nom
)
SELECT
id_site,
string_agg(
DISTINCT CASE WHEN extract(year from date)>'1'
THEN auteur||'-'|| extract(year from date)
ELSE auteur END,
'; ') auteur,
MAX(date) date,
type_param,
string_agg(distinct
CASE WHEN remark IS NULL THEN nom
WHEN remark = '' THEN nom
ELSE CONCAT(nom,' (',remark,')') END,
';') fct
FROM zones_humides.r_site_fctecosociopatri a
JOIN (zones_humides.param_fct_eco_socio_patri b
JOIN zones_humides.type_param_fct c ON b.id_type = c.id
) ON a.id_fct = b.id
JOIN auteur d ON d.id_sitefct = a.id
WHERE a."valid"
GROUP BY a.id_site,d.auteur,c.nom_court
ORDER BY 1,4;$$,
FROM tmp_select
GROUP BY 1,4
ORDER BY 1,4,3;$$,
$$SELECT DISTINCT nom_court FROM zones_humides.type_param_fct ORDER BY 1 ASC;$$
) AS ct (
"id_site" text,
@ -289,22 +287,26 @@ FROM crosstab(
SELECT
--a.id_geom_site::bigint,
id_site,
d.auteur,
string_agg(
DISTINCT CASE WHEN extract(year from a.date)>'1'
THEN d.auteur||'-'|| extract(year from a.date)
ELSE d.auteur END,
'; ') auteur,
MAX(a.date) date,
c.nom_court type_param,
string_agg(
CASE WHEN a.description IS NULL THEN b.nom
WHEN a.description = '' THEN b.nom
ELSE CONCAT(b.nom,' (',a.description,')') END,
';') fct
string_agg( DISTINCT
CASE WHEN a.description IS NULL THEN b.nom
WHEN a.description = '' THEN b.nom
ELSE CONCAT(b.nom,' (',a.description,')') END,
'; ') fct
FROM zones_humides.r_site_critdelim a
JOIN (zones_humides.param_delim_fct b
JOIN zones_humides.type_param_delim_fct c ON b.id_type = c.id
) ON a.id_crit_delim = b.id
JOIN auteur d ON d.id_sitedelim = a.id
WHERE a."valid"
GROUP BY a.id_site,d.auteur,c.nom_court
ORDER BY 1,2,3$$,
GROUP BY 1,4
ORDER BY 3,1,2$$,
$$SELECT DISTINCT nom_court FROM zones_humides.type_param_delim_fct ORDER BY 1 DESC;$$
) AS ct (
"id_site" text,
@ -583,7 +585,7 @@ with con.begin() as cnx:
test = """
SELECT * FROM zones_humides.v_zoneshumides;
"""
data = pd.read_sql_query(
data = gpd.pd.read_sql_query(
sql = text(test),
con = con)