Bei Verwendung von Leaflet zur Visualisierung eines großen Datensatzes (GeoJSON mit 10.000-Punkt-Features) ist es nicht überraschend, dass der Browser abstürzt oder hängen bleibt. Eine Teilstichprobe von 1000 Features aus demselben Datensatz funktioniert einwandfrei. Leider kann ich den Datensatz nicht für andere zum Ausprobieren freigeben.
Hat jemand bessere Lösungen für die Visualisierung so großer Datensätze? (Letztendlich soll dies auf 2 Millionen Funktionen skaliert werden.) Ich bin sogar bereit, Offline-Visualisierungs-Frameworks in Betracht zu ziehen, falls browserbasierte Alternativen wie Polymaps oder d3.js usw. als unfähig erachtet werden.
Bearbeiten: Vergessen zu erwähnen, der Benutzer muss in der Lage sein, den Datensatz nach Attributen zu filtern. Also aus N verfügt, nur noch die passenden n <= N Möglicherweise müssen Funktionen dynamisch gerendert werden.
Antworten:
Ich bin Flugblattautor. Es gibt ein großartiges Clustering-Plugin, Leaflet.markercluster . Es ist sehr schnell und effizient (siehe Beispiel mit 50.000 Markern), sieht aus und funktioniert sehr reibungslos mit netten Animationen und hat viele Optionen, die Ihren Bedürfnissen entsprechen.
quelle
PruneCluster
sieht vielversprechend aus .Sie können TileMill verwenden und Punkte als Rasterbilder rendern, mit schneller Interaktivität von UTFGrid . Es skaliert auf Millionen von Punkten und Polygonen wie diese Volkszählungskarte , da es auf intelligente Weise nur die Daten sendet, die für bestimmte Bereiche benötigt werden, genau dann, wenn sie benötigt werden.
Soweit ich weiß, gibt es keine anderen schnellen Methoden, um dies zu tun, als einen sehr schnellen WFS-Server, der für viele Betrachter schwierig zu warten / zu skalieren ist.
Disclosure: arbeite für MapBox , habe ziemlich viel Code geschrieben. Aber TileMill ist kostenlos / Open Source usw.
quelle
Haben Sie in den Merkblatt-Clusterer geschaut? Ein Blogbeitrag des Autors beschreibt ihn hier
Eine weitere Option, die einen Blick wert ist, kann die Verwendung von Broschüren in Kombination mit GIS Cloud sein . Schauen Sie sich diese Demo an, um zu sehen, wie schnell viele Geometrien verarbeitet werden. Sehr beeindruckend. Ich bin in keiner Weise mit GISCloud verbunden.
quelle
Sie sollten niemals Millionen von Punkten auf einer Karte anzeigen. Nicht nur wegen der großen Leistungsprobleme, sondern auch aus Anwendersicht, denn für sie wird es mit Sicherheit schwierig sein, diese Daten zu interpretieren. Verwenden Sie eine Methode zum Aggregieren der Daten (Gruppieren, Aggregieren zu Polygonbereichen usw.) in Kombination mit verschiedenen Darstellungsarten bei verschiedenen Zoomstufen (z. B. zeigen Sie die "Roh" -Punktdaten nur bei sehr hohen Zoomstufen an und verwenden Sie aggregierte Daten an anderer Stelle). Ein Beispiel wäre eine Immobilienseite wie zillow.com .
quelle
Ich schlage vor, dass Sie die gerenderte Menge an Punktfeatures reduzieren: Das menschliche Auge kann 10.000 Punkte nicht sehen, ganz zu schweigen von 2.000.000.
Sie könnten versuchen, den Datensatz dynamisch von einem benutzerdefinierten Server anzufordern (den Sie einrichten müssten), z
Ihr Server würde dann berechnen, welche Punkte zurückgegeben werden sollen, je nachdem, was der Benutzer gerade sehen möchte. Abhängig von Zoomfaktor und Clipping müssen Sie nur einen sehr kleinen Prozentsatz der Punkte zurückgeben, ohne die Benutzererfahrung zu beeinträchtigen.
Nachteile: Einrichten eines Servers (Sie sollten Bibliotheken zum Filtern der Geopunkte finden) und langsameres Rendern (nach jedem Zoomen oder Ziehen muss eine Serveranfrage gestellt werden)
quelle
Ich hatte Lösungen, um 50 bis 100 Millionen Datensätze abzubilden. Sie müssen serverseitige Lösungen verwenden, um Raster- und dynamische Datensätze zu erstellen. Sie können nicht auf Webkarten-APIs (Google oder andere) antworten, um das Rendering auf der Clientseite durchzuführen.
[http://96.231.36.9:8080/rbgis/google_map.html[1] Probieren Sie die obigen Links aus und sehen Sie, wie
quelle