[Zurück]

Glättung der Rohdaten

Benutzt man die vom Tacho gelieferten Rohdaten direkt zum Berechnen der Steigung, dann ergibt sich eine sehr "zittrige" Kurve. Um ein brauchbares Ergebnis zu erhalten, müssen die Daten zuerst geglättet werden. Die Kunst ist dabei, die gröbsten Schwankungen zu entfernen, ohne die Peaks mit der maximalen Steigung zu sehr abzuflachen. Das von mir benutzte Verfahren zur Kurvenglättung ist durch mehr oder weniger systematisches Probieren ("Trial and Error") entstanden.

Der CM414 liefert die Höhenwerte auf 1 m gerundet und die Streckenangaben auf 10 m gerundet. Eine Möglichkeit zur Glättung ist, die beim Runden verlorengegangenen Nachkommastellen neu zu "erfinden", und zwar so, dass die entstehende Kurve möglichst glatt wird. Als Maß für die Glattheit bietet sich dabei die Quadratsumme der Differenzenquotienten 2. Ordnung an (Bei einer kontinuierlichen Kurve entspräche dies dem Integral über das Quadrat der 2. Ableitung):

               (        x[i+1] + x[i-1] )2
sum            ( x[i] - --------------- )  -> min
   i=1,...,n-1 (               2        )

Nebenbedingung der Optimierung ist dabei, dass jeder geglättete Wert nur um maximal die Hälfte des Rundungsintervalls vom ursprünglichen Messwert abweichen darf, d.h. die Höhenwerte dürfen maximal um 0.5&nsbp;m verschoben werden, die Streckenangaben um 5 m.

In der mittlerweile entstandenen kleinen Werkzeugsammlung zum Umgang mit CRP-Dateien ist der Glättungsalgorithmus Teil des Programms "crp2csv". (Die Programme kann jeder gerne herunterladen und selbst benutzen und erweitern, allerdings sind sie so gut wie undokumentiert, und ich möchte dafür lieber keinen umfangreichen Support anbieten.)

Berechnung der Steigungswerte

Ursprünglich hatte ich auch noch recht komplizierte Formeln ausprobiert, um Steigungswerte aus mehreren aufeinanderfolgenden Höhen- und Entfernungswerten zu interpolieren (die von "crp2csv" ausgegebenen Steigungswerte sind immer noch nach einer solchen Formel berechnet, werden aber beim Erstellen der Grafiken nicht mehr benutzt). Mittlerweile habe ich festgestellt, dass die einfache Formel

s[i] = (h[i] - h[i-1]) / (x[i] - x[i-1])

(s: Steigung, h: Höhe, x: Entfernung) vollkommen ausreicht bzw. sogar bessere Ergebnisse bringt, daher habe ich inzwischen alle Graphen mit dieser Formel erzeugt. Als X-Koordinate für s[i] wurde dabei jeweils (x[i]+x[i-1])/2 genommen.

Alle Graphen wurden mit dem Programm "svggraph" aus der o.g. Werkzeugsammlung im SVG-Vektorformat erzeugt und mit ImageMagick ins PNG-Format konvertiert.

[Letzte Änderung: 2007-04-09]