#!/usr/bin/env python3 # -*- coding: UTF-8 -*-. from sqlalchemy import create_engine, text from sqlalchemy.engine import URL from datetime import datetime as dt import pandas as pd import geopandas as gpd from pycen import con # Parametres bdd user = 'cen_admin' pwd = '#CEN38@venir' adr = '91.134.194.221' port = '5432' base = 'azalee_20240731' url = URL.create('postgresql+psycopg2', username=user, password=pwd, host=adr, database=base, ) # con = create_engine(url) drop_v_ps = ''' DROP VIEW IF EXISTS ps.v_pelouseseches_all CASCADE; DROP VIEW IF EXISTS ps.v_termophile CASCADE; ''' with con.begin() as cnx: cnx.execute(drop_v_ps) v_ps_habcb = """ DROP VIEW IF EXISTS ps.v_ps_habcb; CREATE OR REPLACE VIEW ps.v_ps_habcb AS SELECT b.id_sitehab, string_agg( CASE WHEN b.suspect is not null AND b.sep is not null THEN CONCAT(b.code_hab,' (',b.suspect,')',b.sep) WHEN b.suspect is not null AND b.sep is null THEN CONCAT(b.code_hab,' (',b.suspect,')') WHEN b.suspect is null AND b.sep is not null THEN CONCAT(b.code_hab,b.sep) WHEN b.suspect is null AND b.sep is null THEN b.code_hab ELSE b.code_hab END,'' ORDER BY b.ordre) code_hab, string_agg(b1.lb_hab_fr,';') lb_hab_fr FROM ps.r_hab_cb b JOIN ref_habitats.corine_biotope b1 ON b.code_hab = b1.id GROUP BY 1 ORDER BY 1 ; """ grant = """ GRANT ALL ON TABLE ps.v_ps_habcb TO grp_admin; GRANT SELECT ON TABLE ps.v_ps_habcb TO grp_consult; """ with con.begin() as cnx: cnx.execute(text(v_ps_habcb)) cnx.execute(grant) v_ps_sitehab_cross = """ DROP VIEW IF EXISTS ps.v_ps_sitehab_cross; CREATE OR REPLACE VIEW ps.v_ps_sitehab_cross AS SELECT id_site, id_geom_site, auteur, date, date_max, (string_to_array(hab1,'//'))[1] n_hab1, (string_to_array(hab1,'//'))[2] cb_hab1, (string_to_array(hab1,'//'))[3] lb_hab1, (string_to_array(hab2,'//'))[1] n_hab2, (string_to_array(hab2,'//'))[2] cb_hab2, (string_to_array(hab2,'//'))[3] lb_hab2, (string_to_array(hab3,'//'))[1] n_hab3, (string_to_array(hab3,'//'))[2] cb_hab3, (string_to_array(hab3,'//'))[3] lb_hab3, (string_to_array(hab4,'//'))[1] n_hab4, (string_to_array(hab4,'//'))[2] cb_hab4, (string_to_array(hab4,'//'))[3] lb_hab4 FROM crosstab( $$ WITH auteur AS ( SELECT DISTINCT ON (id_sitehab) c.id_sitehab, string_agg(c1.auteur,';' ORDER BY c1.auteur) auteur FROM ps.r_sitehab_auteur c JOIN personnes.v_personne c1 ON c1.id = c.id_auteur GROUP BY c.id_sitehab ) SELECT a.id_site, a.id_geom_site, c.auteur, a.date, (SELECT MAX(date) FROM ps.r_site_habitat WHERE id_geom_site = a.id_geom_site ) date_max, a.index, CONCAT(a.n_hab,'//', b.code_hab,'//', b.lb_hab_fr ) hab FROM ps.r_site_habitat a LEFT JOIN ps.v_ps_habcb b ON a.id = b.id_sitehab LEFT JOIN auteur c ON c.id_sitehab = a.id WHERE a.date = (SELECT MAX(date) FROM ps.r_site_habitat WHERE id_geom_site = a.id_geom_site) ORDER BY a.id_site,a.id_geom_site,a.index ;$$, 'SELECT DISTINCT index FROM ps.r_site_habitat ORDER BY index LIMIT 4 ;' ) AS ct ( "id_site" varchar(10), "id_geom_site" bigint, "auteur" text, "date" date, "date_max" date, "hab1" text, "hab2" text, "hab3" text, "hab4" text) ORDER BY 1,2 """ grant = """ GRANT ALL ON TABLE ps.v_ps_sitehab_cross TO grp_admin; GRANT SELECT ON TABLE ps.v_ps_sitehab_cross TO grp_consult; """ with con.begin() as cnx: cnx.execute(text(v_ps_sitehab_cross)) cnx.execute(grant) # PB a.id_geom_site in (52716) v_ps_params_cross = """ DROP VIEW IF EXISTS ps.v_ps_params_cross; CREATE OR REPLACE VIEW ps.v_ps_params_cross AS SELECT --ct.* ct.id_site, ct.id_geom_site, ct.auteur, ct.date, ct.date_max, ct.statut, ct.pratique, ct.recouvrement, ct.embrouss, ct.taux tx_embrouss FROM crosstab( $$ WITH auteur AS ( SELECT DISTINCT ON (id_siteparam) c.id_siteparam, string_agg(c1.auteur,';' ORDER BY c1.auteur) auteur FROM ps.r_siteparam_auteur c JOIN personnes.v_personne c1 ON c1.id = c.id_auteur GROUP BY c.id_siteparam ) SELECT DISTINCT ON (a.id_site,a.id_geom_site, a2.nom,a.date) a.id_site, a.id_geom_site::bigint, a.date, (SELECT MAX(date) FROM ps.r_site_param WHERE id_geom_site = a.id_geom_site ) date_max, STRING_AGG(distinct c.auteur,', '), a.taux, a2.nom, STRING_AGG(a1.description,', ') FROM ps.r_site_param a JOIN (ps.param a1 JOIN ps.type_param a2 ON a1.id_type = a2.id ) ON a.id_param = a1.id JOIN auteur c ON c.id_siteparam = a.id --WHERE -- a.id_geom_site in (52716) GROUP BY 1,2,7,3,6 ORDER BY 1,2,7,3 DESC $$, $$SELECT nom FROM ps.type_param ORDER BY nom;$$ ) AS ct ("id_site" varchar(10),"id_geom_site" bigint, "date" date, "date_max" date, "auteur" text, "taux" text, "embrouss" text, "pratique" text, "recouvrement" text, "statut" text) --GROUP BY 1,2,4,5,6,7,8 ORDER BY 1,2 """ grant = """ GRANT ALL ON TABLE ps.v_ps_params_cross TO grp_admin; GRANT SELECT ON TABLE ps.v_ps_params_cross TO grp_consult; """ with con.begin() as cnx: cnx.execute(text(v_ps_params_cross)) cnx.execute(grant) v_pelouseseches_all = drop_v_ps + """ CREATE OR REPLACE VIEW ps.v_pelouseseches_all AS WITH tmp_auteur_site as ( SELECT s.id, string_agg(s11.auteur,';' ORDER BY s11.auteur) AS auteur_site FROM sites.sites s JOIN sites.type_milieu s3 ON s.id_type_milieu = s3.id LEFT JOIN (sites.r_sites_auteur s1 JOIN personnes.v_personne s11 ON s1.id_auteur = s11.id ) ON s.id::text = s1.id_site::text WHERE s.date_fin IS NULL AND s3.nom_court::text = 'Pelouses sèches'::text GROUP BY s.id ORDER BY s.id ), tmp_auteur_geom as ( SELECT s6.id, string_agg(s611.auteur,';' ORDER BY s611.auteur) AS auteur_geom FROM sites.sites s JOIN sites.type_milieu s3 ON s.id_type_milieu = s3.id LEFT JOIN (sites.r_sites_geom s6 LEFT JOIN (sites.r_geomsites_auteur s61 JOIN personnes.v_personne s611 ON s61.id_auteur = s611.id ) ON s6.id = s61.id_geom_site ) ON s.id = s6.id_site WHERE s.date_fin IS NULL AND s3.nom_court::text = 'Pelouses sèches'::text GROUP BY s6.id ORDER BY s6.id ) SELECT DISTINCT ON (s.id) s.id AS site_code, s6.geom, s.nom, s5.nom district_nat, s6.libelle source, s6.id_origine, s1.auteur_site, s6.auteur_geom, ( SELECT DISTINCT ON ("date") auteur FROM (values (param.date_max,param.auteur),(hab.date_max,hab.auteur)) AS value("date",auteur) WHERE "date" = (SELECT MAX("date") FROM (values (param.date_max),(hab.date_max)) AS value("date")) ) as auteur_attrs, s.date_deb AS date_site, s6."date" AS date_geom, ( SELECT MAX("date") FROM (values (param.date_max),(hab.date_max)) AS value("date") ) as date_attrs, s3.nom_court AS type_milieu, s4.nom AS type_site, s.remarques AS rmq_site, s6.rmq_fct_majeur, s6.rmq_interet_patri, s6.rmq_bilan_menace, s6.rmq_orient_act, s6.rmq_usage_process, param.statut, param.pratique, param.recouvrement, param.embrouss, param.tx_embrouss, hab.n_hab1, hab.cb_hab1, hab.lb_hab1, hab.n_hab2, hab.cb_hab2, hab.lb_hab2, hab.n_hab3, hab.cb_hab3, hab.lb_hab3, hab.n_hab4, hab.cb_hab4, hab.lb_hab4 FROM sites.sites s JOIN tmp_auteur_site s1 ON s.id = s1.id JOIN sites.type_milieu s3 ON s.id_type_milieu = s3.id LEFT JOIN sites.type_site s4 ON s.id_type_site::text = s4.id::text JOIN ref_territoire.districts_naturels s5 ON s.org = s5.abrev JOIN ( SELECT DISTINCT ON (id_site) * FROM sites.r_sites_geom sg JOIN tmp_auteur_geom s61 ON sg.id = s61.id LEFT JOIN sites.lots s62 USING (id_lot) ORDER BY id_site, "date" DESC, date_insert DESC ) s6 ON s6.id_site = s.id LEFT JOIN ps.v_ps_sitehab_cross hab ON s.id = hab.id_site LEFT JOIN ps.v_ps_params_cross param ON s.id = param.id_site ----LEFT JOIN (sites.r_sites_geom s6 ---- LEFT JOIN tmp_auteur_geom s61 ON s6.id = s61.id ---- LEFT JOIN ps.v_ps_sitehab_cross hab ON s6.id = hab.id_geom_site ---- LEFT JOIN ps.v_ps_params_cross param ON s6.id = param.id_geom_site ----) ON s6.id_site = s.id --LEFT JOIN ps.r_infeq_1200m s7 ON s.id = s7.id_site WHERE s.date_fin IS NULL AND s3.nom_court::text = 'Pelouses sèches'::text --AND s3.id = 2 --AND s6.date = (SELECT MAX(date) FROM sites.r_sites_geom WHERE id_site = s.id) --AND s6.date_insert = ( -- SELECT MAX(date_insert) FROM sites.r_sites_geom WHERE id_site = s.id AND date = ( -- SELECT MAX(date) FROM sites.r_sites_geom WHERE id_site = s.id)) --AND s7.infeq_1200 IS True ORDER BY s.id, s6."date" DESC NULLS LAST ;""" grant = """ GRANT ALL ON TABLE ps.v_pelouseseches_all TO grp_admin; GRANT SELECT ON TABLE ps.v_pelouseseches_all TO grp_consult; """ comment = """ COMMENT ON VIEW ps.v_pelouseseches_all IS 'Vue des sites à pelouses sèches et milieux thermophiles'; COMMENT ON COLUMN ps.v_pelouseseches_all.site_code IS 'Identifiant de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.nom IS 'Nom de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.district_nat IS 'District naturel sur lequel est positionner la majeur partie de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.source IS 'Nom de la couche source de la pelouse sèche au sein du CEN Isère.'; COMMENT ON COLUMN ps.v_pelouseseches_all.id_origine IS 'Identifiant d''origine de la pelouse sèche au sein de la couche source.'; COMMENT ON COLUMN ps.v_pelouseseches_all.auteur_site IS 'Auteur ayant caractérisé la pelouse sèche pour la première fois.'; COMMENT ON COLUMN ps.v_pelouseseches_all.auteur_geom IS 'Auteur ayant définis la géometrie actuelle de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.auteur_attrs IS 'Auteur le plus récent ayant défini les attributs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.date_site IS 'Date de la première description de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.date_geom IS 'Date de la géométrie.'; COMMENT ON COLUMN ps.v_pelouseseches_all.date_attrs IS 'Date des attributs les plus récents.'; COMMENT ON COLUMN ps.v_pelouseseches_all.type_milieu IS 'Caractérisation du milieu.'; COMMENT ON COLUMN ps.v_pelouseseches_all.type_site IS ''; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_site IS 'Remarques générale concernant la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_fct_majeur IS 'Remarques sur les fonctions majeurs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_interet_patri IS 'Remarques sur les intérêts patrimoniaux de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_bilan_menace IS 'Remarques globales sur les menaces qui concernent la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_orient_act IS 'Remarques sur les orientations et les actes de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.rmq_usage_process IS 'Remarques concernant les usages et les processus naturels de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.statut IS 'Statut (Communautaire, Prioritaire ou non défini) de la pelouse sèche définit suivant la Directive Habitat.'; COMMENT ON COLUMN ps.v_pelouseseches_all.pratique IS 'Pratique agricole réalisée sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.recouvrement IS 'Niveau de recouvrement du sol herbacé par rapport au sol nu.'; COMMENT ON COLUMN ps.v_pelouseseches_all.embrouss IS 'Niveau d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.tx_embrouss IS 'Taux d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.n_hab1 IS 'Pourcentage de présence de l''habitat 1 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.cb_hab1 IS 'Identifiants CORINE Biotopes constituant l''habitat 1 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_all.lb_hab1 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 1 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_all.n_hab2 IS 'Pourcentage de présence de l''habitat 2 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.cb_hab2 IS 'Identifiants CORINE Biotopes constituant l''habitat 2 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_all.lb_hab2 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 2 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_all.n_hab3 IS 'Pourcentage de présence de l''habitat tertiaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.cb_hab3 IS 'Identifiants CORINE Biotopes constituant l''habitat 3 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_all.lb_hab3 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 3 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_all.n_hab4 IS 'Pourcentage de présence de l''habitat majoritaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_all.cb_hab4 IS 'Identifiants CORINE Biotopes constituant l''habitat 4 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_all.lb_hab4 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 4 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; """ with con.begin() as cnx: cnx.execute(v_pelouseseches_all) cnx.execute(grant) cnx.execute(comment) v_termophile = (v_pelouseseches_all .replace('v_pelouseseches_all','v_termophile') .replace('Pelouses sèches','Milieux thermophile')) grant = grant.replace('v_pelouseseches_all','v_termophile') comment = (comment .replace('v_pelouseseches_all','v_termophile') .replace('de la pelouse sèche','du milieux thermophile')) with con.begin() as cnx: cnx.execute(v_termophile) cnx.execute(grant) cnx.execute(comment) v_pelouseseches = """ CREATE OR REPLACE VIEW ps.v_pelouseseches AS SELECT * FROM ps.v_pelouseseches_all s LEFT JOIN ps.r_infeq_1200m s7 ON s.site_code = s7.id_site WHERE s7.infeq_1200 IS True ORDER BY s.site_code DESC NULLS LAST """ grant = """ GRANT ALL ON TABLE ps.v_pelouseseches TO grp_admin; GRANT SELECT ON TABLE ps.v_pelouseseches TO grp_consult; """ comment = """ COMMENT ON VIEW ps.v_pelouseseches IS 'Vue des sites à pelouses sèches strictes, situées à niveau ou sous 1200 mètre'; COMMENT ON COLUMN ps.v_pelouseseches.site_code IS 'Identifiant de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.nom IS 'Nom de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.district_nat IS 'District naturel sur lequel est positionner la majeur partie de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.source IS 'Nom de la couche source de la pelouse sèche au sein du CEN Isère.'; COMMENT ON COLUMN ps.v_pelouseseches.id_origine IS 'Identifiant d''origine de la pelouse sèche au sein de la couche source.'; COMMENT ON COLUMN ps.v_pelouseseches.auteur_site IS 'Auteur ayant caractérisé la pelouse sèche pour la première fois.'; COMMENT ON COLUMN ps.v_pelouseseches.auteur_geom IS 'Auteur ayant définis la géometrie actuelle de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.auteur_attrs IS 'Auteur le plus récent ayant défini les attributs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.date_site IS 'Date de la première description de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.date_geom IS 'Date de la géométrie.'; COMMENT ON COLUMN ps.v_pelouseseches.date_attrs IS 'Date des attributs les plus récents.'; COMMENT ON COLUMN ps.v_pelouseseches.type_milieu IS 'Caractérisation du milieu.'; COMMENT ON COLUMN ps.v_pelouseseches.type_site IS ''; COMMENT ON COLUMN ps.v_pelouseseches.rmq_site IS 'Remarques générale concernant la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.rmq_fct_majeur IS 'Remarques sur les fonctions majeurs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.rmq_interet_patri IS 'Remarques sur les intérêts patrimoniaux de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.rmq_bilan_menace IS 'Remarques globales sur les menaces qui concernent la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.rmq_orient_act IS 'Remarques sur les orientations et les actes de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.rmq_usage_process IS 'Remarques concernant les usages et les processus naturels de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.statut IS 'Statut (Communautaire, Prioritaire ou non défini) de la pelouse sèche définit suivant la Directive Habitat.'; COMMENT ON COLUMN ps.v_pelouseseches.pratique IS 'Pratique agricole réalisée sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.recouvrement IS 'Niveau de recouvrement du sol herbacé par rapport au sol nu.'; COMMENT ON COLUMN ps.v_pelouseseches.embrouss IS 'Niveau d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.tx_embrouss IS 'Taux d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.n_hab1 IS 'Pourcentage de présence de l''habitat 1 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.cb_hab1 IS 'Identifiants CORINE Biotopes constituant l''habitat 1 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches.lb_hab1 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 1 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches.n_hab2 IS 'Pourcentage de présence de l''habitat 2 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.cb_hab2 IS 'Identifiants CORINE Biotopes constituant l''habitat 2 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches.lb_hab2 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 2 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches.n_hab3 IS 'Pourcentage de présence de l''habitat tertiaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.cb_hab3 IS 'Identifiants CORINE Biotopes constituant l''habitat 3 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches.lb_hab3 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 3 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches.n_hab4 IS 'Pourcentage de présence de l''habitat majoritaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches.cb_hab4 IS 'Identifiants CORINE Biotopes constituant l''habitat 4 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches.lb_hab4 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 4 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; """ with con.begin() as cnx: cnx.execute(v_pelouseseches) cnx.execute(grant) cnx.execute(comment) v_pelouseseches_sup1200 = """ CREATE OR REPLACE VIEW ps.v_pelouseseches_sup1200 AS SELECT * FROM ps.v_pelouseseches_all s LEFT JOIN ps.r_infeq_1200m s7 ON s.site_code = s7.id_site WHERE s7.infeq_1200 IS False ORDER BY s.site_code DESC NULLS LAST """ grant = """ GRANT ALL ON TABLE ps.v_pelouseseches_sup1200 TO grp_admin; GRANT SELECT ON TABLE ps.v_pelouseseches_sup1200 TO grp_consult; """ comment = """ COMMENT ON VIEW ps.v_pelouseseches IS 'Vue des sites à pelouses sèches strictes, situées au dessus de 1200 mètre'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.site_code IS 'Identifiant de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.nom IS 'Nom de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.district_nat IS 'District naturel sur lequel est positionner la majeur partie de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.source IS 'Nom de la couche source de la pelouse sèche au sein du CEN Isère.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.id_origine IS 'Identifiant d''origine de la pelouse sèche au sein de la couche source.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.auteur_site IS 'Auteur ayant caractérisé la pelouse sèche pour la première fois.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.auteur_geom IS 'Auteur ayant définis la géometrie actuelle de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.auteur_attrs IS 'Auteur le plus récent ayant défini les attributs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.date_site IS 'Date de la première description de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.date_geom IS 'Date de la géométrie.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.date_attrs IS 'Date des attributs les plus récents.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.type_milieu IS 'Caractérisation du milieu.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.type_site IS ''; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_site IS 'Remarques générale concernant la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_fct_majeur IS 'Remarques sur les fonctions majeurs de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_interet_patri IS 'Remarques sur les intérêts patrimoniaux de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_bilan_menace IS 'Remarques globales sur les menaces qui concernent la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_orient_act IS 'Remarques sur les orientations et les actes de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.rmq_usage_process IS 'Remarques concernant les usages et les processus naturels de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.statut IS 'Statut (Communautaire, Prioritaire ou non défini) de la pelouse sèche définit suivant la Directive Habitat.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.pratique IS 'Pratique agricole réalisée sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.recouvrement IS 'Niveau de recouvrement du sol herbacé par rapport au sol nu.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.embrouss IS 'Niveau d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.tx_embrouss IS 'Taux d''embroussaillement de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.n_hab1 IS 'Pourcentage de présence de l''habitat 1 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.cb_hab1 IS 'Identifiants CORINE Biotopes constituant l''habitat 1 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.lb_hab1 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 1 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.n_hab2 IS 'Pourcentage de présence de l''habitat 2 sur 4 de la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.cb_hab2 IS 'Identifiants CORINE Biotopes constituant l''habitat 2 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.lb_hab2 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 2 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.n_hab3 IS 'Pourcentage de présence de l''habitat tertiaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.cb_hab3 IS 'Identifiants CORINE Biotopes constituant l''habitat 3 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.lb_hab3 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 3 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.n_hab4 IS 'Pourcentage de présence de l''habitat majoritaire sur la pelouse sèche.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.cb_hab4 IS 'Identifiants CORINE Biotopes constituant l''habitat 4 sur 4 de la pelouse sèche.\n- & : Entremêlement d''habitat\n- / : Habitat en transition dans le sens de lecture\n- (..) : Habitat suspecté.'; COMMENT ON COLUMN ps.v_pelouseseches_sup1200.lb_hab4 IS 'Libellé(s) CORINE Biotopes constituant(s) l''habitat 4 sur 4 de la pelouse sèche. Chaque élément de la liste est séparé par un '';''.'; """ with con.begin() as cnx: cnx.execute(v_pelouseseches_sup1200) cnx.execute(grant) cnx.execute(comment) v_pelouseseches_noalti = """ CREATE OR REPLACE VIEW ps.v_pelouseseches_noalti AS SELECT * FROM ps.v_pelouseseches_all s LEFT JOIN ps.r_infeq_1200m s7 ON s.site_code = s7.id_site WHERE s7.infeq_1200 IS NULL ORDER BY s.site_code DESC NULLS LAST """ grant = """ GRANT ALL ON TABLE ps.v_pelouseseches_noalti TO grp_admin; """ comment = """ COMMENT ON VIEW ps.v_pelouseseches_noalti IS 'Vue des sites à pelouses sèches strictes, ne possèdant pas de critères ''infeq_1200'''; """ with con.begin() as cnx: cnx.execute(v_pelouseseches_noalti) cnx.execute(grant) cnx.execute(comment) # test = """ # SELECT * FROM ps.v_pelouseseches_all; # """ # data = gpd.read_postgis( # sql = test, # con = con)