PHP Looping durch einen GPX, um den gesamten Aufstieg / Abstieg eines Tracks zu berechnen

8

Ich möchte eine GPX-Datei durchgehen und den gesamten Auf- und Abstieg berechnen. Ich habe eine Funktion, die den Höhenunterschied zwischen zwei Lat-Long-Punkten berechnen kann und ich habe Simplexml eingerichtet, um & amp; Schleife durch die GPK-Datei trkseg Punkte.

Das Problem ist, dass dies nicht genau ist (wirklich nicht genau wie es in Wirklichkeit ist).

Diese zwei Linien führen zu einem unterschiedlichen Auf- und Abstieg, wie im wirklichen Leben:

%Vor%

Weiß jemand, wie man den gesamten Auf- und Abstieg eines Tracks genauer berechnen kann?

Dies ist mein aktueller Codeausschnitt, um ihn zu berechnen ( $track_elevations ist ein Array mit Erhebungen der ganzen Spur):

%Vor%

Beispiel für $track_elevations array:

%Vor%

In Wirklichkeit fuhr ich Fahrrad auf der flachen Straße. Aber mein Codeschnipsel wird berechnen, ich bin paar Meter aufgestiegen und abgestiegen. Vielleicht sollte ich da noch eine Einschränkung der Genauigkeit zwischen zwei Erhebungen hintereinander hinzufügen ...

Was ich erreichen möchte:

Ich werde versuchen, es besser zu erklären - wenn ich z. 20 km auf flacher Straße (fast ohne Auf- und Abstieg), der Gesamtanstieg und -abstieg sollte nahe bei 0 liegen. Aber wenn ich $track_elevations summiere (wie in meinem Codeschnipsel), werde ich in $total_ascent und $total_descent fe 500 Meter ... Sein wegen zwischen jedem Array-Element in $track_elevations ist Unterschied paar Zentimeter, aber ich reite immer noch auf der flachen Straße ... Und in der Gesamtsumme wird es zu einer großen Anzahl von Metern sammeln ... Hoffe jetzt ist es klarer.

    
Legionar 21.05.2015, 09:04
quelle

3 Antworten

1

Das Problem ist, dass wenn Sie $lastHeight - $track_elevations[$i] für ascenttet berechnen, erhalten Sie Werte kleiner als 0 und deshalb erhalten Sie hohe Unterschiede zwischen $total_asc und $total_desc .

%Vor%

-

%Vor%

- manuell berechnet Werte:

%Vor%     
take 26.05.2015 11:22
quelle
1

Sind Sie sicher, dass das "flach" ist? Können Sie den vollständigen Datensatz bereitstellen? Ich glaube auch nicht, dass dies ein Genauigkeitsproblem von PHP ist. Ihre Datenpunkte haben nur eine zweistellige Genauigkeit. Vielleicht rundet der Sensor?

    
Greg 01.06.2015 06:47
quelle
1

Selbst wenn Sie eine vollkommen ebene Straße befahren, werden die Höhendaten, die Sie vom GPS erhalten, immer ein wenig nach oben und unten gehen. GPS ist mit der Höhe nicht sehr genau, selbst unter perfekten Bedingungen.

Wenn Sie den rohen GPS-Eingang verwenden, um die Gesamtmenge des Kletterns / Abstiegs zu berechnen, werden diese kleinen Fehler schnell mit jedem einzelnen Punkt zusammengefasst und ergeben völlig unrealistische Ergebnisse.

Es gibt eine Reihe von Optionen, um bessere Ergebnisse zu erzielen, aber sie sind alle mehr oder weniger komplex: Sie könnten die Höhenkurve mit geeigneten Algorithmen "glätten". Sie können die GPS-Höhendaten verwerfen und durch zuvor aufgezeichnete Höhendaten für alle Koordinaten auf der Erde ersetzen (sogenannte SRTM-Daten).
Sie können die SRTM-Daten verwenden und sie intelligent mit Ihren eigenen GPS-Daten mischen.

In jedem Fall ist es schwierig, geeignete Höhenwerte zu erhalten. Man könnte versuchen, Differenzen unter 10 m oder so zu zählen, aber das wird wahrscheinlich nicht zu guten Ergebnissen führen.

    
Joeuser 27.08.2015 15:30
quelle

Tags und Links