... the user friendly GPS tool


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
gpx Datei aus Stadtradeln App
#1
Hallo zusammen,
ich benutze RouteConverter schon seit längerem, um z.B. aufgezeichnete Tracks aus ApeMap zu konvertieren (inzwischen kann ApeMap selbst daraus eine kompatible gpx Datei erzeugen) und zu bearbeiten.
Auf meinen Wunsch wurde in der Stadtradeln App die Möglichkeit eingebaut, aufgezeichnete Tracks zu exportieren. Die exportierte Datei entspricht formal einer gpx Datei, hat auch die Dateierweiterung gpx, die Koordinaten sind korrekt, aber die Zeitstempel entsprechen den Zeitstempeln in der ApeMap trk Datei und nicht dem gpx Format.
Beginn der aus Stadtradeln exportierten gpx Datei:

<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="Stadtradeln" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gte="http://www.gpstrackeditor.com/xmlschemas/General/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<trk>
<trkseg>
<trkpt lat="50.80581623" lon="6.25851132"><time>1688286726171</time></trkpt>
<trkpt lat="50.80577294" lon="6.25853187"><time>1688286727171</time></trkpt>

Frage: Falls ein solches Dateiformat schon in RouteConverter unterstützt wird, welches ist das?
Falls nicht, wäre ich dankbar, wenn dies als weitere Konvertierungs-Option eingebaut werden könnte.

Nachtrag:
Ich habe das Problem gerade auch an das Stadtradeln Team gemeldet, vielleicht wird der nicht kompatible Zeitstempel dort demnächst korrigiert.
Den heute aufgezeichneten Track würde ich aber trotzdem gern in eine auch hinsichtlich der Zeitstempel kompatible gpx Datei konvertieren.
Reply
#2
(02.07.2023, 20:25)wilfriedh Wrote: Ich habe das Problem gerade auch an das Stadtradeln Team gemeldet, vielleicht wird der nicht kompatible Zeitstempel dort demnächst korrigiert.
Moin Wilfried,

falls die tatsächlich mit "vielleicht" geantwortet haben sollten, solltest du da sofort nachhaken. Die GPX-Spezifkation ist frei zugänglich, solange Stadtradeln sich nicht daran hält, bleiben deren GPX-Dateien wertlos.
Grüße
Hans

Reply
#3
(03.07.2023, 07:54)nordlicht Wrote:
(02.07.2023, 20:25)wilfriedh Wrote: Ich habe das Problem gerade auch an das Stadtradeln Team gemeldet, vielleicht wird der nicht kompatible Zeitstempel dort demnächst korrigiert.
Moin Wilfried,

falls die tatsächlich mit "vielleicht" geantwortet haben sollten, solltest du da sofort nachhaken. Die GPX-Spezifkation ist frei zugänglich, solange Stadtradeln sich nicht daran hält, bleiben deren GPX-Dateien wertlos.
Moin Nordlicht,
nein, haben noch nicht geantwortet. Das "vielleicht" würde besser "hoffentlich" heißen.

Kann mir jemand schreiben, mit welcher Formel die Zeitstempel-Zahlen <time>1688286726171</time> in UTC umgerechnet werden können? gpx muss so aussehen: <time>2023-07-02T09:00:21Z</time> (das ist nur ein Beispiel, nicht die gleiche Zeit wie im falsch formatierten Zeitstempel)
Da diese Umrechnung schon für das ApeMap trk Format im RouteConverter implementiert ist, müsste die irgendwo im Quellcode schon vorhanden sein. Ich hab schon in Github im Quellcode gesucht, finde das aber leider nicht.

Dann würde ich mir einen Konverter für diesen Zweck als Regina-Skript selbst programmieren (und hier posten).
Reply
#4
(03.07.2023, 11:11)wilfriedh Wrote: Kann mir jemand schreiben, mit welcher Formel die Zeitstempel-Zahlen <time>1688286726171</time> in UTC umgerechnet werden können?

Ich habs gefunden. Das sind Unix Zeitstempel, d.h. Sekunden seit dem 01.01.1970 00:00 .
Ich mache mich jetzt an die Programmierung.
Reply
#5
(03.07.2023, 11:23)wilfriedh Wrote:
(03.07.2023, 11:11)wilfriedh Wrote: Kann mir jemand schreiben, mit welcher Formel die Zeitstempel-Zahlen <time>1688286726171</time> in UTC umgerechnet werden können?

