fonctionnalites:geonature-atlas:integration-biodiv-territoire

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fonctionnalites:geonature-atlas:integration-biodiv-territoire [2025/06/12 09:41] – [Ajout de filtres] jpmilcentfonctionnalites:geonature-atlas:integration-biodiv-territoire [2025/07/11 18:46] (Version actuelle) – [Contraintes Atlas v2 et GN branche feat/sinp] jpmilcent
Ligne 3: Ligne 3:
 ===== Infos ===== ===== Infos =====
   * [[https://docs.google.com/document/d/1dspUNfDYwVwVX71dsiJlfpnk4jGTxTA_/edit?usp=sharing&ouid=104121426169692604797&rtpof=true&sd=true|Cahier des charges initial]]   * [[https://docs.google.com/document/d/1dspUNfDYwVwVX71dsiJlfpnk4jGTxTA_/edit?usp=sharing&ouid=104121426169692604797&rtpof=true&sd=true|Cahier des charges initial]]
 +  * [[https://observatoire-biodiversite.nantesmetropole.fr/area/21727|Fiche territoire Atlas de Nantes Métropole]]
 +  * [[https://atlas.biodiversite-auvergne-rhone-alpes.fr/commune/07232|Fiche Commune avec iFrame Biodiv'Territoire - Atlas Biodiv'AURA]]
 +  * [[https://biodiv-occitanie.fr/commune/30249|Fiche Commune avec filtre par groupe taxonomique - Atlas Biodiv'Occitanie ]]
 ===== Rappel du contexte ===== ===== Rappel du contexte =====
  
Ligne 85: Ligne 88:
 L'icône "taxon menacé" sera placé entre celui indiquant un taxon réglementé et un taxon remarquable. Il sera mis en avant, par exemple en l'affichant en rouge, lorsque le statut de conservation du taxon est défavorable. L'icône "taxon menacé" sera placé entre celui indiquant un taxon réglementé et un taxon remarquable. Il sera mis en avant, par exemple en l'affichant en rouge, lorsque le statut de conservation du taxon est défavorable.
  
 +=== Tickets existants ===
 +  * [[https://github.com/PnX-SI/GeoNature-atlas/issues/636|#636 - Remise à plat des indicateurs de patrimonialité et protection]]
 ==== Ajout de filtres ==== ==== Ajout de filtres ====
 Sur la fiche Territoire, au niveau de l'entête de la liste des taxons, ajouter à la liste des filtres avancés des taxons, les nouveaux filtres suivant : Sur la fiche Territoire, au niveau de l'entête de la liste des taxons, ajouter à la liste des filtres avancés des taxons, les nouveaux filtres suivant :
Ligne 92: Ligne 97:
 === Questions/À faire === === Questions/À faire ===
  
-  * <todo>Voir s'il est possible avec Boostrap 5 de simplifier l'affichage actuel</todo> : utiliser [[https://getbootstrap.com/docs/5.2/components/dropdowns/|un bouton de type dropdown]] incluant les toggles actuel ou des cases à cocher.+  * <todo>Voir s'il est possible avec Boostrap 5 de simplifier l'affichage actuel</todo> : utiliser [[https://getbootstrap.com/docs/5.2/components/dropdowns/|un bouton de type dropdown]] incluant les toggles actuel ou des cases à cocher. A tester sur écran tactile et petit écran.
  
 ==== Ajout d'un filtre par groupe taxo ==== ==== Ajout d'un filtre par groupe taxo ====
Ligne 134: Ligne 139:
   * la nécessité retravailler les développements existants dans l'Atlas afin de la rendre compatible avec une base de données GeoNature de plusieurs dizaines de millions d'observations   * la nécessité retravailler les développements existants dans l'Atlas afin de la rendre compatible avec une base de données GeoNature de plusieurs dizaines de millions d'observations
   * de l'ajout depuis 2021 d'une partie de ces développements dans le code de l'Atlas   * de l'ajout depuis 2021 d'une partie de ces développements dans le code de l'Atlas
 +
 +===== Contraintes Atlas v2 et GN branche feat/sinp =====
 +  * Nécessite de rajouter les tables suivante à la base GeoNature 2.10 branche ''feat/sinp'' : [[https://github.com/PnX-SI/RefGeo/blob/master/src/ref_geo/migrations/data/ref_geo_cor.sql#L1C1-L23C94|ref_geo.cor_areas]]
 +  * Nécessite d'activer les zones géo à prendre en compte (SINP, DEP, COM, PNR) : <code sql>
 +UPDATE ref_geo.l_areas SET
 +enable = TRUE
 +WHERE id_type = ref_geo.get_id_area_type_by_code('PNR');
 +</code>
 +  * Nécessite de peupler la table ''ref_geo.cor_areas'' : <code sql>
 +INSERT INTO ref_geo.cor_areas (
 +    id_area_group,
 +    id_area
 +)
 +  SELECT
 +    p.id_area AS id_area_goup,
 +    c.id_area
 +  FROM ref_geo.l_areas AS p, ref_geo.l_areas AS c
 +  WHERE p.id_type = ref_geo.get_id_area_type_by_code('SINP')
 +    AND p."enable" = TRUE
 +    AND c.id_type = ref_geo.get_id_area_type_by_code('DEP')
 +    AND c."enable" = TRUE
 +  
 +  UNION
 +  
 +  SELECT
 +    p.id_area AS id_area_goup,
 +    c.id_area
 +  FROM ref_geo.l_areas AS p, ref_geo.l_areas AS c
 +  WHERE p.id_type = ref_geo.get_id_area_type_by_code('DEP')
 +    AND p."enable" = TRUE
 +    AND c.id_type = ref_geo.get_id_area_type_by_code('COM')
 +    AND c."enable" = TRUE 
 +    AND starts_with(c.area_code, p.area_code) 
 +  
 +  UNION
 +  
 +  SELECT
 +    p.id_area AS id_area_goup,
 +    c.id_area
 +  FROM ref_geo.l_areas AS p, ref_geo.l_areas AS c
 +  WHERE p.id_type = ref_geo.get_id_area_type_by_code('SINP')
 +    AND p."enable" = TRUE
 +    AND c.id_type = ref_geo.get_id_area_type_by_code('PNR')
 +    AND c."enable" = TRUE ;
 +</code>
 +  * Ajout de la colonne ''geom_4326'' sur ''ref_geo.l_areas'' et d'un trigger : <code sql>
 +ALTER TABLE ref_geo.l_areas ADD COLUMN geom_4326 public.geometry(multipolygon, 4326) NULL;
 +
 +
 +CREATE FUNCTION ref_geo.fct_tri_transform_geom()
 +  RETURNS trigger AS
 +  $BODY$
 +    DECLARE
 +      local_srid integer;
 +      c integer;
 +    BEGIN
 +      IF (TG_OP = 'INSERT') THEN
 +        -- Insert policy: we set geom from geom_4326 if geom is null and geom_4326 is not null, and reciprocally.
 +        -- If both geom and geom_4326 have been set (or both are null), we do nothing.
 +        IF (NEW.geom IS NULL AND NEW.geom_4326 IS NOT NULL) THEN
 +          NEW.geom = ST_Transform(NEW.geom_4326, local_srid);
 +          RAISE NOTICE '(I) Updated geom';
 +        ELSEIF (NEW.geom IS NOT NULL AND NEW.geom_4326 IS NULL) THEN
 +          NEW.geom_4326 = ST_Transform(NEW.geom, 4326);
 +          RAISE NOTICE '(I) Updated geom_4326';
 +        END IF;
 +      ELSEIF (TG_OP = 'UPDATE') THEN
 +        -- Update policy: we set geom from geom_4326 if geom_4326 have been updated to non null value,
 +        -- unless geom have also been modified to non null value, and reciprocally.
 +        -- We also set geom from geom_4326 if geom is modified to null, and geom_4326 is not null (modified or not),
 +        -- in order to be consistent when updating one or two columns at the same time.
 +        IF (
 +          NEW.geom_4326 IS NOT NULL
 +          AND
 +          (
 +            (OLD.geom IS NOT DISTINCT FROM NEW.geom AND OLD.geom_4326 IS DISTINCT FROM NEW.geom_4326)
 +            OR
 +            (NEW.geom IS NULL AND OLD.geom IS NOT NULL)
 +          )
 +        ) THEN
 +          SELECT INTO local_srid Find_SRID('ref_geo', 'l_areas', 'geom');
 +          NEW.geom = ST_Transform(NEW.geom_4326, local_srid);
 +          RAISE NOTICE '(U) Updated geom';
 +        ELSEIF (
 +          NEW.geom IS NOT NULL
 +          AND
 +          (
 +            (OLD.geom_4326 IS NOT DISTINCT FROM NEW.geom_4326 AND OLD.geom IS DISTINCT FROM NEW.geom)
 +            OR
 +            (NEW.geom_4326 IS NULL AND OLD.geom_4326 IS NOT NULL)
 +          )
 +        ) THEN
 +          NEW.geom_4326 = ST_Transform(NEW.geom, 4326);
 +          RAISE NOTICE '(U) Updated geom_4326';
 +        END IF;
 +      END IF;
 +      RETURN NEW;
 +    END;
 +  $BODY$
 +  LANGUAGE plpgsql VOLATILE
 +  COST 100;
 +</code>
 +  * Ajout de la colonne ''description'' sur la table ''ref_geo.l_areas'' : <code sql>
 +ALTER TABLE ref_geo.l_areas ADD COLUMN description text NULL;
 +</code>
 + 
  • fonctionnalites/geonature-atlas/integration-biodiv-territoire.1749721287.txt.gz
  • Dernière modification : 2025/06/12 09:41
  • de jpmilcent