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:
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?)
quelle
Antworten:
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.
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.
quelle
Hier ist ein gutes Tutorial, um genau das mit MapBox und TileMill zu tun :
quelle
Hier ist mein einfacher Ansatz:
Die drei obigen Schritte dauern 5 Minuten und hier ist das Ergebnis:
quelle
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.
Und voilà.
quelle
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 Line
Tool 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 dasSplit Line at Vertices
Werkzeug, mit dem Liniensegmente zwischen den einzelnen aufeinander folgenden Punkten erstellt werden. Von dort aus verwenden Sie dasLine Density
Tool, 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:
quelle
Track Intervals to Line
und dieLine Density
WerkzeugeWir 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.
quelle
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.
quelle
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.
quelle
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/
quelle