Ich habs gefunden. Das sind Unix Zeitstempel, d.h. Sekunden seit dem 01.01.1970 00:00 .
Ich mache mich jetzt an die Programmierung.

Das paßt, wenn du die Zahlen nicht als Sekunden, sondern als Millisekunden behandelst. Es gibt einige Online-Umrechner, vielleicht kannst du dich an deren Javascript-Code orientieren.
Grüße
Hans

Reply
#6
...
Der Stadtradeln Support hat geantwortet, meine Mail würde an das Entwickler-Team weitergeleitet.

Für die Zwischenzeit ist hier ist das Script zum Konvertieren der Zeitstempel aus der Stadtradeln-App in das Standard GPX Format.
Zum Ausführen muss ein REXX Interpreter installiert sein, z.B. Regina Rexx.
Code:
/* Stadtradeln gpx file (Unix Zeitstempel) in Standard gpx konvertieren */

parse arg infile outfile
if outfile='' then do
   say "Es muessen 2 Dateinamen angegeben werden"
   exit 1
end

/* Kopfzeilen unveraendert ausgeben */
do i = 1 to 4
line = linein(infile)
lout = line
rc = lineout(outfile,lout)
end

/* Zeilenweise konvertieren */
do while lines(infile)>0
line = linein(infile)
if line = '</trkseg>' then leave
parse var line beginn "<time>" uxtime "</time>" schluss
uxdays = uxtime % 86400000 /* Integer Division */
uxstart = DATE('B','1 Jan 1970','N')
rxdays = uxstart + uxdays

hrs = (uxtime - (uxdays*86400000)) / 3600000
sec = TRUNC(60*60*hrs)
lout = beginn'<time>'DATE('I',rxdays,'B')'T'TIME('N',sec,'S')'Z</time>'schluss
rc = lineout(outfile,lout)
end
/* Schlusszeilen ausgeben */
lout = line
rc = lineout(outfile,lout)
do while lines(infile)>0
line = linein(infile)
lout = line
rc = lineout(outfile,lout)
end
Reply
#7
Es geht noch einfacher und genauer, siehe Code unten.
Ach ja, den Code in eine Textdatei kopieren mit der Erweiterung .rex (z.B. konv.rex),
dann in der Eingabeaufforderung aufrufen mit "konv.rex Dateiname_aus_Stadtradeln.gpx korrigierte_Datei.gpx"
Voraussetzung: Installierter REXX Interpreter (z.B. Regina)
Code:
/* Stadtradeln gpx file (Unix Zeitstempel) in Standard gpx konvertieren */
NUMERIC DIGITS 14 /* Erhöht den Genauigkeitsbereich von Integerzahlen von 9 auf 14 Stellen */
/* die eingelesenen Werte haben bereits 13 signifikante Stellen */
/* ohne diese Erhöhung der Genauigkeit werden die Sekunden-Werte auf 10-Sekunden-Schritte gerundet */
parse arg infile outfile
if outfile='' then do
   say "Es muessen 2 Dateinamen angegeben werden"
   exit 1
end
/* Kopfzeilen unveraendert ausgeben */
do i = 1 to 4
line = linein(infile)
lout = line
rc = lineout(outfile,lout)
end

/* Startdatum der unix Zeitrechnung in der REXX Zeitrechnung */
/* REXX Zeitrechnung beginnt am 01.01.0001 */
uxstart = DATE('B','1 Jan 1970','N')
/* Zeilenweise konvertieren */
do while lines(infile)>0
line = linein(infile)
if line = '</trkseg>' then leave
parse var line beginn "<time>" uxtime "</time>" schluss
uxdays = uxtime % 86400000 /* Integer Division */
rxdays = uxstart + uxdays
sec = TRUNC((uxtime / 1000) - (uxdays * 86400))
/* die Aneinander-Reihung von Variablen und Strings ohne trennende Leerzeichen erzeugt eine Verkettung ohne Leerzeichen: */
lout = beginn'<time>'DATE('I',rxdays,'B')'T'TIME('N',sec,'S')'Z</time>'schluss
rc = lineout(outfile,lout)
end
/* Schlusszeilen ausgeben */
lout = line
rc = lineout(outfile,lout)
do while lines(infile)>0
line = linein(infile)
lout = line
rc = lineout(outfile,lout)
end
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)