Frage

SpatialKey erzeugt ein paar wirklich gut aussehenden Heatmaps, und wir suchen in dem, was in dies zu tun für ein beteiligt ist internes Projekt große Mengen an Punkten zu visualisieren. Ich bin auf der Suche nach Feedback auf einigen Ideen auf, wo zu beginnen (und es ist nur ein wirklich interessantes Problem).

SpatialKey Heatmap http://img697.imageshack.us/img697/7964/resolutiondays508x17550. jpg

Wir wissen, dass sie Flash-verwenden, und von dem, was wir sagen können, die Heatmaps sind interaktiv, anstatt von einem Kachel-Server gerendert. Unsere erste Vermutung, wie dies umgesetzt wird, ist, dass der Server des Flash-Client mit einem Raster bietet - jede Zelle eine Zählung durch den Server berechnet hat. Der Flash-Client dann nicht einige Interpolation auf die Zellenwerte im Raster basierend auf den hübschen Ausgabe sehen Sie oben zu machen.

In diesem Stadium bin ich nur daran interessiert, wie sie das Gitter effizient serverseitige möglicherweise erzeugen könnte (wenn unsere Annahme, auf deren Umsetzung auch richtig ist). Es scheint, dass es würde bedeuten:

  1. Ausführen einer Abfrage für das, was zur Zeit in Kartengrenzen
  2. Durchführen einer Aggregationsunterabfrage für jede Zelle innerhalb dieser Grenzen (dabei eine Anzahl, Summe oder Durchschnitt, wie im Beispiel oben).

Werfen dies zu tun in mehreren Zoomstufen bei einer vernünftigen Rasterauflösung und es scheint, wie Sie einen benutzerdefinierten räumlichen Index benötigen würden, um diese effizienter zu machen.

Jeder Abnehmer auf zu erklären, eine alternative Route? Wenn es darauf ankommt, sind wir daran gewöhnt, hier unsere Daten in PostgreSQL mit PostGIS für den räumlichen Index zu speichern, aber ich bin offen für alles versuchen.

War es hilfreich?

Lösung

Wie nur eine Vermutung, ich könnte mir vorstellen, sie eine GIS-Bibliothek in Flash in der Client-Seite implementiert haben und verwenden diese geografische Breite und Länge zu projizieren ein Pixel Raumkoordinaten in. Dann aggregieren sie für Pixel die „Höhe“ jedes Pixels zu bestimmen und machen es so wie du einen Kreis machen würde, aber ein Gradient füllen mit einer Transparenz verwenden, mit dem Start- und End-Farben des Verlaufsfüllung durch die Höhe der bestimmt Pixel. Mehrere Kreise überlagert auf der jeweils anderen wird heller Pixel erstellen.

Eine Alternative könnte sein, dies in einem Graustufen zu tun, dann den Helligkeitswert auf einer Farbskala abzubilden. Das könnte am effizientesten ist.

Wir verkaufen die traditionellere treemap Heatmaps für die Integration in Visual Analytics-Anwendungen (zB: Heatmap SDK) und haben nun geografische Heatmap, die Bereiche zu kolorieren. Wir lesen Standard ESRI-Shape-Datei Karten und alles tun, um den Vorsprung und Rendering auf der Client-Seite (in Java, Flash nicht, aber gleiches Konzept). Ich denke, SpatialKey ist das gleiche zu tun, da sie flächen gefüllt Rendering unterstützen, die nicht wirklich getan werden kann, wenn man eine Kachel-Server wie Google Maps verwenden.

Wir sind noch nicht tun wie folgt Dichte Heatmaps, aber haben ein paar Tests mit statischen Bildern als Hintergrund ausgeführt werden. Wenn Sie weitere Informationen wünschen, lassen Sie mich wissen, und ich kann meine Entwickler fragen, wie wir es getan haben. Ich weiß, wir sind derzeit in der Entwicklung auf mehr Punkt-basierten Funktionen, obwohl ich weiß nicht, wo Dichte Heatmap noch auf dem Zeitplan ist.

SpatialKey gerade geschrieben haben eigentlich einen guten Beitrag auf dem Unterschied zwischen Bereich gefüllten Wärmekarten (dh: thematische Karten) und Dichte Heat Maps. Sie können es heraus unter http: // blog. spatialkey.com/2010/02/comparing-thematic-maps-with-density-heatmaps/ .

Wenn Sie eine gute Art und Weise Dichte Heatmap zu tun, herauszufinden, zu tun, ich interessiert wäre zu lernen, wie Sie es getan haben, als es eine wertvolle Ergänzung zu unserem Visual Analytics SDK wäre. Viel Glück.

Andere Tipps

MapReduce für die tatsächliche Gesamt Karte Summen, und etwas mit Geospatial Indizierung für die Datenbank - diese MapReduce Jobs zu füttern. Ich suche in diesen exakt gleichen Ansatz der Umsetzung, sondern auch für Schnittstellen statt Karten :) MongoDB scheint eine gute Passform im Moment zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top