diff --git a/5_GEONATURE/EXPORT/flore_export_sinp_with_metadata 2.py b/5_GEONATURE/EXPORT/flore_export_sinp_with_metadata 2.py new file mode 100644 index 0000000..c97f752 --- /dev/null +++ b/5_GEONATURE/EXPORT/flore_export_sinp_with_metadata 2.py @@ -0,0 +1,177 @@ +from pycen import con_gn + +sql = ''' +DROP VIEW IF EXISTS gn_exports.v_synthese_sinp_with_metadata_flora_for_gn2pg_bis; + +CREATE VIEW gn_exports.v_synthese_sinp_with_metadata_flora_for_gn2pg_bis AS + WITH af_actors AS ( + SELECT cafa.id_acquisition_framework + FROM gn_meta.cor_acquisition_framework_actor cafa + LEFT JOIN utilisateurs.bib_organismes borg ON cafa.id_organism = borg.id_organisme + WHERE borg.uuid_organisme = '5a433bd0-2070-25d9-e053-2614a8c026f8'::uuid + ), af AS ( + SELECT taf.id_acquisition_framework + FROM gn_meta.t_acquisition_frameworks taf + JOIN af_actors ON af_actors.id_acquisition_framework = taf.id_acquisition_framework + GROUP BY taf.id_acquisition_framework + ), ds AS ( + SELECT tds.id_dataset, + tds.dataset_name AS nom_jdd, + tds.id_acquisition_framework + FROM gn_meta.t_datasets tds + GROUP BY tds.id_dataset, tds.dataset_name + ), geo AS ( + SELECT "left"(geo_1.area_code::text, 2) AS departement, + geo_1.area_code AS commune, + s_1.id_synthese, + st_transform(s_1.the_geom_local, 4326) AS st_transform + FROM ref_geo.l_areas geo_1 + JOIN gn_synthese.synthese s_1 ON st_intersects(s_1.the_geom_4326, st_transform(geo_1.geom, 4326)) + WHERE geo_1.id_type = 25 + ) + SELECT + ds.nom_jdd AS nom_jdd, + s.unique_id_sinp_grp AS id_sinp_releve, + occ.id_releve_occtax AS identifiant_releve, + NULL::text AS code_perso_releve, + s.unique_id_sinp AS id_sinp_observation, + s.entity_source_pk_value AS identifiant_observation, + geo.departement, + geo.commune, + NULL::text AS lieu_dit, + CASE + WHEN "position"(sp.srtext::text, 'GEOGCS'::text) = 1 THEN "substring"(replace(sp.srtext::text, 'GEOGCS["'::text, ''::text), 1, "position"(replace(sp.srtext::text, 'GEOGCS["'::text, ''::text), '",'::text) - 1) + WHEN "position"(sp.srtext::text, 'PROJCS'::text) = 1 THEN "substring"(replace(sp.srtext::text, 'PROJCS["'::text, ''::text), 1, "position"(replace(sp.srtext::text, 'PROJCS["'::text, ''::text), '",'::text) - 1) + WHEN "position"(sp.srtext::text, 'GEOCCS'::text) = 1 THEN "substring"(replace(sp.srtext::text, 'GEOCCS["'::text, ''::text), 1, "position"(replace(sp.srtext::text, 'GEOCCS["'::text, ''::text), '",'::text) - 1) + WHEN "position"(sp.srtext::text, 'COMPD_CS'::text) = 1 THEN "substring"(replace(sp.srtext::text, 'COMPD_CS["'::text, ''::text), 1, "position"(replace(sp.srtext::text, 'COMPD_CS["'::text, ''::text), '",'::text) - 1) + ELSE 'Non défini'::text + END AS sys_coord, + st_srid(s.the_geom_4326) AS "SRID", + st_astext(s.the_geom_4326) AS localisation_wkt, + st_x(st_centroid(s.the_geom_4326)) AS coord_x, + st_y(st_centroid(s.the_geom_4326)) AS coord_y, + s."precision" AS precision, + NULL::text AS nature_objet, + s.altitude_min AS alti_min, + s.altitude_max AS alti_max, + NULL::text AS pente, + NULL::text AS exposition, + NULL::text AS comm_geol, + NULL::text AS milieu, + s.observers AS observateurs, + s.date_min AS date_debut, + s.date_max AS date_fin, + NULL::text AS comm_context, + n2.mnemonique AS type_regroupement, + s.grp_method AS meth_regroupement, + NULL::text AS surface, + (s."additional_data"::json#>>'{strate_flore}') || + ref_nomenclatures.get_nomenclature_label((s."additional_data"::json#>>'{id_nomenclature_strate_flore}')::int) + AS strate_vegetation, + (s."additional_data"::json#>>'{heigth_herbace}')::text || (s."additional_data"::json#>>'{heigth_arbust}')::text + || (s."additional_data"::json#>>'{heigth_arbore}')::text || (s."additional_data"::json#>>'{heigth_ssarbust}')::text + AS hauteur_strate, + (s."additional_data"::json#>>'{rcvmt_herbace}')::text || (s."additional_data"::json#>>'{rcvmt_arbust}')::text + || (s."additional_data"::json#>>'{rcvmt_arbore}')::text || (s."additional_data"::json#>>'{rcvmt_ssarbust}')::text + AS recouvrement_strate, + s.cd_hab AS cdhab, + NULL::text AS cdhab_v, + NULL::text AS code_eur, + NULL::text AS code_eunis, + NULL::text AS code_cahab, + NULL::text AS code_cb, + NULL::text AS id_microhab, + n21.regne AS regne, + s.nom_cite AS nom_cite, + s.cd_nom as cd_nom, + (s."additional_data"::json#>>'{effectif_textuel}')::text || + ref_nomenclatures.get_nomenclature_label((s."additional_data"::json#>>'{id_nomenclature_braunblanq_abdom}')::int)::text + AS abondance, + NULL::text AS sociabilite, + n11.mnemonique AS sexe, + n7.mnemonique AS naturalite, + NULL::text AS comm_description, + n15.mnemonique AS statut_observation, + n12.mnemonique AS objet_denombrement, + n13.mnemonique AS type_denombrement, + s.count_min AS nombre_min, + s.count_max AS nombre_max, + n17.label_default AS statut_source, + NULL::text AS reference_biblio, + NULL::text AS page, + n8.mnemonique AS preuve_existence, + s.digital_proof AS preuve_numerique, + s.non_digital_proof AS preuve_non_numerique, + NULL::text AS nom_collection, + NULL::text AS ref_collection, + s.determiner AS determinateur, + NULL::text AS niv_val, + NULL::text AS niveau_diffusion, + n16.mnemonique AS floutage_dee, + NULL::text AS methode_observation, + CASE WHEN ts.name_source like 'MONITORING_%%' + THEN split_part(ts.name_source,'_',2) + ELSE 'RELEVE FLORE'::text + END AS protocole, + n6.mnemonique AS etat_biologique, + n5.mnemonique AS statut_biologique, + n10.mnemonique AS stade_vie, + n19.mnemonique AS methode_determination, + n3.mnemonique AS comportement, + s.additional_data - '{effectif_textuel,strate_flore,code_atlas,id_nomenclature_braunblanq_abdom,id_nomenclature_strate_flore}'::text[] AS donnees_additionnelles + FROM gn_synthese.synthese s + JOIN ds ON ds.id_dataset = s.id_dataset + JOIN af ON ds.id_acquisition_framework = af.id_acquisition_framework + JOIN geo ON s.id_synthese = geo.id_synthese + JOIN spatial_ref_sys sp ON st_srid(s.the_geom_4326) = sp.auth_srid + LEFT JOIN ref_habitats.habref h ON h.cd_hab = s.cd_hab + LEFT JOIN pr_occtax.t_releves_occtax occ ON occ.unique_id_sinp_grp = s.unique_id_sinp_grp + LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_behaviour = n3.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n4 ON s.id_nomenclature_obs_technique = n4.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_valid_status = n20.id_nomenclature + LEFT JOIN taxonomie.taxref n21 ON s.cd_nom = n21.cd_nom + JOIN gn_synthese.cor_area_synthese cas ON cas.id_synthese = s.id_synthese + + -- ADD CEN_38 + JOIN gn_synthese.t_sources ts ON ts.id_source = s.id_source + WHERE n21.regne::text = 'Plantae'::text + -- exclision CA ([SICEN] Données anciennes,[TEST] : migration sicen,[SICEN] Hors Etude) + AND ds.id_acquisition_framework NOT IN (53,65,66,1,2,6) + -- exclision JDD `Observations opportunistes du CEN Isère importé depuis Faune Isère` + AND ds.id_dataset NOT IN (185,377,236) + -- exclision CA (`Gestion de l'Espace Naturel Sensible du Méandre des Oves`, `Gestion de la Réserve Naturelle Nationale de l'Ile de la Platière`, `Gestion des Natura 2000 FR 8201749 « Milieux alluviaux et aquatiques de l’Île de la Platière » et FR 8212012 « Île de la Platière »`, `RNN Platière` + --AND (ts.id_module = 7 AND ds.id_acquisition_framework IN (7,38,39,42,44,45,46,48,55,57,58,60) + AND ( + unaccent(observers) LIKE ANY (array['%%Conservatoire d%%Espaces Naturels Isere%%', '%%Conservatoire d%%Espaces Naturels d%%Isere%%', '%%CEN Isere%%', '%%Association des Amis de l%%Ile de la Platiere%%']) + OR observers NOT LIKE '%%(%%)%%' + ) + AND unaccent(observers) NOT LIKE ALL(array[ + '%%Sympetrum%%','%%Departement%%','%%Rhone%%','%%Oxalis%%', + '%%LPO%%','%%GRPLS%%','%%Parvi%%','%%CD Isere%%','%%Personnel%%','%%Independant%%' + '%%DELOCHE Denis%%' + ]) + AND observers NOT IN ('', 'Benoit Dodelin',', ') + -- statut_validation = 'Certain - très probable' + -- AND n20.cd_nomenclature = '1' +ORDER BY s.id_synthese; +''' + +with con_gn.begin() as cnx: + cnx.execute(sql) \ No newline at end of file