Posts: 46
Threads: 10
Joined: Feb 2020
30.03.2020, 21:02
(This post was last modified: 30.03.2020, 21:04 by tkansgar.)
Hallo,
meine Offroad-Navi-App Locus Map benötigt einige Metadaten aus der gpx-Datei, um einen Tracknamen und ein Erstellungsdatum zu haben, u.a. für die Sortierung nach Namen oder Datum. Aber wenn ich mit RouteConverter eine gpx-Datei mit einem neuen Track erstelle, fehlen diese Daten vollständig. Und wenn ich eine bestehende Datei öffne, ein paar Trackpoints einfüge, ändere oder lösche, den Tracknamen ändere und die Datei wieder speichere, sind die Metadaten die gleichen wie vorher. Ich würde erwarten (und Locus Map auch), dass RouteConverter wenigstens das Erstellungsdatum in die Metadaten einträgt (wie GPSies das ehemals auch tat). Derzeit muss ich die erstellte Datei immer per Hand anpassen, damit Locus Map sie ordentlich einsortieren kann. Und der Vollständigkeit halber könnte auch der Trackname noch in die Metadaten eingetragen werden.
Daher mein Vorschlag für einen minimalen aktualisierten oder neuen metadata-Block:
Code: <metadata>
<name>Mein Testtrack</name>
<time>2020-03-30T21:50:51Z</time>
</metadata>
Wäre das machbar?
Grüße
tkansgar
Posts: 1,033
Threads: 58
Joined: Jan 2011
31.03.2020, 06:29
(This post was last modified: 31.03.2020, 06:31 by nordlicht.)
(30.03.2020, 21:02)tkansgar Wrote: Aber wenn ich mit RouteConverter eine gpx-Datei mit einem neuen Track erstelle, fehlen diese Daten vollständig.
Nein, sie sind an der richtigen Stelle vorhanden:
Code: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gpx xmlns:gpxtpx1="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns="http://www.topografix.com/GPX/1/1" xmlns:trp="http://www.garmin.com/xmlschemas/TripExtensions/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v2" version="1.1" creator="RouteConverter 2.28-SNAPSHOT-99">
<trk>
<name>Neue Positionsliste 1</name>
<desc>Created at 2020-03-31T05:14:03Z</desc>
<trkseg>
<trkpt lat="54.2266037" lon="10.0064691">
<ele>53.0</ele>
...
Eine GPX-Datei kann beliebig viele Tracks enthalten, RC schreibt Trackname und Trackdatum spezifikationskonform in die Trackdaten, siehe Code-Beispiel.
Der Metadatenblock im GPX-Header ist optional und bezieht sich auf die gesamte GPX-Datei, man kann da z.B. einen Projektnamen vergeben, der alle Inhalte der GPX-Datei umfaßt, als da wären beliebig viele Wegpunkte, beliebig viele Routen mit beliebig vielen Routenpunkten, beliebig viele Tracks mit beliebig vielen Tracksegmenten mit beliebig vielen Trackpunkten, und das alles zusammen in einer einzigen GPX-Datei.
Wenn Locus Tracknamen und Datum nicht korrekt ausliest, ist das ein Problem von Locus und nicht von RouteConverter.
Grüße
Hans
Posts: 46
Threads: 10
Joined: Feb 2020
31.03.2020, 16:48
(This post was last modified: 31.03.2020, 16:50 by tkansgar.)
Was definitiv fehlt, ist ein <time> Eintrag, entweder unter <metadata> wie oben vorgeschlagen oder beim ersten Trackpoint:
Code: <trkpt lat="52.3054282" lon="9.4043827">
<ele>267.0</ele>
<time>2020-03-30T21:50:51Z</time>
<name>01</name>
</trkpt>
Der Zeitpunkt in <desc> nützt nichts, weil das dem Sinn nach nur dummer Text ist. Mit einem der beiden möglichen <time> Einträge gäbe es ein brauchbares Sortierkriterium.
Posts: 1,033
Threads: 58
Joined: Jan 2011
31.03.2020, 17:01
(This post was last modified: 02.04.2020, 08:53 by nordlicht.
Edit Reason: ergänzt (blau).
)
(31.03.2020, 16:48)tkansgar Wrote: Was definitiv fehlt, ist ein <time> Eintrag, entweder unter <metadata> wie oben vorgeschlagen oder beim ersten Trackpoint:
Code: <trkpt lat="52.3054282" lon="9.4043827">
<ele>267.0</ele>
<time>2020-03-30T21:50:51Z</time>
<name>01</name>
</trkpt>
Der Zeitpunkt in <desc> nützt nichts, weil das dem Sinn nach nur dummer Text ist. Mit einem der beiden möglichen <time> Einträge gäbe es ein brauchbares Sortierkriterium.
Als sinnvoll könnte ich mir vorstellen, daß RC den Dateinamen ohne Erweiterung und den Zeitstempel der letzten Änderung in den Metadatenblock schreibt. Das müßte nicht-destruktiv erfolgen, d.h. wenn ein Metadatenblock mit <name>-Tag existiert, müßte das <name>-Tag erhalten bleiben. Ob und wann das umsetzbar wäre, muß Christian entscheiden.
Grüße
Hans
Posts: 46
Threads: 10
Joined: Feb 2020
Hi Hans und Christian,
dafür wäre ich wirklich sehr dankbar. Die manuelle Nachbearbeitung ist echt nervig, zumal ich das gelegentlich zunächst vergesse, feststellen muss, dass Locus Map den neuen Track falsch einsortiert und den Import mit korrigiertem bzw. ergänztem <time> Eintrag wiederholen muss.
Grüße
tkansgar
Posts: 7,529
Threads: 230
Joined: Aug 2007
(31.03.2020, 16:48)tkansgar Wrote: Was definitiv fehlt, ist ein <time> Eintrag, entweder unter <metadata> wie oben vorgeschlagen oder beim ersten Trackpoint:
Ob es definitiv fehlt, darüber kann man sicherlich lange diskutieren. Viele Nutzer möchten minimale GPX-Dateien haben und sie nicht aufgebläht wissen.
Was stünde denn in dem <time> Eintrag drin? Und wann sollte er aktualisiert werden?
--
Christian
Posts: 7,529
Threads: 230
Joined: Aug 2007
03.04.2020, 10:20
(This post was last modified: 03.04.2020, 10:20 by routeconverter.)
(31.03.2020, 17:01)nordlicht Wrote: Als sinnvoll könnte ich mir vorstellen, daß RC den Dateinamen ohne Erweiterung und den Zeitstempel der letzten Änderung in den Metadatenblock schreibt. Das müßte nicht-destruktiv erfolgen, d.h. wenn ein Metadatenblock mit <name>-Tag existiert, müßte das <name>-Tag erhalten bleiben. Ob und wann das umsetzbar wäre, muß Christian entscheiden.
Dort unten im Maschinenraum ist nicht bekannt, wohin geschrieben wird. Es ist noch nicht einmal bekannt, ob in Dateien, in HTTP-Requests oder den Hauptspeicher oder wo auch immer hin geschrieben wird.
Was genau braucht man denn in Locus? Wie sieht das aus? Und warum kann Locus nicht geändert werden, bevor ich Klimmzüge mache?
--
Christian
Posts: 1,033
Threads: 58
Joined: Jan 2011
Hallo Christian,
ich nutze Locus nicht und brauche an der von tkansgar genannten Stelle keine Änderung. Wenn der Maschinenraum das nicht hergibt, würde ich da keine Arbeit reinstecken, zumal die Trackinfos ja am richtigen Platz vorhanden sind. In #2 hatte ich schon geschrieben "Wenn Locus Tracknamen und Datum nicht korrekt ausliest, ist das ein Problem von Locus und nicht von RouteConverter." Die Autoren von Locus wären auch nicht die ersten, die das GPX-Format nicht vollständig verstanden haben.
Grüße
Hans
Posts: 46
Threads: 10
Joined: Feb 2020
(03.04.2020, 10:16)routeconverter Wrote: (31.03.2020, 16:48)tkansgar Wrote: Was definitiv fehlt, ist ein <time> Eintrag, entweder unter <metadata> wie oben vorgeschlagen oder beim ersten Trackpoint:
Ob es definitiv fehlt, darüber kann man sicherlich lange diskutieren. Viele Nutzer möchten minimale GPX-Dateien haben und sie nicht aufgebläht wissen.
Was stünde denn in dem <time> Eintrag drin? Und wann sollte er aktualisiert werden? Hallo Christian,
so ganz genau kann ich das nicht sagen. Locus Map selbst trägt in die Metadaten von Aufzeichnungen keinen <time> Eintrag ein, dafür einen bei jedem Trackpoint. In diesem Fall dient der Eintrag des ersten Trackpoints als Sortierkriterium. GPSies dagegen trug in die Metadaten den Zeitpunkt der letzten Speicherung ein und bei den Trackpoints immer nur "2010-01-01T00:00:00Z". In diesem Fall nimmt Locus Map den Zeitpunkt aus den Metadaten.
Ich denke, Locus Map macht es zumindest nicht falsch. Wenn in den Metadaten ein Zeitpunkt drinsteht, nimmt es diesen, ansonsten ersatzweise den vom ersten Trackpoint. RouteConverter trägt jedoch leider nirgendwo einen <time> Eintrag ein bzw. behält vorhandene Einträge trotz vorgenommener Änderungen bei. M.E. sollte RouteConverter den Speicherungszeitpunkt wie auch von Nordlicht vorgeschlagen in die Metadaten eintragen. Welche Zeitpunkte in die Trackpoints eingetragen werden und ob überhaupt, wäre dann aus meiner Sicht egal (könnte also so bleiben, wie es ist).
Korrekterweise sollte ich noch erwähnen, dass der Zeitpunkt in UTC eingetragen werden sollte, was GPSies falsch machte, soweit ich weiß.
Grüße
tkansgar
Posts: 46
Threads: 10
Joined: Feb 2020
(03.04.2020, 10:20)routeconverter Wrote: (31.03.2020, 17:01)nordlicht Wrote: Als sinnvoll könnte ich mir vorstellen, daß RC den Dateinamen ohne Erweiterung und den Zeitstempel der letzten Änderung in den Metadatenblock schreibt. Das müßte nicht-destruktiv erfolgen, d.h. wenn ein Metadatenblock mit <name>-Tag existiert, müßte das <name>-Tag erhalten bleiben. Ob und wann das umsetzbar wäre, muß Christian entscheiden.
Dort unten im Maschinenraum ist nicht bekannt, wohin geschrieben wird. Es ist noch nicht einmal bekannt, ob in Dateien, in HTTP-Requests oder den Hauptspeicher oder wo auch immer hin geschrieben wird.
Was genau braucht man denn in Locus? Wie sieht das aus? Und warum kann Locus nicht geändert werden, bevor ich Klimmzüge mache? Dazu möchte ich auch noch etwas sagen: An irgendeiner Stelle beim Speichern muss doch klar sein, dass im GPX-Format geschrieben wird. Und an dieser Stelle müsste es doch möglich sein einen Metadatenblock mit dem vermissten <time> Eintrag wegzuschreiben, sofern noch nicht vorhanden, bzw. diesen im vorhandenen Metadatenblock zu ergänzen oder zu aktualisieren. Den aktuellen Zeitpunkt in UTC zu ermitteln dürfte kein größeres Problem darstellen, und das ISO-Format für Zeitpunkte einzuhalten ebensowenig. Für beides dürfte es auch in Java Standardfunktionen geben. Wie so ein Eintrag aussehen sollte, kannst du z.B. meinem Eingangsposting entnehmen. Auf den Namen im Metadatenblock könnte ich verzichten. Der steht ja im <trk>-Block, wo er hingehört und woher Locus Map ihn auch nimmt.
|