Berechnen Sie die maximale Geschwindigkeit aus GPS-Daten

10

Ich habe unformatierte GPS-Standorte für einen Track und muss die maximale Geschwindigkeit erreichen. Einfache Methoden (Geschwindigkeit zwischen 2 Punkten berechnen, max nehmen) ergeben aufgrund der GPS-Ungenauigkeit bedeutungslos große Zahlen, der Punkt springt herum. Können Sie einen guten vorgefertigten Algorithmus vorschlagen, um dies zu lösen?

JaakL
quelle
Wenn der Punkt herumspringt, sagen Sie dann, dass Sie mehr als einen Punkt an einem Ort haben? Der Großteil Ihrer Frage klingt so, als ob Sie an der Anzeige von Echtzeitdaten und nicht an der Nachbearbeitung interessiert sind (aus Gründen der Genauigkeit).
Brad Nesom
Wenn Sie die 'rohen' GPS-Positionen haben, sollten Sie auf jeden Fall die Geschwindigkeit über dem Boden in Knoten haben, was ein Standardelement in der NMEA-RMC-Zeichenfolge ist.
Nagytech

Antworten:

13

Um schnell zu werden, muss man natürlich Zeit haben. Auf diese Weise können Sie Ihre Punkte nach Zeit in einer Tabellenkalkulation mit den Spalten {Zeit, X, Y} sortieren, indem Sie die Zeit erhöhen.

Hier ist ein Beispiel, in dem die GPS-Einheit eine Schaltung gegen den Uhrzeigersinn fast abgeschlossen hat:

Karte einer Reise

Diese Punkte wurden nicht in gleichen Zeitintervallen erhalten. Daher ist es unmöglich, die Geschwindigkeit allein anhand der Karte zu schätzen. (Um Ihnen die Visualisierung dieser Reise zu erleichtern, habe ich die GPS-Werte in nahezu gleichen Intervallen erfasst, damit Sie sehen können, dass die Reise an zwei Zwischenpunkten und am Ende schnell begann und langsamer wurde.)

Berechnen Sie die Abstände zwischen aufeinanderfolgenden Zeilen sowie die Zeitunterschiede, da Sie an Geschwindigkeit interessiert sind. Das Teilen von Entfernungen durch Zeitunterschiede ergibt sofortige Geschwindigkeitsschätzungen. Das ist alles dazu. Schauen wir uns eine grafische Darstellung dieser Schätzungen über der Zeit an:

Diagramm der Geschwindigkeit gegen die Zeit

Die roten Punkte zeichnen die Geschwindigkeiten auf, während die graue Kurve grob ist, nur um das Auge zu führen. Die Zeit der maximalen Geschwindigkeit und die maximale Geschwindigkeit selbst sind aus dem Diagramm ersichtlich und können aus den bisherigen Daten leicht ermittelt werden, wenn Sie eine Tabellenkalkulation oder einfache Datenzusammenfassungsfunktionen in einem GIS verwenden. Diese Geschwindigkeitsschätzungen sind jedoch verdächtig, da die GPS-Punkte eindeutig einen Messfehler aufweisen.

Eine Möglichkeit, mit Messfehlern umzugehen, besteht darin , die Abstände zwischen mehreren Zeiträumen zu akkumulieren und diese zum Schätzen von Zeiten zu verwenden. Zum Beispiel, wenn die zuvor berechneten Daten {Zeitdifferenz, Entfernung} sind

d(Time) Distance
0.90        0.17
0.90        0.53
1.00        0.45
1.10        0.29
0.80        0.11

dann werden die verstrichenen Zeiten und die Gesamtentfernungen über zwei Zeiträume erhalten, indem jedes Paar aufeinanderfolgender Zeilen addiert wird:

d(Time) Distance
1.80        0.70
1.90        0.98
2.10        0.74
1.90        0.40

Berechnen Sie die Geschwindigkeiten für die akkumulierten Zeiten und Entfernungen neu.

Man kann diese Berechnung für eine beliebige Anzahl von Zeiträumen durchführen, um immer glattere und zuverlässigere Diagramme zu erzielen, und zwar auf Kosten der Mittelung der Geschwindigkeitsschätzungen über längere Zeiträume. Hier sind Diagramme derselben Daten, die für 3 bzw. 5 Zeiträume berechnet wurden:

Diagramm von Geschwindigkeit gegen Zeit, 3-Intervall-Berechnung

Auftragung von Geschwindigkeit gegen Zeit, 5-Intervall-Berechnung

Beachten Sie, wie die maximale Geschwindigkeit mit dem Grad der Glättung abnimmt. Das wird immer passieren. Es gibt keine eindeutige richtige Antwort: Wie viel Sie glätten, hängt von der Variabilität der Messungen ab und davon, in welchen Zeiträumen Sie die Geschwindigkeit schätzen möchten. In diesem Beispiel könnten Sie eine Höchstgeschwindigkeit von bis zu 2,5 (basierend auf aufeinanderfolgenden GPS-Punkten) angeben, diese wäre jedoch aufgrund der Fehler in den GPS-Standorten etwas unzuverlässig. Sie können eine Höchstgeschwindigkeit von nur 2,1 basierend auf der Fünf-Perioden-Glättung angeben.


