GeoNature icon indicating copy to clipboard operation
GeoNature copied to clipboard

Filtrer les métadonnées par zonage

Open camillemonchicourt opened this issue 2 years ago • 2 comments

Il est souhaité pouvoir filtrer les CA ou les JDD par zonage, notamment par région ou département. On ne dispose pas directement de l'info du zonage concerné par un CA ou un JDD, mais on peut le déduire des zonages des données qu'il contient.

C'est un peu lourd comme requête, mais sur un test rapide sur la BDD du PNE, on peut retrouver les JDD en filtrant sur un département en 2 secondes, ce qui est tout à fait convenable :

select distinct td.id_dataset, td.dataset_name from gn_meta.t_datasets td 
join gn_synthese.synthese s on s.id_dataset = td.id_dataset 
join gn_synthese.cor_area_synthese cas on cas.id_synthese = s.id_synthese 
where cas.id_area = 1593768 -- Isère
--where cas.id_area = 1593734 -- Hautes-Alpes
group by td.id_dataset

Il y a d'ailleurs peut-être mieux comme requête ?

Sur cette base, on pourrait donc ajouter les filtrages des métadonnées par zonage. Comme pour les filtres géographiques dans la synthèse (https://github.com/PnX-SI/GeoNature/blob/master/config/default_config.toml.example#L234), il serait bien que les types de zonages proposés comme filtres soient paramétrables.

camillemonchicourt avatar Mar 11 '22 07:03 camillemonchicourt

Je trouverai ça très intéressant, et je crois qu'on en a déjà parlé, d'associer une géométrie à un jeu de données et/ou un cadre d'acquisition (donc d'ajouter l'information de zonage). Cette géométrie pourrait soit être celle du ref_geo soit celle des sites monitorés. C'est une demande vraiment constante chez tous les clients que nous avons et notamment les BE mais pas que.

Adrien-Pajot avatar Mar 17 '22 18:03 Adrien-Pajot

Pour le moment seules les bbox sont definies/prévues au niveau des metadonnees. Ca peut déjà être une première méthode d'aller intersecter ces bbox

DonovanMaillard avatar Mar 17 '22 20:03 DonovanMaillard

Des travaux ont démarrés récemment autour de cette issue pour MNHN.

Ce commentaire a été écrit conformément aux échanges avec MNHN et l'équipe technique du Parc des Ecrins (@TheoLechemia , @camillemonchicourt , @bouttier).

Voici le spectre fonctionnel retenu pour ces travaux.

Description fonctionnelle

Il est demandé de pouvoir filtrer les métadonnées selon une zone géographique qui doit être déjà accessible dans la table ref_geo.l_areas.

Cette fonctionnalité sera accessible si et seulement si l'administrateur a activé ces filtres dans la configuration de GeoNature via l'ajout du booléen dans la configuration suivante :

  • config_schema.py

DISPLAY_METADATA_REF_GEO_FILTER = fields.String(fields.str(), load_default=False)

  • default_config.toml.example

DISPLAY_METADATA_REF_GEO_FILTER = true

Si ce champ est renseignée true, alors deux filtres seront accessibles :

  1. Choix du référentiel => Choix de la valeur id_type
  2. Saisie de la valeur de la zone => Recherche et sélection de l'entité area selon le champ area_name

A noter que le champ de saisie ne sera visible que si le choix du référentiel a été réalisé en première étape.

Le retour de l'autocomplétion correspondra alors à la requête suivante GET /geo/areas :

/geo/areas?area_name=saint&id_type=25

https://github.com/PnX-SI/GeoNature/blob/7fa9f345b300567a5714ec2a9ea0dbfc5bfcf7c9/backend/geonature/core/ref_geo/routes.py#L212-L216

Capture

Voici une capture des travaux en cours (les labels seront changés) :

image

Gaetanbrl avatar Nov 07 '22 15:11 Gaetanbrl

Pour les paramètres, voir ce qui est indiqué plus haut. Il ne s'agit pas d'ajouter 2 paramètres booléens, mais bien de faire comme pour les filtres géographiques de la Synthèse, en ajoutant un paramètre unique listant des AREA_CODE. Nomme par exemple METADATA_AREA_FILTERS

Voir le paramètre AREA_FILTERS de la Synthèse : https://github.com/PnX-SI/GeoNature/blob/master/config/default_config.toml.example#L255-L257

Si ce paramètre est vide, alors on n'affiche pas du tout de filtre géographique. Par défaut, je mettrai bien les communes, et les départements, pourquoi pas les régions.

Je suis pas super convaincu de l'ergonomie et simplicité de devoir combiner 2 champs. Commencer par choisir son type de zonage sur lequel on veut filtrer, puis choisir le zonage en question. Je préfère une liste de zonages par types de zonages activé.

Mais pourquoi pas. Si on reste sur 2 champs à combiner, il faut clarifier visuellement qu'ils vont ensemble. Et revoir le vocabulaire. Là je ne vois pas trop ce que l'utilisateur va comprendre en arrivant devant un champs "Référentiel de la zone", surtout en l'affichant comme les autres champs de recherche. "Zone géographique à utiliser" n'est pas clair non plus.

L'utilisateur par nom, par acteur, etc... Il doit comprendre de la même manière quand il filtre par "Commune", "Département", "Région" ou autre.

camillemonchicourt avatar Nov 07 '22 20:11 camillemonchicourt

Je suis pas super convaincu de l'ergonomie et simplicité de devoir combiner 2 champ

Ok, faut juste bien définir précisément le comportement et l'affichage que vous préférez pour pouvoir avancer dans les devs.

de faire comme pour les filtres géographiques de la Synthèse, en ajoutant un paramètre unique listant des AREA_CODE

Noté.

Je préfère une liste de zonages par types de zonages activé.

Pour bien comprendre, tu préfères qu'un seul champ de saisie, et qu'à la saisie on recherche dans tous les types (code type area) listés dans la config ?

Gaetanbrl avatar Nov 08 '22 07:11 Gaetanbrl

Ma solution préférée est, comme dans le Synthèse, un champs par type de zonage :

image

Donc autant de champs qu'on aurait de AREA_CODE dans le paramètre METADATA_AREA_FILTERS.

Même si ça peut allonger un peu le formulaire de filtre (pas vraiment un soucis selon moi), c'est clair et simple.


Si il est préféré la combinaison de 2 champs (un pour le type de zonage, un pour le zonage du type sélectionné), alors il faut clarifier l'ergonomie et les vocabulaires, pour que l'utilisateur comprenne qu'il doit combiner ces 2 champs, qu'ils vont ensemble, etc...

camillemonchicourt avatar Nov 08 '22 07:11 camillemonchicourt

alors il faut clarifier l'ergonomie et les vocabulaires

Oui c'était indiqué avant la capture car j'avais prévu d'en reparler :

(les labels seront changés)

Gaetanbrl avatar Nov 08 '22 08:11 Gaetanbrl

Je suis plutôt d'accord avec Camille, la cohérence des formulaires de requête me semble la meilleure option ergonomique. Le fait d'avoir un bloc complet Ou? est intuitif et est à privilégier.

jpanijel avatar Nov 08 '22 08:11 jpanijel

la solution de @camillemonchicourt est donc retenue.

Gaetanbrl avatar Nov 08 '22 08:11 Gaetanbrl

Intégré dans la 2.11

camillemonchicourt avatar Dec 21 '22 23:12 camillemonchicourt