Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SYNTHESE] Mise en évidence d'un critère sélectionné sur la carte et sur la liste de résultats #3258

Open
okristo opened this issue Nov 19, 2024 · 0 comments

Comments

@okristo
Copy link

okristo commented Nov 19, 2024

Besoin/Objectif

Améliorer la visibilité des données sur la carte du module Synthèse (= Observations) selon un critère (précision, période, enjeux…) sélectionné par l’utilisateur.

Ressources
Tickets GeoNature Github :
#1093 - Synthèse : affichage de mailles et observations géo-confidentielles

Questions
Comment gère-t-on le cas où un "point" sur la carte contient plusieurs observations dont les valeurs du critère sélectionné sont différentes ?

  • Utiliser une couleur "neutre" (gris ?) dans un premier temps car la liste des observations où nous colorerons l'icône "i" permettra de faire la distinction.
  • Autres solutions de coloration, en fonction :
    • de l'observation la plus récente
    • du pourcentage le plus élevé d'observations ayant la même valeur de critère
    • de l'ordre de la liste des valeurs

Principe général
Dans le module Synthèse (= Observations), un utilisateur doit pouvoir sélectionner, via une liste déroulante intégrée à la carte, un critère pour lequel il souhaite visualiser un affichage différencié sur la carte. L'indication de la valeur du critère sélectionné pourra être également reprise au niveau de la liste des observations et sur la fiche d'une observation.

Sur la carte, nous envisageons d'utiliser dans un premier temps des couleurs distinctes pour identifier les différentes valeurs des critères sur la carte. La couleur peut en effet facilement être utilisée à la fois pour les points et les polygones. Si cela s'avère envisageable des icônes pourront être utilisées pour différencier les valeurs mais cela pose des problèmes pour les polygones. Au niveau de la liste des observations, un surlignage et/ou une icône peuvent être utilisés. Dans la fiche observation, une icône, une couleur et/ou un texte pourrait servir à la mise en évidence du critère.

Nous rendrons paramétrable :

  • l'activation de cette fonctionnalité
  • le choix des critères
  • l'attribution des couleurs aux valeurs des critères. Si possible nous proposerons également la possibilité de définir des icônes aux valeurs et pour chaque critère un niveau d'opacité et l'utilisation ou pas d'un contour.

Les critères envisagés sont :

  • précision (champ precision) : avant (précise) / après (approximative) un niveau de précision en mètre particulier.
  • période (champ date_max) : avant (ancienne) / après (récente) une année (= date) particulière. Une alternative serait un affichage différencié par décennie.
  • enjeux réglementaire (protection) : enjeu réglementaire (Oui) / pas d'enjeu réglementaire (Non)
  • menace (listes rouges) : enjeu de menace (Oui) / pas d’enjeu de menace (Non).

Mais les critères suivant ont également étaient mentionné dans les tickets du dépôt GeoNature :

  • type de l'observations (id_nomenclature_observation_status) : présence, absence.
  • statut de validation (id_nomenclature_valid_status) : douteuse, probable, certaine…

Exemple d'OpenObs
image

OpenObs permet de sélectionner des critères pour différencier les observations affichées sur la carte.
Une liste intitulée "Couleur par" permet de sélectionner le critère d'affichage des observations sur la carte. Toutes les observations sont représentées par des points dont la couleur correspond à une valeur du critère.

L'interface permet à l'utilisateur de définir la taille du point, sa transparence et l'affichage d'un contour ou pas.

La légende peut être affichée ou réduite pour prendre moins de place sur la carte. Il est également possible de sélectionner via des cases à cocher dans la légende les valeurs à afficher. Les critères proposés par OpenObs peuvent potentiellement contenir des dizaines de valeurs, la légende possède donc une liste déroulante.

Le critère "Grille de densité des enregistrements" correspond à l'actuel mode d'affichage "Mailles" de la carte de GeoNature.

image

Proposition d'implémentation
Nous envisageons de faire évoluer le mode d'affichage "Mailles" des données actuellement présent sur la carte.
D'un système de coche simple, nous le transformerions en liste de bouton radio permettant de sélectionner une entrée unique dans la liste qui s'ouvrirait. Le même fonctionnement que la sélection du fond cartographique sera utilisé ici.

La liste des modes d'affichage serait représentée par une icone représentant une liste indiquant "Mode d'affichage" au survol. Pour l'icône d'accès aux modes d'affichage, celui de Fontawesome représentant une liste fa-list peut convenir :
image
Mais une icône ressemblant à celle du Geoportail me semble plus expressive :
image

Via le paramètre de configuration SYNTHESE.MAP_CRITERIA_LIST, sur le même principe que l'ajout des fonds cartographiques, il sera possible d'ajouter de nouveaux éléments à la liste des modes d'affichage. Ce paramètre sera spécifique au module Synthese. Sa présence activera l'apparition de l'icône "modes d'affichage". Chaque critère d'affichage sera associé à un champ de la vue gn_synthese.v_synthese_for_web_app avec possibilité d'affecter une couleur en fonction d'une correspondance exacte (champs de nomenclatures ; exemples id_nomenclature_observation_status, id_nomenclature_valid_status) de sa valeur ou de son appartenance à une classe "numérique" (champs numérique ou assimilé, exemple precision, date_fin). La valeur du critère sera renvoyée par le backend via le web service unique de la Synthese. La coloration sur la carte sera gérée par Leaflet à l'aide des informations présentes dans le GeoJson.

