Suite

Big data sets et challenges à l'aide du client Leaflet


J'utilise Leaflet pour présenter environ 90 000 points de données. Mon code de test est généré à l'aide du plugin QGIS2leaf dans QGIS 10.10.1. J'utilise le clustering et je révise le code, je peux voir qu'il s'agit de "leaflet.markercluster.js". En principe cela fonctionne bien.

Pour une utilisation pratique j'ai un problème de capacité. Le clustering fonctionne bien lors d'un zoom avant et arrière. Le problème est que cela prend environ 30 secondes avant que la carte n'apparaisse. Certains clients tombent même en panne.

La raison de cela semble être le transfert du fichier geojson (les outils de développement le confirment). Il est maintenant à 12 Mo contre 61 Mo. La suppression de toutes les données d'attribut a évidemment aidé certains.

Je pourrais probablement supprimer certains des nombres décimaux des coordonnées. Mais je ne gagnerais que quelques pour cent.

Comment puis-je peaufiner cela davantage :

  • Existe-t-il un moyen de transférer des fichiers geojson compressés vers le client (dépliant).
  • Le fichier geojson est principalement (70%) du texte répété. Existe-t-il un moyen de transférer les coordonnées et les attributs sans cette surcharge ?
  • Leaflet peut-il faire d'autres formats plus efficaces à cet égard ?

C'est le compromis entre le traitement des données côté client et côté serveur.

Vous pouvez essayer d'utiliser TopoJSON pour réduire la taille de votre fichier, mais c'est un peu difficile à exécuter et fonctionne mieux sur les polygones, y compris la simplification.

Je pense que vous feriez mieux d'utiliser une plate-forme de serveur. CartoDB est gratuit pour une petite utilisation comme celle-ci, et il a d'autres avantages comme une visualisation et un style sophistiqués et une API SQL impressionnante.

J'ai construit une visualisation à l'aide de CartoDB et Leaflet qui gère un grand nombre de points ici. J'avais voulu utiliser le clustering JSON et Leaflet, mais l'ensemble de données était trop volumineux. Ma règle d'or est supérieure à ~1,5 Mo et vous ne voulez plus le télécharger côté client !

Si vous avez l'intention de le faire vous-même, essayez TileJSON. Je n'ai pas essayé de le faire fonctionner et vous avez toujours besoin d'un traitement côté serveur.


Qgis2web peut minimiser le GeoJSON. Cela vous gagnera un peu. Cela peut également réduire la précision de la géométrie - le nombre de décimales (comme qgis2leaf peut le faire).

Modifier : qgis2web prend également en charge la visibilité en fonction de l'échelle. Cela pourrait-il aider?


MarkerCluster est limité à 50.000 points , au-delà, le Leaflet Client va ralentir et le navigateur peut planter.

le propriétaire de Leaflet a développé une solution appelée Superamas, qui peut regrouper des millions de points , c'est une solution côté serveur avec node.js et côté client dans MapBox.

vous pouvez lire sur cette solution ici

si vous n'êtes pas familier avec node.js, vous pouvez voir ici et ici comment vous l'utilisez Superamas .