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

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

Open
jpm-cbna opened this issue Oct 16, 2020 · 5 comments
Open

Comments

@jpm-cbna
Copy link
Contributor

jpm-cbna commented Oct 16, 2020

Objectifs

  • clarifier l'affichage de la répartition des observations sur la carte de la synthèse à petite échelle,
  • supprimer la limite des 50 000 observations affichable sur la synthèse,
  • fournir une solution pour l'affichage des données géo-confidentielles floutées

Comportements

Pour répondre à ces objectifs, l'idée est de remplacer l'affichage par cluster des observations sur la carte à petite échelle par une affichage sous forme de mailles (type de mailles 1, 5 ou 10 paramétrable).
Par défaut, la carte de la Synthèse affichera l'ensemble des observations sous forme de mailles dont la coloration correspondra au nombre d'observations inclues dans la maille.
Un bouton sur la carte permettra d'afficher la légende (dynamique) correspondante.
Sur la droite, la liste des taxons, affichera l’ensemble des observations correspondant aux observations affichées sur la carte mais seule les données de la page courante seront récupérées côté client. Cela permettra à petite échelle d'afficher une liste de plusieurs millions d'observations tout en affichant que les X premières.
Si l'on zoome sur la carte ou que l'on se déplace sur la carte, les observations correspondant à la bounding-box courante sont récupérées. Cela nécessitera surement 2 web services distincts. Un pour récupérer le geojson pour la carte, l'autre pour récupérer les données paginées (côté serveur) pour la liste des taxons.
À partir d'un certain niveau de zoom (paramètre de config), il sera possible de basculer l'affichage de la carte sous forme point. Le clic sur un point sélectionnera l'observation correspondante dans la liste des taxons en la surlignant en vert comme actuellement.

Un clic sur une maille provoquera le zoom sur la maille et donc le passage à l'affichage sous forme de points du contenu de la maille. C'est l'équivalant du clic sur un cluster actuel.

Le comportement du formulaire de recherche reste inchangé. Il réalise un filtrage des observations affichées. Comme actuellement, la carte se centrera automatiquement sur les observations sélectionnées. Cela peut donc provoquer un affichage direct à grande échelle et donc avec un affichage par points . En dézoomant, au lieu que des clusters se forment, nous afficherons la ou les mailles correspondant aux observations filtrées.

Concernant le bouton "Téléchargement", il aura par défaut, le même comportement qu'aujourd'jui en exportant l'ensembles des données filtrées. Nous pourrons éventuellement (non prioritaire) lui adjoindre un option en exportant seulement les observations actuellement visibles sur la carte. Ces deux exports pourront être limités à un nombre maxi d'observations (paramètre de config).
La géométrie exportée dépendra des droits de l'utilisateur. Si l'observation est floutée (car privée et/ou sensible), c'est sa géométrie floutée qui sera exportée.

Concernant la représentation des données géo-confidentielles (sensibles et/ou privées) floutées, l'idée est de proposer leur affichage uniquement dans la liste des taxons lorsque leur géométrie floutée intersecte la bouding-box de la zone géographique visible sur la carte. Les lignes de la liste correspondant aux observations sensibles floutées pourraient, pour accéder aux informations détaillées, posséder un icône composé d'un bouclier et du "i" d'information. Les lignes correspondant aux observations privées floutées sur le même principe auraient un icône composé d'un cadenas et du "i" d'information. Les observations non géo-confidentielles garderaient l'icône actuelle de "i" blanc dans un cercle.

Enfin, il est aussi possible de mettre un fond coloré pour la ligne complète ou peute être seulement sur la cellule contenant l'icône d'accès aux détails de l'observation. Par exemple, rose pastel pour les données sensibles et violet pastel pour les données privées. Sur le même principe, les données non validées pourraient apparaître sur fond blanc, alors que les données validées seraient colorées sur le même principe que les couleurs du statut de l'observation dans le module Validation.
Une info-bulle sur ces icônes indiquera "Accéder aux informations détaillées de l'observation <floutée sensible|floutée privée> <validée <douteuse|probable|certaine>|NON validée> d'identifiant #.".