Dies ist eine einfache Methode, aber nicht unbedingt die beste. Wenn wir den GPS-Positionsfehler in eine Komponente entlang des Pfads und eine andere Komponente senkrecht zum Pfad zerlegen , sehen wir, dass die Komponenten entlang des Pfads die Schätzungen der zurückgelegten Gesamtstrecke nicht beeinflussen (vorausgesetzt, der Pfad ist ausreichend gut abgetastet, dh Sie nicht "Ecken schneiden"). Die Komponenten senkrecht zum Pfad nehmen zudie scheinbaren Entfernungen. Dies führt möglicherweise zu einer Verzerrung der Schätzung. Wenn jedoch der typische Abstand zwischen GPS-Messwerten im Vergleich zum typischen Abstandsfehler groß ist, ist die Vorspannung gering und wird wahrscheinlich für die winzigen Wackelbewegungen auf dem Pfad kompensiert, die nicht von der GPS-Sequenz erfasst werden (d. H. immer fertig). Daher lohnt es sich wahrscheinlich nicht, einen komplexeren Schätzer zu entwickeln, um diese inhärenten Verzerrungen zu bewältigen, es sei denn, die GPS-Abtastfrequenz ist im Vergleich zu der Frequenz, mit der der Pfad "wackelt" oder der GPS-Messfehler groß ist, sehr niedrig.

Für die Aufzeichnung können wir das wahre, korrekte Ergebnis anzeigen , da dies simulierte Daten sind:

Darstellung der tatsächlichen Geschwindigkeit gegen die Zeit

Ein Vergleich mit den vorherigen Darstellungen zeigt, dass in diesem speziellen Fall das Maximum der Rohgeschwindigkeiten das wahre Maximum überschätzte, während das Maximum der Fünf-Perioden-Geschwindigkeiten zu niedrig war.

Wenn die GPS-Punkte mit hoher Frequenz erfasst werden, ist die maximale Rohgeschwindigkeit im Allgemeinen wahrscheinlich zu hoch: Sie überschätzt tendenziell das wahre Maximum. Mehr als dies in jedem praktischen Fall zu sagen, würde eine umfassendere statistische Analyse der Art und Größe der GPS-Fehler, der GPS-Erfassungsfrequenz und der Gewundenheit des zugrunde liegenden Pfades erfordern.

whuber
quelle
2

Dies ist kein vorgefertigtes Skript oder Algorithmus. Was ich auf dem Bild unten gemacht habe, zeigt die Durchschnittsgeschwindigkeit (in km / h):

  1. Führen Sie einen GPS-Label-Filter direkt in der GPX-Datei aus.
  2. Konvertieren Sie die GPX-Datei in Rasterpunkte in GRASS.
  3. Ausführen r.neighbors, um die Durchschnittsgeschwindigkeit für ein bestimmtes Rasterfenster zu ermitteln.

meine durchschnittliche Fahrradgeschwindigkeit

maning
quelle
Können Sie klarstellen, wie es möglich ist, Geschwindigkeit aus einer Rasterdarstellung einer Folge von Orten zu erhalten?
whuber
Mit gpsbabel können Sie Geschwindigkeitsinformationen aus den Trackpoints einer GPX synthetisieren. gpsbabel.org/htmldoc-development/filter_track.html . Importieren Sie diese Daten dann als Vektorpunkte und konvertieren Sie sie in GRASS in ein Raster. Ich habe für dieses Bild mehrere GPX verwendet. Mit r.neighborsbekomme ich die Durchschnittsgeschwindigkeit.
Maning
Vielen Dank für die Erklärung. Aber wenn gpsbabel die Geschwindigkeit berechnet hat, warum verwenden Sie r.neighbors? Würde das nicht möglicherweise Geschwindigkeiten entlang einer Route mit Geschwindigkeiten entlang anderer Routen mischen, die ausreichend nah am Netz sind? Außerdem ist die Geschwindigkeitsmittelung verzerrt, wenn die GPS-Erfassungszeiten ungleichmäßig verteilt sind. Wenn Sie beispielsweise 60 Meter in 60 Sekunden zurücklegen, sind Sie einen Meter pro Sekunde gefahren, aber wenn es in 1 Sekunde in 10 Meter plus 50 Meter in 59 Sekunden aufgeteilt ist (aufgrund eines Positionsfehlers von +9 m in einem Mittelpunkt), Die Durchschnittsgeschwindigkeit beträgt 5,4 m / s: eine grobe Überschätzung.
whuber
@whuber, du bist richtig. Für diese Karte suche ich keine individuelle Geschwindigkeit, sondern eine Gesamtgeschwindigkeit durch die Zeit. Alle meine Tracks befinden sich in Intervallen von 1 Sekunde.
Maning
+1 für eine kreative Lösung. (Ich mag es, Rasterlösungen für scheinbar Vektorprobleme zu finden, aber es ist gut, ihre Grenzen zu kennen.)
whuber
1

Da Ihre GPS-Daten ungenau sind, können Sie nur die Höchstgeschwindigkeit schätzen.

Sie können versuchen, dies zu berechnen, indem Sie die Geschwindigkeit nicht für Segmente, sondern für Polylinien (Durchschnittsgeschwindigkeit) berechnen, um den Effekt von Ungenauigkeiten zu minimieren.

Haben Sie zuerst versucht, Ihre Daten zu bereinigen (z. B. Douglas-Peucker), um nur die relevantesten Punkte beizubehalten?

BGervais
quelle
1
Douglas-Peucker bereinigt Daten nicht wirklich - es entfernt nur Punkte, während versucht wird, die ursprüngliche Form beizubehalten, sodass Fehler sogar noch schlimmer aussehen können.
JaakL