La liste des modes d'affichage apparaîtra également sur la carte si le paramètre AREA_AGGREGATION_ENABLED est à true. Dans tous les cas, la liste contiendra une entrée nommée Défaut correspondant à l'affichage par défaut de GeoNature sous forme de cluster puis de cercle/polygone bleu représentant un emplacement d'une ou plusieurs observations. Cette entrée sera cochée par défaut sauf si le paramètre AREA_AGGREGATION_BY_DEFAULT est à true. Dans ce dernier cas, c'est l'entrée Mailles correspondant à l’agrégation des observations par mailles qui sera sélectionnée.

Concernant les critères "enjeux réglementaire" et "menaces" nous envisageons de rajouter des champs spécifiques à la vue gn_synthese.v_synthese_for_web_app dans le cadre de notre installation de GeoNature afin de les traiter sur le même principe qu'un champ de type classes.

Pour la liste des observations, nous proposons de colorer l'icône "i" de chaque observations en fonction du critère sélectionné.

Dans le cas des géométries regroupant des observations aux valeurs contradictoires vis à vis du critère proposé. Nous proposons dans un premier temps de les afficher à l'aide d'une couleur "neutre" (gris par exemple ; éventuellement configurable). Un clic sur la géométrie affichera la liste des observations surlignées en vert en tête de liste des observations où la couleur de l'icone "i" permettra de les distinguer les valeurs des différentes observations en fonction du critère sélectionné.

Au niveau de la fiche d'observation, nous testerons l'ajout au niveau de l'entête d'une icône colorée avec information apparaissant au survol.

Détail du paramètre SYNTHESE.MAP_CRITERIA_LIST
Ce paramètre sera une liste de dictionnaire où chaque dictionnaire correspondra à un critère. Pour chaque critère (= dictionnaire) nous aurons les champs suivants :

  • code (chaine) : code alphanumérique du critère utilisé pour identifier ce critère d'un point de vue technique. Ne devrait pas être utilisé pour l'affichage ou vis à vis de l'utilisateur. Devrait être unique dans la liste et devrait éviter de contenir des caractères spéciaux.
  • label (chaîne) : intitulé par défaut du critère à utiliser. Servira à l'affichage dans la liste des modes d'affichage.
  • type (chaîne) : le type de critère parmi : nomenclatures, classes. Le critère de type nomenclatures est à utiliser avec tous les champs field correspondant à une nomenclature ou à un champ texte pour lequel on veut réaliser une coloration en fonction d'une valeur précise. Le critère de type classes est à utiliser avec les champs de type numérique ou date pour lesquels on veut établir des classes numériques de valeurs.
  • field (chaîne) : le nom du champ présent dans la vue gn_synhtese.v_synthese_for_web_app à utiliser pour le critère.
  • activate (booléen, défaut : false) : indique si critère est à afficher (true) ou pas (false) dans la liste des modes d'affichage.
  • default (booléen, défaut : false) : indique si ce critère doit être utilisé par défaut (true) ou pas (false) comme mode d'affichage. Le premier critère à true trouvé dans la liste sera pris en compte.
  • values (liste de dictionnaire) : liste de dictionnaire correspondant aux valeurs possibles du critère. Chaque dictionnaire d'une valeur pourra contenir les champs :
    • value (liste de chaines | chaîne) : dans le cas du type nomenclature contiendra un code de la nomenclature, champ cd_nomenclature (Note : tester la possibilité de saisir plusieurs valeurs pour éviter la répétition des entrées avec la même couleur et les mêmes styles → cas de la liste de chaines). Dans le cas du type classes, il contiendra la valeur minimum de comparaison à utiliser vis à vis du contenu du champ field. Un objet sur la carte prendra la couleur correspondante si sa valeur dans le champ field est supérieure ou égale à la valeur indiquée. L'ordre des entrées de la liste values est important car la couleur est attribuée dès que l'opération de comparaison est vraie.
    • label (chaîne) : intitulé par défaut de la valeur. Servira à l'affichage dans la légende.
    • color (chaîne) : code hexadécimal de la couleur de la valeur. La valeur sera utilisée pour le style fillcolor.
    • icon (chaîne) : indiquer une icône à l'aide de son nom. Possibilité d'utiliser des icônes : Fontawsome, Angular Material ou personnalisé SVG (à tester). La pertinence de l'utilisation d'icône reste à déterminer.
    • styles (dictionnaire) : contient un dictionnaire des clés et valeurs de styles à utiliser en complément de la couleur de remplissage. Les styles disponibles sont ceux de l'option style de l'objet GeoJson de Leaflet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant