[fait] Clustering des pictos ?
Posté : 05 juin 2021, 16:48
Dans le cadre des remarques de Léo, j’ai regardé ce qu’on peut faire pour n’afficher qu’un picto « groupe » là ou les pictos unitaires sont trop denses.
Il y a 3 solutions :
- Le faire avec Openlayers dans l’explorateur.
La fonction ol.source.Cluster est là pour ça : https://openlayers.org/en/latest/examples/cluster.html
Problème : si on zoom sur le monde (ou une zone très large) le serveur mouline tous les points de la base et les envoie à l’explo qui les groupe. Voilà qui risque de faire ramer le serveur (et le réseau)
- Le faire en SQL dans le serveur
La fonction ST_ClusterWithin est là pour ça, avec un peu de post traitement pour transformer les GeometryColections générées pour un groupe de points en un picto « nombre »
L'avantage est de ne pas envoyer tous les pictos de la base quand le groupe est grand mais ça risque de ramer quand même un peu sur SQL car il rend des GeometryColections contenant tous les points groupés (ce qui n'arrive pas quand on met seulement un LIMIT = 250)
A noter que ClusterWithin existe en PgSql et pas en MySql
Pas mal, mais on risque d’augmenter la complexité la superfonction SQL d’extraction (à moins qu’on en profite pour la « casser » en fonctions plus petites ?
- Ne rien faire (ça énerve les )
Des avis avant que je me lance là-dedans ?
(j’aime pas PG)
Il y a 3 solutions :
- Le faire avec Openlayers dans l’explorateur.
La fonction ol.source.Cluster est là pour ça : https://openlayers.org/en/latest/examples/cluster.html
Problème : si on zoom sur le monde (ou une zone très large) le serveur mouline tous les points de la base et les envoie à l’explo qui les groupe. Voilà qui risque de faire ramer le serveur (et le réseau)
- Le faire en SQL dans le serveur
La fonction ST_ClusterWithin est là pour ça, avec un peu de post traitement pour transformer les GeometryColections générées pour un groupe de points en un picto « nombre »
L'avantage est de ne pas envoyer tous les pictos de la base quand le groupe est grand mais ça risque de ramer quand même un peu sur SQL car il rend des GeometryColections contenant tous les points groupés (ce qui n'arrive pas quand on met seulement un LIMIT = 250)
A noter que ClusterWithin existe en PgSql et pas en MySql
Pas mal, mais on risque d’augmenter la complexité la superfonction SQL d’extraction (à moins qu’on en profite pour la « casser » en fonctions plus petites ?
- Ne rien faire (ça énerve les )
Des avis avant que je me lance là-dedans ?
(j’aime pas PG)