Trackpointname automatisch ändern

Kennt einer von euch ein Tool mit dem ich den Namen der Trackpoints ändern kann?

Hintergrund: Ich will meine Tracks anonymisieren (wann ich oder jemand meiner Familie irgendwo waren geht niemanden ausser uns was an :wink: ). Mit GPS-Babel kann man ja schon super die Zeit ändern, nur werden in meinen Tracks auch die Trackpointnamen mit dem Datum versehen.

Beispiel:

<trkpt lat="49.264691800" lon="8.704253810">
  <time>2009-04-01T14:26:34Z</time>
  <speed>0.079600</speed>
  <name>trkpt-2009-04-25T14:23:34Z</name>
  <cmt>3d,T,,</cmt>
  <desc>3d,T,,</desc>
  <fix>3d</fix>
<type>T</type>
</trkpt>

Damit hat das Ändern des Datums natürlich nichts gebracht.
Weiss einer von euch Abhilfe?

Danke schonmal im Vorraus :slight_smile:

Grüße,
Steffen

P.S.:

Um den Anonymisierungsgegnern mal etwas den Wind aus den Segeln zu nehmen, bevor sie hier wieder loslegen :wink:

  1. Zur Auswertung der Tracks zu Verkehrszählungszwecken (wie schnell kommt man wann, wo vorran) sind die OSM-Tracks sowieso nicht gedacht.
  2. Ich verschiebe den Zeitpunkt immer nur um wenige Wochen, so dass man unter Umständen mit späteren Hilfsmitteln immernoch recht gut die Aktualität des Tracks nachvollziehen kann (ein paar Wochen sind im Verkehrswesen eigtl. nichts)
  3. Das ist sowieso nicht der Thread um darüber zu diskutieren, wenn ihr das wollt, macht einen neuen auf.

Sorry für den Anhang, aber die Vergangenheit hat gezeigt, dass solche Threads immer wieder für Diskussionen rund um die Sinnhaftigkeit von Anonymisierungen missbraucht werden.

hallo,

ich würde da zb. in einem perl-forum nachfragen,
wenn die gerade gute laune haben, bekommst du vieleicht ein code,
der dieses erledigt…

mfg lutz

Hm, ne ich lass nicht so gern andere fuer mich was schreiben. Fuer den Notfall wuerd ich selbst was schreiben, aber hab dafuer im Moment eigtl. gar keine Zeit.

Hmm, das müsste doch schon fast mit einem Text-Editor gehen, der Suchen und Ersetzen mit regulären Ausdrücken beherrscht, oder?
Sowas in der Art “Ersetze * durch ”

Nimm sed, der ist für so Zeug optimal:

sed 's/<name>.*<\/name>/<name>name<\/name>/g' input.gpx > output.gpx

Gruß, Uz

Auch ne Idee, ja. Weisst du zufaellig ob der Trackpointname einzigartigsein muss in dem XML File oder ob alle den gleichen Namen haben koennen?

Beim Namen weiss ich es nicht, aber zumindest bei den Zeiten schert sich der OSM Uploader nicht darum, ob überall dasselbe drinsteht. Ich verwende sed um als Zeit bei allen Punkten “2008-01-01T00:00:00Z” einzutragen.

Du kannst aber mit sed auch einfach eine andere Zeit dort eintragen. Der folgende sed Aufruf korrigiert die eingetragene Zeit und den Namen:

sed -e 's/<time>.*<\/time>/<time>2008-01-01T00:00:00Z<\/time>/g' -e 's/<name>.*<\/name>/<name>trkpt-2008-01-01T00:00:00Z<\/name>/g' input.gpx > output.gpx

Oder mit einem Shell-Wrapper:

#!/bin/sh
for input in $*; do
    output=`basename "${input}" .gpx`"-clean.gpx"
    sed -e 's/<time>.*<\/time>/<time>2008-01-01T00:00:00Z<\/time>/g' \
        -e 's/<name>.*<\/name>/<name>trkpt-2008-01-01T00:00:00Z<\/name>/g' \
        "${input}" > "${output}"
done

Gruß, Uz

ok, klappt soweit echt gut. keines der Programme die ich so benutze hat Probleme mit dem nun überall gleichen Namen.

Hier mal kurz für alle Windowsuser eine kurze Anleitung:

  1. “sed for Windows” installieren (Homepage) Nehmt unter Download am besten das “Complete package, except sources”. Wer sich auskennt kann auch die ZIP-Datei weiter unten verwenden.
    Merkt euch den Pfad wo ihr es hin installiert

  2. erstellt eine Textdatei und kopiert den folgenden Code hinein:

@echo off
set sedpath=<Pfad in den sed installiert wurde>
set trackname_identifier=

set inputfile=%1
set outputfile=%1_sed.gpx

%sedpath%\bin\sed.exe "s/<name>%trackname_identifier%.*<\/name>/<name>trkpt<\/name>/g" %inputfile% > %outputfile%

echo.
echo %outputfile% created.
echo.
echo You can now close this window!
pause

Ersetzt in der ersten Zeile hinter dem = von “set sedpath=” “” durch den Pfad in den ihr eben sed installiert habt (z.B. set sedpath=c:\programme\sed)
Wenn ihr wisst, dass die Namen der Trackpoints immer mit derselben Zeichenfolge beginnen (bei mir beginnen sie z.B. immer mit “trkpt”), könnt ihr noch hinter “trackname_identifier=” diese Zeichenfolge schreiben (sie sollte keine Leerzeichen enthalten).
Also bei mir z.B. trackname_identifier=trkpt.
Das verhindert, dass auch die Namen anderer Daten wie z.B. der des gesamten Tracks (der z.B. auch schon durch GPS-Babel verändert wird) verändert werden.

  1. Speichert die Datei unter dem Namen “changetrackpointname.bat” oder einen anderen Namen der euch etwas sagt, wichtig ist, dass sie mit .bat endet.

  2. Nun müsst ihr nur noch die Datei deren Tracknamen ihr geändert haben wollt per Drag 'n Drop auf diese BAT-Datei ziehen und erhaltet im selben Verzeichnis in dem auch die Originaldatei liegt eine weitere Datei mit der Endung “_sed.gpx”

Das Script ist recht rudimentär geschrieben und könnte noch etwas verbessert werden (gerade was die Namensgebung der Outputdatei betrifft), aber für den Anfang reicht es denke ich :slight_smile:

Edit: Kreuzpost mit Mauline :slight_smile: Ich korrigier die Zeit schon mit GPSBabel, da ich es wichtig finde, dass man die Datei zumindest auf einen gewisse Aktualität hin überprüfen kann, von daher brauch ichs wirklich nur für den Tracknamen. Aber trotzdem vielen Dank für dein Shel-Script. Wenn ich auf Linux umgestiegen bin kann ichs sicher brauchen :slight_smile: