Lorsque vous utilisez Leaflet pour visualiser un jeu de données volumineux (GeoJSON avec 10 000 entités ponctuelles), le navigateur se bloque ou se bloque. Un sous-échantillon de 1000 entités du même jeu de données fonctionne parfaitement. Malheureusement, je ne peux pas partager le jeu de données pour que les autres puissent l'essayer.
Quelqu'un a-t-il de meilleures solutions pour visualiser des jeux de données aussi volumineux? (Le but ultime est de faire passer cela à 2 millions de fonctionnalités.) Je suis même prêt à envisager des cadres de visualisation hors ligne au cas où des alternatives basées sur un navigateur, telles que Polymaps ou d3.js, etc., seraient considérées comme étant incapables.
Edit: oublié de mentionner, l'utilisateur doit pouvoir filtrer le jeu de données par attributs. Donc, sur N entités, seules les entités n <= N correspondantes peuvent nécessiter un rendu dynamique.
Réponses:
Je suis l'auteur de Leaflet. Il existe un plugin de clustering génial pour cela, Leaflet.markercluster . Il est très rapide et efficace (regardez l'exemple des marqueurs 50k), semble et fonctionne très bien avec de jolies animations et offre de nombreuses options pour répondre à vos besoins.
la source
PruneCluster
Semble également prometteur.Vous pouvez utiliser TileMill et rendre des points en tant qu'images raster, avec une interactivité rapide à partir de UTFGrid . Comme sur cette carte de recensement , elle évolue en millions de points et en polygones, car elle envoie intelligemment uniquement les données nécessaires pour des zones spécifiques, au moment opportun.
Autant que je sache, il n’existe d’autres méthodes rapides pour le faire que celle d’un serveur WFS très rapide, qui est plutôt difficile à maintenir / à mettre à l’échelle pour de nombreux téléspectateurs.
Divulgation: travail pour MapBox , écrit un peu du code. Mais TileMill est libre / open source, etc.
la source
Avez-vous regardé dans le clusterer de tracts? Un article de blog de l'auteur le décrit ici
Une autre option qui mérite d'être examinée consiste peut-être à utiliser la brochure en association avec GIS Cloud . Jetez un coup d'œil à cette démo pour voir qu'elle gère très rapidement beaucoup de géométries. Très impressionnant. Je ne suis en aucun cas affilié à GISCloud.
la source
Vous ne devriez jamais afficher des millions de points sur une carte. Non seulement à cause des problèmes de performances majeurs, mais aussi du point de vue de l'utilisateur car il sera très certainement difficile d'interpréter ces données. Utilisez des moyens d’agrégation des données (regroupement, agrégation sur des surfaces surfaciques, etc.) associés à différents types d’affichage à différents niveaux de zoom (par exemple, affichez les données ponctuelles «brutes» uniquement sur des niveaux de zoom très élevés et utilisez des données agrégées partout ailleurs. Un exemple serait un site immobilier tel que zillow.com .
la source
Je vous suggère de réduire le nombre de traits rendus: L'œil humain ne pourra pas voir 10 000 points, sans parler de 2 000 000.
Ce que vous pouvez essayer est de demander dynamiquement le jeu de données à un serveur personnalisé (que vous devez configurer), par exemple:
Votre serveur calculera ensuite les points à renvoyer, en fonction de ce que l'utilisateur souhaite voir maintenant. En fonction du facteur de zoom et du découpage, il vous suffira de renvoyer un très petit pourcentage de points sans détériorer l'expérience utilisateur.
Inconvénients: configuration d'un serveur (vous devriez trouver des bibliothèques pour filtrer les points géographiques) et un rendu plus lent (après chaque zoom ou glissement, une requête du serveur doit être faite)
la source
J'avais des solutions pour cartographier de 50 à 100 millions d'enregistrements. Vous devez utiliser des solutions côté serveur pour effectuer une grille et une dynamique. Vous ne pouvez pas répondre sur les API de carte Web (Google ou autres) pour effectuer le rendu côté client ....
[http://96.231.36.9:8080/rbgis/google_map.html][1] essayez les liens ci-dessus et voyez comment
la source