Questions

Comment gérons nous l'affichage sur la carte si un trop grand nombre d'observations sont à affichés lorsqu'on bascule en mode point ?

  • Réactivation des clusters ? Un nouveau niveau de mailles plus fines ?

Comment gérons nous le cas où plusieurs observations sont à représenter sur le même point ?

  • Actuellement le système de cluster résoud le problème en affichant, les observations sous forme d'étoile ou de spirale.

Exemples d'icones

sensibility
private

@jpm-cbna
Copy link
Contributor Author

jpm-cbna commented Oct 19, 2020

Si vous en connaissez d'autres pertinent pour la synthèse, n'hésitez pas à les indiquer.

@jbdesbas
Copy link
Contributor

Salut,
Sans trop m'avancer, pour afficher et styliser un grand nombre de points (plusieurs centaines de milliers) sans tuer le client, il peut être pertinent de passer par des tuiles vecteurs.
Coté client : https://github.com/Leaflet/Leaflet.VectorGrid
Coté serveur : https://postgis.net/docs/ST_AsMVT.html

Aperçu (avec MapBox GL) : https://github.com/mapbox/geojson-vt

@camillemonchicourt
Copy link
Member

Oui au niveau de Geotrek-admin, on est en train de passer sur des tuiles vectorielles car les vecteurs côté client devenaient trop volumineux, lourd à charger et manipuler. Voir cette présentation : https://docs.google.com/presentation/d/e/2PACX-1vRbtjrdl8BEVK_ULFiw_jf1f9qO94n1TlkNxyVq9pdcrL5MogVTXqEf9NICSAY9j_lkxw5StTJkzvzL/pub?slide=id.g63da1a4385_0_0

Concernant l'affichage des données sous forme de maille à petite échelle puis de points quand on passe à un certain niveau de zoom, c'est intéressant, néanmoins quelques réserves/questions sur la méthode proposée :

  • Les mailles seront colorées selon le nombre de données qu'elles contiennent. Au survol ou clic (droit ?) sur une maille, cela peut être utile d'afficher la valeur exacte du nombre d'observations dans la maille. Et les espèces observées dans la maille ?
  • A petite échelle, si on affiche les données à un niveau de maille paramétré à 5km par exemple, mais que certaines données sensibles ont un niveau de diffusion défini à 10 km par exemple, alors on aura des mailles de différente échelle.
  • Si la liste des résultats est paginée côté serveur, alors on perd les interactions Carte > Liste
  • Dans tous les cas à petite échelle, si on affiche les observations sous forme de maille, alors on n'aura plus d'interaction Carte > Liste. Pour les recherches simples avec peu d'observations, il était intéressant de pouvoir identifier rapidement une observation à n'importe quel niveau de zoom, cela ne sera plus possible
  • Si j'ai compris, la liste sera paginée côté serveur à petite échelle en mode maille, mais ne le sera plus à grande échelle en mode point pour bénéficier à ce niveau des interaction Carte > Liste. Ça risque de faire des comportements différents, donc complexe techniquement, mais aussi complexe à comprendre pour l'utilisateur
  • Il est proposé de paginer la carte côté serveur et que la recherche soit relancée à chaque fois quand on zoome ou qu'on se déplace dans la carte. Intéressant mais si la recherche est complexe (attributs, zonage géographique...) et que la recherche est lourde à chaque zoom ou déplacement, cela peut être contre-productif ou très peu fluide à l'usage
  • Si la liste de résultats est filtrée en fonction de la zone de la carte affichée, alors cela devient un filtre, donc je pense qu'il faut que le téléchargement soit en cohérence, et contienne les mêmes observations que la liste. Je ne suis pas sur que la zone de la carte doit servir de filtre.
  • Quand on passe en mode point, je resterai de base sur le cluster, mais laisserai la possibilité de basculer en mode point classique. Comme ça on est sur de bien indiquer quand plusieurs points se superposent, mais on laisse la possibilité d'afficher en point classique pour ceux qui le souhaitent, ces 2 modes d'affichage des points étant complémentaires. Celui en cluster restant le plus juste et le moins gourmand en ressource, par défaut.
  • Quand on passe au niveau point, si il y a des données floutées, alors je pense qu'il faut continuer à les afficher sur la carte, sous les points, comme des polygones. Sinon on va avoir des données dans certaine zones, et en zoomant elles vont disparaître et il n'y a plus rien dans la zone concernée, mais elles seront encore sur la carte, cela va poser des problèmes de cohérence et de compréhension des données et du fonctionnement
  • C'est un fonctionnement assez complexe, avec des principes différents selon le niveau de zoom et je crains que cela soit peu compréhensible/intuitif pour l'utilisateur, sans mode d'emploi. A voir si cela peut être simplifié, homogénéisé.
  • OK pour le floutage des données sensibles ou privées ne soit fait que sur des mailles. Actuellement le standard sensibilité du SINP prévoit aussi des niveaux de diffusion à la commune ou au département, mais ils souhaitaient les limiter à des mailles pour simplifier la gestion et l'affichage. Donc on peut anticiper en ce sens.

