Erstellen einer Polylinien-basierten „Heatmap“ aus GPS-Tracks?


30

Diesen Winter plane ich, meine Abfahrten / Snowboarden mit einem GPS zu verfolgen. Die meisten meiner Fahrten werden im selben Resort stattfinden. Ich möchte in der Lage sein, eine Art "Heatmap" zu erstellen, die die Anzahl der Läufe anzeigt, die ich in einem bestimmten Gebiet gemacht habe. Während ich meiner Datenbank immer mehr GPS-Spuren hinzufüge, möchte ich eine Art lineare Heatmap der am meisten bereisten Gebiete sehen. Angesichts der Natur des Abfahrtskifahrens ist zu erwarten, dass die Sesselliftlinien die "heißesten" sein werden, da sie die einzigen Orte sind, die immer wieder besucht werden.

Angesichts der Tatsache, dass 1) meine Strecke nicht jedes Mal dieselbe ist und 2) die Fläche, die nach einem "Lauf" zurückgelegt wird, ein paar hundert Fuß breit sein kann, könnte dies der beste Weg sein, diese "linearen" Daten zu analysieren, um eine Sortierung zu erstellen der Heatmap? Meine Gedanken waren, die Linien zu puffern und dann die Polys zu kreuzen, um eine Art Venn-Diagramm in Gang zu bringen. Ich bevorzuge Open-Source-Technologien. Ich habe QGIS und PostGIS geladen und verfügbar.

UPDATE : In Bezug auf die Antwort von @ blah238 habe ich über etwas nachgedacht, das möglicherweise die Anzahl der Durchgänge ("Runs") durch einen Bereich "sammeln" und dann durch die Zählung symbolisieren kann. Konzeptionell ähnelt dies ArcGIS " Ereignisse sammeln " (jedoch nicht für Punkte, sondern für Linien) oder " Doppelte Linien zur Mittellinie reduzieren" (jedoch für mehrere Linien in ungefähr demselben Bereich).

Ein anschaulicheres Beispiel für ein ähnliches Konzept könnte eine Verkehrsflusskarte sein, auf der stark überlastete Gebiete mit stark befahrenen Pisten / Gebieten gleichgesetzt werden:

Google Traffic Map

Ich habe die folgenden Fragen gelesen, die vielleicht einige Ideen enthalten, aber nicht wirklich das ansprechen, was ich erreichen möchte:

Clustering Trajectories (GPS-Daten von (x, y) Punkten) und Mining der Daten

Verwalten von Fehlern mit GPS-Routen (theoretischer Rahmen?)


Unter der Annahme, dass Sie GPX-Daten verwenden würden, sollten nur in Abständen Lat / Long-Messwerte erfasst werden, sodass es sich bereits um Punkt-Features handeln sollte. Könnten Sie dann keine Heatmap dazu verwenden? Oder verwenden Sie kein GPX-kompatibles Gerät?
RomaH

Ah, ähm. Ich habe falsch verstanden, was Sie wollten.
RomaH

@RomaH, tatsächlich sind Sie vielleicht auf dem richtigen Weg, die Punkte zu verwenden, um eine Heatmap zu generieren, anstatt die Linien zu verwenden. Ich hatte vorher nicht daran gedacht, die Quellpunkte zu verwenden, daher werde ich dies auf jeden Fall untersuchen.
RyanDalton

Sie haben es mit einem Feld zu tun, bei dem eine Straße genau definierte Kanten hat. Wenn Sie ein Linienmodell erstellen möchten, können Sie mehrere Poly-Overlays und Joins erstellen und mit dem point2one-Plugin eine Linienzuordnung mit geerbten Werten erstellen. Aber dann müssen Sie entscheiden, in welcher Entfernung Sie fahren müssen, um eine neue Linienfunktion zu rechtfertigen. Persönlich würde ich mich über eine Heatmap-Lösung freuen, aber auch hier sind mir Ihre Bedürfnisse nicht bekannt.
RomaH

Ich bin über diese Frage gestolpert , die eine sehr coole Möglichkeit ist, im Wesentlichen dasselbe zu erreichen, aber die GPS-Trackpunkte zu verwenden, um die Heatmap zu erstellen.
RyanDalton

Antworten:


17

Ich habe in GeoTools / GeoServer ein bisschen daran gearbeitet, indem ich die Heatmap-Rendering-Transformation so erweitert habe, dass sie andere Geometrien als Punkte unterstützt.

Pizza liefert Heatmap

Es ist noch nicht fertig, aber Sie können den Feature-Zweig aus meinem Repository auf GitHub herunterladen .

Der Screenshot zeigt GPS-Tracks aus meiner Zeit als Pizzaboten.


Es werden immer noch keine Vektorgeometrien ausgegeben, aber es werden Überlappungen gesammelt, um einen höheren Wert zu erhalten.
Smithkm

irgendwelche ideen wie man diesen effekt mit nur postgis bekommt? oder qgis?
Chrismarx

15

Hier ist ein gutes Tutorial, um genau das mit MapBox und TileMill zu tun :

Bildschirmfoto


1
Einverstanden ist dieses Konzept nahezu identisch und kann problemlos in jedem GIS durchgeführt werden. Aber das bedeutet im Grunde, dass Sie "nur alle Ihre Tracks mit einem hellgrünen Puffer rot machen" und sie auf der Karte hervorstechen werden? Für den visuellen Effekt werde ich auf jeden Fall arbeiten. Ich denke, ich habe ursprünglich darüber nachgedacht, nach etwas "Analytischerem" zu suchen, das in diesem Beispiel "Zählungen" von "Läufen" zeigen könnte. Ich werde weiter darüber nachdenken.
RyanDalton

@ blah238 Ich habe ein ähnliches Beispiel gesucht ... vielen Dank !!
Sonntag,

1
@ blah238, Nachdem du ein bisschen länger darüber nachgedacht hast, hast du eine sehr gültige Antwort auf meine erste Frage gegeben. Ich hätte klarer über meine Gedanken nachdenken sollen. Vielen Dank für Ihre Antwort. Ich habe meine Frage aktualisiert, um genauer darzustellen, was ich erreichen wollte. Ich schätze die Hilfe.
RyanDalton

5

Hier ist mein einfacher Ansatz:

  1. erstelle eine neue map in umap: http://umap.openstreetmap.fr/en
  2. Klicken Sie auf Daten importieren. Wählen Sie alle vorhandenen GPX-Dateien aus und laden Sie sie in die Karte hoch. (Sie können alle auf einmal importieren.)
  3. Geben Sie Edit map settings> Default properties ein und wählen Sie opacity 0.25, weight 10.

Die drei obigen Schritte dauern 5 Minuten und hier ist das Ergebnis: Bildbeschreibung hier eingeben


3

Hier ist mein Ansatz zu QGIS. Dies galt für eine Reihe von Buslinien, und ich wollte herausfinden, auf welchen Straßen die meisten Buslinien verkehren.

  • Mit dem Qchainage-Plugin können meine Linien in Punkte umgewandelt werden. Testete verschiedene Szenarien, bis ich viele Punkte pro Linie produzierte (1.500 pro Linie und Linien waren ungefähr 9 km).
  • Wendet das von Qgis in der Registerkarte "Stil" integrierte Rendering der Heatmap-Symbologie an. Ebeneneigenschaften> Stil> Heatmap
  • Spiel mit dem Radius und dem Maximalwert. Stellen Sie sicher, dass Sie die beste Wiedergabequalität auswählen.
  • Erstellt eine neue Farbrampe (wählen Sie kontinuierlich) ausgehend von Schwarz und jeder anderen hellen Farbe auf der anderen Seite.

Und voilà.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


2

Mir ist klar, dass dies ein ziemlich alter Beitrag ist, aber ich bin auf ihn gestoßen, als ich ähnliche Untersuchungen anstellte. Ich habe ein ziemlich einfaches Modell / Workflow entwickelt, das genau dies in ArcGIS ausführen kann (möglicherweise QGIS, aber ich habe es dort noch nicht implementiert).

Wenn Sie speziell über eine GPX- oder TCX-Datei verfügen (eine beliebige Punktdatei funktioniert jedoch), kann diese einfach in Excel geöffnet, in eine CSV-Datei konvertiert und in ArcGIS gebracht werden. Mit dem Points to LineTool wandeln Sie die GPS-Punkte aus der CSV in Flugbahnen um, indem Sie die Punkte nach der Zeit sortieren (Sie können sie auch mithilfe einer eindeutigen Kennung gruppieren, in diesem Fall anhand des Resorts, der Route oder eines bestimmten Datums des Ereignisses - zB Tag 1, 2 usw.). Dadurch wird eine einzelne Polylinienebene erstellt (es sei denn, Sie gruppieren sie nach der eindeutigen ID). Anschließend verwenden Sie das Split Line at VerticesWerkzeug, mit dem Liniensegmente zwischen den einzelnen aufeinander folgenden Punkten erstellt werden. Von dort aus verwenden Sie das Line DensityTool, das die Anzahl der Linien zählt, die bei einer bestimmten Zellengröße und einem bestimmten Suchradius durch eine Zelle verlaufen, und ein Raster ausgibt. Dieses Raster kann als Heatmap symbolisiert werden.

