Neues Tool zur GPS Track Analyse: TrackGuru

Wie soll es denn auf Android oder iOS laufen? Gibt es dafür überhaupt halbwegs vernünftig laufende JVMs und Window Manager?

AFAIK laufen Java-Anwendungen auf Androiden nur gerootet mit Emulator.

–ks

danke, das hilft mir weiter.

Hab noch “other” rausgenommen, da mir das eh zu schwammig ist.

Gruss
walter

OT: Gibt es eigentlich ein Icon für iOS? Ich hab nur den blauen Apfel für Apple und verwende den für MacOS - falls das noch so heißt. Apple ist nun wirklich nicht meine Baustelle.

Moin,

wie heißt das Teil eigentlich richtig?

Du verwendest sowohl “TrackGuru” (Forum), “Track Guru” (Webseite) und das Jar nennt sich trackguru.jar

Gruss
walter, Nervensäge vom Dienst :wink:

Ja, am Anfang habe ich TrackGuru geschrieben, dann bin ich doch lieber zu einem menschenlesbaren Track Guru übergegangen.

Also das Ding heißt Track Guru.

Hallo @Nop,

ich bin heute zufällig über Track Guru gestolpert. Der erste Eindruck ist sehr gut.

Nun zu meiner Frage:

Kann ich einen lokalen Kartenserver konfigurieren?

Ich bearbeite und plane meine Routen rein OFFLINE ohne INET-Verbindung.
Ich benutze dazu den BRouter Web Client (lokal).
Als Kartenserver nehme ich den von Telemaxx https://github.com/telemaxx/mapsforgesrv_with_gradle
und als Karten die OpenAndroMap https://www.openandromaps.org/

Schön wäre es, wenn man in Deinem Tool den lokalen Kartenserver http://127.0.0.1:80/… setzen könnte.

Viele Grüsse
Achim

Hm, das ist ein ungewöhnliche Usecase. Die verschiedenen Karten sind in jeweils einer eigenen Klasse hartcodiert eingebaut. Aber ich denke ich könnte eine Klasse bauen, die ihre Daten aus einer Textdatei einliest, so wie bei den Geschwindigkeitsprofilen. Dann könntest du Dir jede beliebige Karte einstellen.

Muß mal ein wenig drüber nachdenken, ich glaube das landet auf der Todo-Liste.

Schau Dir mal die Version 0.81 an. Da kann man eine zusätzliche, eigene Kartenquelle definieren. (Beschreibung in der Anleitung) Damit müßte auch Dein lokaler Server funktionieren.

Würde mich interessieren ob’s klappt.

…super. Das klappt prinzipiell schon. Spontan ist mir aufgefallen, wenn ich eine hohe Zoomstufe mit dem Scrollrad selektiere verschwindet die Karte. Das Zürückscollen ändert das nicht. Karte bleibt verschwunden. Nur wenn ich zum Beispiel einen neuen Track lade erscheint die Karte wieder.
Bei den Kachelgrenzen wird manchmal der Text abgeschnitten, aber das ist ein bekanntes Problem und hat nichts mit Deinem Tool zu tun.
Ich finde halt die rein LOKALEN Versionen ohne INET-Verbindung gut.
Ich verwende das zur Streckenplanung: https://github.com/nrenner/brouter-web
Kartenserver: https://github.com/telemaxx/mapsforgesrv_with_gradle
Karten: https://www.openandromaps.org/

und GpsPrune (lokal), MyTourbook und jetz noch TackGuru

Vielen Dank
Achim

Ps.: Ein “Nice to Have” Feature wäre es, wenn bei der Auswertungsübersicht ein entsprechender farbiger Balken bei der Geschwindigkeits angabe wäre (?rechtsbündig?). Gesamtzeit 100% die entsprechende Geschwindigkeitanzeige entsprechend der Dauer…

Schön wäre auch die Möglichkeit einen geplanten Track zu laden der keine Zeitstempel hat. Eventuell Startdatum das File Datum und die TimeDeltas abhängig von der Bewegungsart (Durchschnittstempo). Wenn man mit BRouter Webclient Touren plant ist da kein Zeitstempel und somit ist der Tack in Trackguru nicht darstellbar.

Hallo @NOP,