Pour les données floutées, en lien avec #877

@jpanijel
Copy link

jpanijel commented Nov 2, 2020

Petite précision concernant DEPOBIO et le SINP : Les données d'origine privée ne doivent plus être floutées normalement car la législation est très claire sur ce point: l'ensemble des données intégrant une base publique sont publiques.
Il faut donc adapter les plateformes sur cette question et prévoir un paramètre qui permettrait de ne pas prendre en compte le floutage des données privées. Il est de la responsabilité des administrateurs de respecter la législation sur la diffusion des données.

@okristo
Copy link

okristo commented Jan 17, 2022

Objectifs
• clarifier l'affichage de la répartition des observations sur la carte de la synthèse à petite échelle,
• supprimer la limite des 50 000 observations affichées et téléchargées sur la synthèse (tout en maintenant le paramétrage possible),

1ère étape (prévue pour début 2022, développements CBNA)

  • Remplacer l’affichage par cluster par un affichage par maille (1, 5 ou 10km, paramétrable)
    Les données sensibles et les données privées floutées sont rattachées aux mailles d’affichage via leur centroïde (puisqu’elles peuvent être plus grandes que la maille d’affichage choisie).
  • Tableau de résultats inchangés : le tableau de résultats affiche les résultats de la requête dans la limite de 50 000 données et le téléchargement est réalisé sur les résultats de la requête
  • Le clic sur une maille ne sélectionnera pas les résultats dans le tableau de résultats
  • Coloration des mailles en fonction du nombre de données : à tester (peu pertinent du fait du maintien de la limite de 50 000 données). Affichage de la légende (bouton)
  • Basculement de l’affichage par maille à l’affichage par cluster en fonction d’un niveau de zoom paramétrable. Le niveau de zoom de basculement d’un affichage à l’autre doit correspondre au niveau où la maille remplit l’écran.

Etapes suivantes (à chiffrer et à planifier)

  • Supprimer la limite de 50 000 données. Pistes envisagées :
    o Pagination côté serveur et affichage des x premières lignes uniquement côté client (liste des observations dans le tableau de résultats)
    o Affichage par maille obligatoire à petite échelle
    o En mode affichage par clusters, ne renvoyer côté client que les données de la carte affichée à l’écran (bounding-box)
    o Ces changements vont certainement nécessiter d’utiliser des webservices distincts pour l’affichage des données sur la carte, la liste des observations (tableau de résultats à droite) et pour le téléchargement.
  • A grande échelle, offrir la possibilité d’afficher des points plutôt que des clusters (à grande échelle) via un bouton. L’affichage par cluster reste l’affichage par défaut (permet de mettre en évidence des points qui se superposent) mais l’utilisateur peut cliquer sur un bouton pour basculer en mode « points ». Pour les données de type « relevé » (une même géométrie, un même identifiant relevé), possibilité d’afficher la liste des observations du relevé dans une fenêtre modale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

5 participants