Re: Einfacher GPX- und Geo-Images-Viewer

von: derSammy

Re: Einfacher GPX- und Geo-Images-Viewer - 06.01.17 11:56

Hallo Bernd,

ich halte Glättung für den falschen Ansatz um die Genauigkeite bei der Höhenmeterberechnung zu erhöhen. Der Ramer-Douglas-Peuker-Algorithmus ist übrigens auch keine Glättung, sondern ein Verfahren zur Vereinfachung eines Polygonzuges. Und dabei wird "relativ" stupide vorgegangen, es werden lediglich Punkte gelöscht. Sehr exemplarisch kann man sich das z.B. wiefolgt veranschaulichen: Wenn der Polygonzug sehr exakt einen Kreis beschreibt und du den Algorithmus drüber laufen lässt, dann macht der da ein Polygon draus. Die Knicke werden schärfer, der Umfang kürzer. Und vor allem werden die Punkte nachher nicht mehr homogen auf dem Kreisbogen verteilt sein, sondern es wird ungleichmäßig ausgedünnt.
Sinnvoller schiene mir ein Algorithmus, der den gegebenen Polygonzug durch eine Kurve approximiert (der sollte dann z.B. den Kreis nahezu exakt beschreiben) und dann diese Kurve wiederum durch einen Polygonzug mit möglichst wenig Punkten approximieren. Im Fall des Kreises also z.B. durch ein regelmäßiges N-Eck. Typisch dafür wäre, dass der Track neue Punkte berechnen muss, was natürlich dann Probleme mit sich bringt, wenn der Ausgangstrack über weitere Daten wie z.B. Höheninformation verfügte. Die müsste man dann interpolieren. Aber ich schweife ab.

Korrekte Höhenmeterberechnung geht wie folgt: Ich setze voraus, dass man einen Track mit Höheninformationen hat. Ob die vom GPS-Gerät oder einem digitalen Höhenmodell stammen, ist erstmal egal.
Als zweites muss man dann Ausreißer detektieren. Sowas ist z.B. offensichtlich der Fall, wenn ein Trackpunkt extrem nach oben oder unten ausreißt. Sowas gehört gelöscht. Wenn du das glättest, wird es zwar etwas besser, aber der Fehler bleibt (wenn auch verkleinert) drin. Gemessene Daten sind hier einfacher zu behandeln, weil die Ausreißer hier in der Regel als klarer Messfehler an einer einzelnen Stelle auftauchen. Schwieriger wird es bei Daten aus einem Höhenmodell, da können mehrere Werte hintereinander falsch sein (klassisches Beispiel mit Trackverlauf entlang einer steilen Bergflanke, wenn der Track mal ein paar Meter zu weit links oder recht vom eigentlichen Weg verläuft oder das Höhenmodell nicht genau genug ist). Das ist dann aber in erster Linie ein Problem vom digitalen Höhenmodell, was ich hier erstmal aussparen will.
Als drittes gilt es dann lokale Extrema zu detektieren, sprich die "Passhöhen" und die "Täler". Hier sollte man ruhig eine "großzügige" Toleranzschwelle ansetzen, damnit man nicht die Extrema des "Rauschens" detektiert. Wie groß diese genau sein sollte, hängt von der Qualität der Messwerte ab. Bei der Bestimmung des Messwertes an den Extremalstellen kann man jetzt einmal glätten, indem man z.B. 5 Messwerte um die Passhöhe mittelt; analog natürlich bei den Talwerten.

Anschließend werden die Differenzen zwischen den Passhöhen und Tälern aufsummiert. Bei einer typischen Alpenetappe sind das dann nur ganz wenige Summanden, weil man ja fast immer nur bergauf oder bergab unterwegs ist. Gegenanstiege gibt es recht selten. Für mich ist es völlig unklar, wieso hier manche Algorithmen auf derart unterschiedliche Werte kommen. Da hat man dann nicht genug "Hirn" in den Algorithmus gesteckt oder es sind eben Probleme, die sich aus den Höhenmodellen ergeben. Im Mittelgebirge wird es schwieriger, weil sich hier "auf" und "ab" häufiger abwechseln. Da ist die Kunst die richtigen Schwellwerte zu finden, was als Ausreißer aussortiert wird und wie man die Monotoniewendepunkte (Passhöhen, Täler) festlegt.

Das Beispiel von Thoralf mit der Pflasterstraße ist eher theoretischer Natur. Erstens misst kein Höhenmesser derart genau und zweitens will man eine gerade Kopfsteinpflasterstraße wohl auch nicht unbedingt als Bergauf-und-ab-Passage betrachten. Irgendwo muss man einen Schwellwert einziehen, ab wann man das als "bergauf" oder "bergab" betrachten will. Barometrische Höhenmesser lösen geeignet gemittelt auf etwa 30cm auf. Ich halte jedoch mindestens 1m für eine sinnvollere Grenze. Alles was weniger rauf und runter geht, würde ich als "gerade" durchgehen lassen. Das betrifft dann wohlgemerkt abwechselndes rauf und runter von je z.B. 50cm, was man dann als "gerade" erfasst. Geht es viermal je 50cm nacheinander rauf, würde mein Berechnungsvorschlag das auch als 2m-Anstieg erfassen, denn der Endpunkt liegt dann ja 2m höher als der Anfangspunkt, also über der Schwelle von 1m.