Ich habe dies häufig implementiert und füge unten ein Beispielergebnis hinzu:

Bildbeschreibung hier eingeben


Das sieht nach einer wirklich interessanten Technik aus. Ich habe diese Idee nie fertiggestellt, daher werde ich dies weiter untersuchen. Vielen Dank für die Beantwortung einer alten Frage!
RyanDalton

Kein Problem! Es ist ein ziemlich einfaches Modell, das nur diese drei Werkzeuge aus der Arc Toolbox verwendet. Alternativ können Sie es weiter zu zwei Werkzeuge vereinfachen nur die Verwendung Track Intervals to Lineund die Line DensityWerkzeuge
Andrew-ryan

1

Wir verwenden dies, um die Schüler mithilfe von PGRouting zu ihrer Schule zu leiten.

Die Ergebnisse einer einzelnen Route sind in ihrem Kern eine Reihe von Knoten (die durch optionales Verbinden der zugehörigen Kanten in Linien umgewandelt werden).

Wenn Sie mehrere Schüler an eine einzelne Schule weiterleiten, kann die Ausgabesammlung von Knoten in QGIS mithilfe des Heatmap-Renderers angezeigt werden, der die „Hotspots“ der gesammelten Routen zur Schule anzeigt (siehe unten).

Diese Karten wurden verwendet, um Bereiche zu informieren, auf die weitere Sicherheitsinfrastrukturen abzielen sollten, z. B. Kreuzungen, Signale, Schilder usw.

Bildbeschreibung hier eingeben


Vielen Dank für das Bild, ich mag es. Ich werde versuchen, die GPX-Scheitelpunkte anstelle der Linien zu verarbeiten, um
festzustellen,

0

Erstellen Sie ein Raster, konvertieren Sie GPS-Daten in Shapefiles, polygonisieren Sie die Linien, extrahieren Sie X- und Y-Punktdaten aus Tabellen, erstellen Sie eine Oberflächendichte oder eine Wärmekarte. Sie können dann mit linearen Vektordaten zusammenführen, um Pixelwerte in einer Rasteranzeige oder für die weitere numerische Verarbeitung zu erhalten.


0

Die meisten Leute (einschließlich ich) betrachten eine GPX-Datei als Folge von Positionen (Punkten), während sie stattdessen perfekt als Folge von Liniensegmenten gesehen werden kann.

Ihre Problemformulierung beinhaltet eine "Wärmekarte", mit der Sie Ihre Flugbahnen visuell untersuchen können. Es gibt also eine recht einfache Möglichkeit, den komplexen Teil zur Zahlenkalkulation zu überspringen, indem Sie ihn direkt an eine Plotter-Engine delegieren.

Wenn Sie "Linien puffern" sagen, ist dies die Linienstärke. Wenn Sie "Sammeln Sie die Pässe" sagen, bedeutet dies, dass Sie immer wieder mit transparenten Linien plotten und so immer mehr Farbe "aufbauen".

Daher empfehle ich Ihnen, jede Flugbahn als einzelne Polylinie mit einer ausreichenden Dicke zu zeichnen, sodass es zu einer gewissen Überlappung kommt (dies hängt vom Zoom ab, daher möchten Sie die Dicke in Kartenabständen anstelle von Pixeln festlegen), und mit einer relativ geringen Deckkraft Sagen wir, 0,05 in Schwarz.

Es ist wichtig, nicht jedes Segment einzeln zu zeichnen, da sich in diesem Fall die Extremitäten überlappen, die Deckkraft verdoppelt und ein "Punkt" mit einer stärkeren Farbe erzeugt wird.

Am Ende erhalten Sie ein Graustufenbild, auf das Sie die Farbkarte Ihrer Wahl anwenden können.

Ich würde es wahrscheinlich mit Python / Cairo machen, aber Python / Matplotlib und Html / Canvas oder Html / SVG (oder programmatisches SVG) würden es sicherlich tun.

Das Endergebnis hängt nur von der Auflösung Ihres Ausgabemediums ab.


0

Ich bin mir bewusst, dass dies eine ziemlich alte Frage ist, aber da dieser Beitrag zu den Top-Suchergebnissen für dieses Thema gehört, dachte ich, ich würde einen Link zu einem Workflow zum Erstellen von Polylinien-Heatmaps in ArcGIS veröffentlichen, der diese Frage beantwortet. da es in diesem Beitrag derzeit keine Lösung für ArcGIS gibt.

https://luke-webber.github.io/polyline-heatmap/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.