01 Juli 2006

Höhenprofile

Dem aufmerksamen Leser wird es bereits aufgefallen sein: ich habe jetzt die Höhenprofile in meinen Einradkarten nachgerüstet.

Entgegen dem bisher doch recht hilfreichen Artikel von Michael Schilli habe ich das mit gnuplot gelöst. Das Mittel der Wahl, um aus der CSV-Liste mit Trackpoints, Zeiten und Höhendaten das Profil zu machen war ein kleines Perl-Script.

In meinen Dateien mit den Touren stehen auch Infos zu den Markern, Mapmittelpunkt und Zoomfaktor. Das mag gnuplot nicht gerne, also wird die Datei gefiltert und dann gnuplot zum Frass vorgeworfen:
#!/usr/bin/perl -w

print << 'EOF';
set title ""
set terminal png size 900,140 notransparent
set timefmt "%s"
set xdata time
set autoscale xfix
set autoscale y
set format x "%H:%M"
set style fill solid 1.0
plot "-" using ($3+7200):2 with filledcurves x1 notitle
EOF

while (<>) {
print $_ if (/^\d+\.\d+,\d+\.\d+\t\d+/);
print $1 if (/^POINT\t(\d+\.\d+,\d+\.\d+\t\d+.*)/);
}

Das Teil habe ich mal getplot genannt. Der Output von getplot wird dann direkt an gnuplot verfüttert:
getplot bla.txt | gnuplot > bla.png
Die ersten paar Zeilen sind Setup für gnuplot, die letzte Zeile sagt aus, dass die folgenden Daten ("-") als Punkte einer nach unten hin gefüllten Kurve verwendet werden sollen, und zwar die Spalte 3 (mit 7200 addiert) als x-Achse und die Spalte 2 als y-Achse. Die misteriösen 7200 kommen daher, dass in Spalte 3 die Uhrzeit in Sekunden seit 1.1.1970 drinsteht - und zwar als UTC. Zur Sommerzeit sind wir da 2 Stunden voraus, eben die 7200 Sekunden.

Simpel, oder?

Keine Kommentare: