Gibt es eine gute GPS-Track-Analyse-Bibliothek?

35

Ich schreibe weiterhin benutzerdefinierten Code, um mit GPS-Tracks zu arbeiten: GPX-Dateien und NMEA-Protokolle von meinem Telefon, dedizierten GPS-Loggern usw. Ich habe das Gefühl, das Rad neu zu erfinden, und frage mich, ob es eine Standardbibliothek / ein Standardwerkzeug gibt, mit dem ich arbeiten kann mit GPS-Tracks. Einige der Dinge, die ich gerne mache:

  • Berechnen Sie die zurückgelegte Strecke
  • Berechnen Sie die Durchschnittsgeschwindigkeit und die momentanen Geschwindigkeiten entlang der Strecke
  • Berechnen Sie die Zeit in Bewegung im Verhältnis zur Standzeit
  • Vereinfachen Sie die Spur, beseitigen Sie stationäre Segmente
  • Segmentieren Sie eine Spur in separate Spuren, eine pro Fahrt
  • Glätten Sie den GPS-Abtastfehler
  • Erstellen Sie ein Höhenprofil, indem Sie Punkte in einem DEM nachschlagen
  • Konvertieren Sie die Spuren zur Visualisierung in GPX, KML usw.

Es gibt eine Vielzahl von Anwendungen, die GPS-Tracks analysieren. Ich suche nach einer Softwarebibliothek oder einem skriptfähigen Satz von Tools, damit ich meine eigenen Anwendungen schreiben kann. Eingabeformate interessieren mich nicht sonderlich. Jede Art von Lat / Lon-Punkten mit Zeitstempel ist in Ordnung. Ich arbeite hauptsächlich in Python unter Unix, aber so ziemlich jede Sprache wird es tun.

Zu den vorhandenen Werkzeugen, die ich verwende, gehören GPSBabel und GDAL / OGR für die Konvertierung und PostGIS für die Arbeit mit der Spurgeometrie als Linienfolge. Aber meistens schreibe ich meinen eigenen Python-Code, der auf Arrays von Lat / Lon-Paaren funktioniert und sich zu leise anfühlt. Außerdem sind einige der oben genannten Aufgaben (z. B. das Entfernen von GPS-Fehlern) recht subtil. Gibt es eine Bibliothek, die ich benutzen sollte?

Nelson
quelle
1
Nach ein oder zwei Wochen und einer Prämie, denke ich, lautet die Antwort auf meine Frage hier "Nein, es gibt keine Bibliothek für die GPX-Track-Verarbeitung". Viele Anwendungen und Code, aber kein Allzweckwerkzeug. Es ist hilfreich, das zu wissen. Für mich besteht der Weg in die Zukunft darin, PostGIS-Code zu schreiben, der mit dem durch den GPX-Import von ogr2ogr erstellten Schema funktioniert. Dieses Schema enthält sowohl einen einfachen LineString für die Spur als auch eine Punktetabelle mit Zeitstempeln für die Zeitdimension.
Nelson
Ist Delphi-Code auch eine Option?
Google hat gerade eine Track-API angekündigt, die ich hier der Vollständigkeit halber erwähne. Es sieht nützlich aus, aber in eine andere Richtung als ich gesucht habe; mehr über Paniermehl und Geofences.
Nelson
1
@ Nelson Schauen Sie sich diese Antwort von einem der Schöpfer des (ziemlich ausgezeichneten Online-Ride-Editors) Ride With GPS an: stackoverflow.com/a/13084082/401828
heltonbiker 26.10.12
@ Nelson Diese Frage ist für mich noch sehr aktuell, fast 4 Jahre später. Haben Sie in der Zwischenzeit eine gute Lösung gefunden?
Amball

Antworten:

7

Nun, irgendwie hängt es von der von Ihnen gewählten Programmiersprache ab, aber ich habe mineturer.org in Java entwickelt (die Site ist im Wesentlichen eine Site zum Hochladen, Analysieren und Anzeigen von GPX-Daten).

Ich habe JAX-B (http://jaxb.java.net/) verwendet, um GPX-Dateien (basierend auf dem GPX-Schema) und JTS (http://www.vividsolutions.com/jts/) + eigenen Code für zu lesen Analysieren.

Der Quellcode für mineturer.org steht unter einer MIT-Lizenz unter https://bitbucket.org/atlefren/gpsorganizer/ zur Verfügung.

Ich denke, der Code könnte Ihnen zumindest einige Hinweise geben?

atlefren
quelle
Vielen Dank! Ihre Website sieht gut aus (und ist über Google Translate ziemlich benutzbar, auch wenn Sie kein Norwegisch lesen). Sie führen genau die Art von Analyse durch, die ich möchte, und es ist eine große Hilfe, wenn Sie sie als Open-Source-Lösung verwenden. Für Python würde ich wahrscheinlich GEOS anstelle von JTS verwenden. Es gibt anständige Bindungen.
Nelson
2
wenn es dir gefällt ... stimme dem zu !!
Stev_k
1
Hier nur eine Fortsetzung: Ich habe begonnen, dieses Projekt mit Shapely und GeoAlchemy (und Flask) nach Python zu portieren. Es funktioniert, ist aber im Moment ziemlich langsam. Code unter github.com/atlefren/mineturer2 für die Neugierigen
atlefren
3

Ich habe eine mathematische C # -Bibliothek für 2D- / 3D-Mathematik geschrieben, die auf GPS-Handling abzielt: GPX und TCX lesen, Tracks filtern und vereinfachen, Tracks / Segmente gruppieren und in 2D-Ebene transformieren.

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/

tma
quelle
Ist es möglich, eine Beschreibung oder Dokumentation für diese Nugets zu erhalten?
Petr Krampl
Ich werde sehen, ob ich dem NuGet-Paket eine Readme.MD hinzufügen kann.
30.
Vielen Dank, das Repository ist nicht zugänglich. Ist es möglich , neben den Elementen auch GPX-Dateien mit <rte>und <rtept>-Elementen zu analysieren <trk>?
Petr Krampl
1
Im Moment wird nur trrk-> trkseg-> trkpt mit Garmin-Trackpoint-Erweiterungen unterstützt, aber ich habe das rte-> rtept in 2.3.0 hinzugefügt, aber bisher keine Validierung.
30.
1
Die Dokumentation für beide Pakete wurde auf nuget.org hinzugefügt.
bis
2

Das GPS-Toolkit sollte helfen. Es ist eine Open-Source-Bibliothek und eine Suite von Anwendungen, die darauf abzielt, Forscher von der Codierung auf niedrigerer Ebene zu befreien.

Es bietet die folgenden Funktionen:

  • RINEX-Dienstprogramme
  • Positionierung
  • Restanalyse
  • Ionosphärische Modellierung
  • Signalverfolgungssimulation T
  • Grundlegende Transformationen
  • Erfassung und Konvertierung von Beobachtungsdaten
  • Dateivergleich und Validierung.
  • Datenbearbeitung
  • Autonome und relative Positionierung.
RK
quelle
Danke für die Antwort! GPSTk sieht faszinierend aus, aber es ist auf einem niedrigeren Niveau als ich suche. Es geht anscheinend darum, mit rohen GPS-Funksignalen zu arbeiten und daraus Standortkorrekturen abzuleiten. Ich habe bereits Positionskorrekturen von meiner GPS-Hardware und keinen Zugriff auf die Satellitendaten auf niedriger Ebene.
Nelson
1

Es gibt eine Open-Source-Bibliothek, die ich gerade fertig entwickelt habe (zu stable), und eine Benutzeroberfläche zum Analysieren von GPX-, TCX- und Fit-Dateien.

Die Bibliothek ist https://github.com/jimmykane/quantified-self-lib Die Benutzeroberfläche basiert auf Angular https://github.com/jimmykane/quantified-self

Live Demo https://www.quantified-self.io

Sie können eine GPX-, TCX- oder Fit-Datei analysieren, Statistiken wie Aufstieg, Abstieg, Entfernung,

Jimmy Kane
quelle
0

Hervorragende Frage! Ich habe in letzter Zeit ziemlich viel mit GPX-Daten gearbeitet und die einfachste Lösung, die ich gefunden habe, bestand darin, Ihre Track-Punkte in ein räumliches DB-Format zu konvertieren und dann Ansichten (räumlich und tabellarisch) zu erstellen, um die Daten nach Bedarf zusammenzufassen. Ich konnte mit OGR nicht die Ergebnisse abrufen, die zum Importieren meiner GPX-Daten benötigt wurden. Daher habe ich ein einfaches Python-Skript verwendet, um die XML-Baumstruktur der GPX zu durchlaufen und in die Datenbank zu laden (in meinem Fall SpatiaLite). Dies hilft Ihnen definitiv nicht dabei, das Rad neu zu erfinden, aber ich stellte fest, dass ich mit vorhandenen SQL- und räumlichen SQL-Funktionen die gewünschten Ergebnisse beim Zusammenfassen von Tracks auf Reisen erzielen konnte.

Brent Edwards
quelle
1
Der Hauptnachteil bei der Verwendung von PostGIS LineStrings besteht darin, dass sie keine Zeitstempeldaten enthalten. Ich kann sie sicherlich selbst in einem separaten Schema nachverfolgen, aber PostGIS hilft mir nicht dabei, zeitbasierte Berechnungen durchzuführen. Hast du irgendwelche Tricks dafür?
Nelson
0

Ich entwickle dieses kleine Soft für meinen eigenen Gebrauch. Es ist hauptsächlich für die Visualisierung gedacht und unterstützt nicht alle Ihre Bedürfnisse, aber vielleicht kann es helfen!

julien
quelle
Vielen Dank! Es ist Open Source und Java, also ist das definitiv eine Hilfe.
Nelson
0

auf die gefahr, ihre eigentliche frage nicht zu beantworten :-), lassen sie mich eine großartige anwendung vorschlagen, von der sie vielleicht noch nichts gehört haben.

Dies ist unter anderem meine zentrale Anlaufstelle zum Anzeigen, Bearbeiten und Übertragen von GPX.

Weitere Informationen zum Thema finden Sie im Positioning-Namespace von dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning

Grüße.

MC5
quelle
Vielen Dank! TopoFusion ist eine großartige Anwendung für Windows, aber ich brauche wirklich eine Bibliothek. dotSpatial verfügt über einen nützlichen Code, den Sie herunterladen können. Es steht unter der Mozilla Public License.
Nelson
0

Wenn Sie eine abstrakte Spezifikation für eine sprachneutrale API wünschen, gibt es GeoAPI:

"Die Entwicklergemeinschaft bei der Entwicklung von GIS-Lösungen leistet einen enormen Beitrag. Das GeoAPI-Projekt zielt darauf ab, Doppelarbeit zu verringern und die Interoperabilität zu verbessern, indem neutrale APIs bereitgestellt werden, die nur auf der Schnittstelle von OGC / ISO-Standards basieren."

http://www.geoapi.org/

und genauer der Implementation Standard (PDF)

Heltonbiker
quelle
0

Laden Sie Ihren GPX-Track auf diese URL hoch

Sie erhalten die meisten von Ihnen angeforderten Dienstleistungen, insbesondere:

  • Berechnen Sie die zurückgelegte Strecke
  • Berechnen Sie die Durchschnittsgeschwindigkeit
  • Berechnen Sie die Zeit in Bewegung gegen die Zeit im Stillstand (sichtbar auf dem Geschwindigkeitsprofil)
  • Vereinfachen Sie die Spur, beseitigen Sie stationäre Segmente
  • Glätten Sie den GPS-Abtastfehler
  • Konvertiert die Spur KML / KMZ usw. zur Visualisierung
John
quelle