schade ist halt, dass man keine Tracks/Routen die keinen Zeitstempel haben laden kann und denen eventuell einen Zeitstempel und Zeitdeltas (abhängig Bewegungsart) verpassen kann.

Ich nutze bisher intensive GPSPRUNE. Einige Features von da würden auch Deinem Tool gut tun…

Vielen Dank
Achim

Wozu wäre das denn gut? Wenn der Track keine Zeitstempel hat gibt es auch keine Information über die zeitlichen Abstände der Punkte oder Geschwindigkeiten und nichts woraus man die sinnvoll rekonstruieren könnte.

Auch bei Tracks ohne Zeitstempel (meist Routen) möchte man sich manchmal einen Überblick verschaffen können. Nicht immer hat man denen Namen gegeben, mit denen man nach ein paar Monaten noch etwas anfangen kann :roll_eyes:. Geschwindigkeiten sind dann natürlich außen vor und die Reihenfolge ist schlicht die der Einträge in der Datei.
Selbst TG erzeugt ja auf Wunsch beim Speichern solche Tracks.

Ähnlicher Fall: Zwei meiner (älteren) Logger befinden sich seit dem GPS-Wochenüberlauf im Jahr 1999. Das falsche Jahr kann ich zwar mit GTA korrigieren (das kann übrigens auch komplett künstliche Zeitstempel erzeugen), aber schöner wärs halt mit *einem *Tool.

Andererseits hätte ich Verständnis dafür, dass TG nicht mit zu vielen Spezialfällen überladen werden sollte. Das liegt im Ermessen des Programmierers :).

Zumindest, dass man den Track anschauen kann. Ich habe viele geplante Tracks zum Verwalten, die keinen Zeitstempel haben. Gegeplant mit zB. Brouter-Client http://brouter.de/brouter-web/#map=12/48.9368/8.7465/standard.

So wie Dein Tool angelegt ist braucht man natürlich einen Zeitstempel. Deshalb mein Vorschlag bei einem Track ohne Zeitstempel das Filedatum zu nehmen und als TimeDeltas die Durchschnittsgeschwindigkeit, abhängig von der Bewegungsart. Wie beschrieben sind das Routen/Tracks die man geplant oder dowgeloaded hat…die man noch irgendwann durchführen will. Resource GEPLANT.

Ansonsten scjhließe ich mich der Argumentation von @Seichter an

Jetzt verstehe ich es noch weniger. :slight_smile:

Track Guru kann Tracks ohne Zeitstempel jederzeit laden und anzeigen. Nur die zeitbasierten Funktionen wie Geschwindigkeitsauswertungen entfallen dann logischerweise. Das habe ich gleichzeitig mit dem Entfernen von Zeitstempeln eingebaut, wäre ja ziemlich schräg, wenn ein Tool Einweg-Tracks erzeugen würde, die es selber nicht mehr laden kann.

Oder lautet die eigentliche Botschaft, daß das Laden ohne Zeitstempel bei Euch nicht vernünftig funktioniert?

Das Korrigieren falscher Zeitstempel wäre natürlich ein sinnvoller Anwendungsfall, da sind die Zeitunterschiede ja vorhanden. Bleibt nur wie von Dir schon geschrieben die Frage ob das nicht zu speziell für ein Tool ist, das sich auf die Fahne geschrieben hat daß es einfach und gradlinig zu bedienen sein soll.

Gut, das ist ein anderer Anwendungsfall. Für die Planung ist Track Guru ausdrücklich nicht vorgesehen (dafür habe ich Routeneditor und Navigationslösung auf der RWK oder viele ähnliche dedizierte Anwendungen), ebenso sind nicht Tracks sondern Routen für die Planung gedacht, eventuell erstellt durch Vereinfachung eines Tracks wie es auch Track Guru anbietet.

Die mit dem BRouterWebClient erstellten Routen (ohne Zeitstempel) kann ich nicht laden.

z.B:

<?xml version="1.0" encoding="UTF-8"?>
<!-- track-length = 9377 filtered ascend = 146 plain-ascend = 5 cost=13579 -->
<gpx 
 xmlns="http://www.topografix.com/GPX/1/1" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" 
 creator="BRouter-1.4.11" version="1.1">
 <trk>
  <name>brouter_hiking-beta_0</name>
  <trkseg>
   <trkpt lon="8.779442" lat="48.915131"><ele>264.25</ele></trkpt>
   <trkpt lon="8.779253" lat="48.915086"><ele>264.5</ele></trkpt>
   <trkpt lon="8.778877" lat="48.915005"><ele>263.75</ele></trkpt>
   <trkpt lon="8.779187" lat="48.914315"><ele>270.75</ele></trkpt>
   <trkpt lon="8.779452" lat="48.913716"><ele>275.0</ele></trkpt>
   <trkpt lon="8.779735" lat="48.913066"><ele>277.75</ele></trkpt>
   <trkpt lon="8.779631" lat="48.913005"><ele>278.5</ele></trkpt>
   <trkpt lon="8.779214" lat="48.912741"><ele>282.0</ele></trkpt>
   <trkpt lon="8.778225" lat="48.912147"><ele>287.0</ele></trkpt>
   <trkpt lon="8.777714" lat="48.911853"><ele>288.75</ele></trkpt>
   <trkpt lon="8.777333" lat="48.911623"><ele>290.0</ele></trkpt>
......
......

   <trkpt lon="8.776034" lat="48.914388"><ele>267.75</ele></trkpt>
   <trkpt lon="8.776857" lat="48.914630"><ele>266.25</ele></trkpt>
   <trkpt lon="8.778359" lat="48.914909"><ele>264.25</ele></trkpt>
  </trkseg>
 </trk>
</gpx>


Diese Anforderung wurde, zumindest von mir, nie gewünscht.

Kommt denn eine Fehlermeldung, oder eine Exception in der Konsole? Das würde Nop sicherlich besser weiterhelfen.

…danke für den Hinweis! Keine Routenanzeige. Keine Fehlermeldung in der GUI

Deshalb oben der “GPX” Auszug. Wenn man da in der Mitte die Punkte entfernt kann man das zum Testen nachvollziehen.

Ich kann diese GPX Files mit anderen Tools problemlosladen Oruxmaps,Gpsprune etc.

…aber in der Konsole:


E:\MyWorkDir\_MyMapTools\Trackguru\trackguru_v081\trackguru>java -jar trackguru.
jar
java.io.IOException: javax.xml.stream.XMLStreamException: Event type START_ELEME
NT specified did not match with current parser event COMMENT
        at io.jenetics.jpx.GPX$Reader.read(GPX.java:1072)
        at io.jenetics.jpx.GPX.read(GPX.java:1820)
        at nop.gpx.track.Track.loadGPX11(Track.java:115)
        at nop.gpx.track.Track.<init>(Track.java:57)
        at nop.gpx.Controller.setSelectedTrack(Controller.java:210)
        at nop.gpx.gui.TrackLister.selectTrack(TrackLister.java:169)
        at nop.gpx.gui.TrackLister.lambda$new$2(TrackLister.java:102)
        at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
        at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source
)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source
)
        at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Sou
rce)
        at javax.swing.JList.setValueIsAdjusting(Unknown Source)
        at javax.swing.plaf.basic.BasicListUI$Handler.mouseReleased(Unknown Sour
ce)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: javax.xml.stream.XMLStreamException: Event type START_ELEMENT specifi
ed did not match with current parser event COMMENT
        at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.require(U
nknown Source)
        at io.jenetics.jpx.CloseableXMLStreamReader.require(CloseableXMLStreamRe
ader.java:59)
        at io.jenetics.jpx.ElemReader.read(XMLReader.java:516)
        at io.jenetics.jpx.GPX$Reader.read(GPX.java:1067)
        ... 45 more

Kann es gerade nicht testen, aber so wie ich die Exception verstehe, kommt der Parser mit dem XML-Kommentar in der zweiten Zeile nicht klar und erwartet dort eben sofort das eröffnete root gpx-Tag. Lösch doch einfach mal spasseshalber die zweite Zeile komplett

<!-- track-length = 9377 filtered ascend = 146 plain-ascend = 5 cost=13579 -->

und versuche es dann noch einmal :wink:

PS: Nop nutzt ja einen 3rd JPX Reader, und ich glaube der ist noch nicht ganz ausgereift…

OK! Dann geht es. Aber ich habe sehr viele Files wo das drin ist…

Nop hat afaik Kontakt zum Maintainer des JPX Readers…