« GlobalSat GM-625 naar A'Rival SpoQ | Main | DS108J met dubbel persoonlijkheid »

maandag 20 april 2015

Fixen van TCX files

Ik gebruik SportTracks om mijn workouts bij te houden. De gegevens van mijn GPS-horloge worden geimporteerd na iedere training en SportTracks maakt er mooie kaartjes en grafieken van.

Een tijdje geleden kwamZoneFiveSoftware met SportTracks.mobi, een webbased versie van SportTracks (ST). Gegevens van ST worden gesynct met ST.mobi, zodat je ook "onderweg" je trainingen kan bekijken/wijzigen.

Wat me eerder niet was opgevallen, is echter dat de totale afstand aan de bovenkant van het scherm van ST.mobi niet overeenkomt met de x-as van de grafiek rechts van de kaart. In dit geval bijvoorbeeld mis ik meer dan een kilometer, op een totale afstand van 18K. Dat er verschillen waren kwam eigenlijk pas naar boven toen ik mijn data via tapiriik.com ging synchroniseren met strava.com. Strava toonde consequent de "foute" gegevens, en ging ook het tempo berekenen op die gegevens, waardoor ik bij iedere workout in Strava het slechter leek te doen dan wat ST vertelde.

Als je de TCX exporteert vanuit ST.mobi valt het volgende op:

Bovenin het bestand is de tag <DistanceMeters> terug te vinden.

<DistanceMeters>18165</DistanceMeters>

De bulk van het bestand bestaat uit <Trackpoints>. Ieder trackpoint bestaat uit een tijdstip, een hoogte- en breedtegraad om de positie vast te leggen, hoogtemeters en afgelegde afstand (tov vorige positie) en de hartslag zoals gemeten op dat tijdstip.

Het is de tag < DistanceMeters> die langzaam maar zeker een afwijking gaat vertonen, als we Trackpoints aflopen. Aan het eind van de rit ziet de trackpoint er zo uit:

<Trackpoint>
<Time>2015-03-24T12:06:03Z</Time>
<Position>
<LatitudeDegrees>52.053531646729</LatitudeDegrees>
<LongitudeDegrees>5.6366820335388</LongitudeDegrees>
</Position>
<AltitudeMeters>13.780464172363</AltitudeMeters>
<DistanceMeters>16977.34375</DistanceMeters>
<HeartRateBpm>
<Value>157</Value>
</HeartRateBpm>
</Trackpoint>

Jawel, de cummulatie van afstanden tussen de opeenvolgende Trackpoints is 16,977 kilomter, meer dan een kilometer minder dan wat er in <DistanceMeters> staat genoteerd.

Deze route heb ik vooraf via afstandmeten.nl gemaakt en die site gaf ook een afstand van 18 kilometer.

http://afstandmeten.nl/index.php?id=1504957

Als ik de coordinaten bekijk van de uiteindelijk gelopen route, dan zie ik geen afwijkingen die een verschil van meer dan een kilometer zouden kunnen verklaren. Kennelijk wordt bij het berekenen van de <DistanceMeters> een algoritme gebruikt waar meer in zit dan de haversine-functie die je gebruikt om de afstand tussen twee punten op een (aard)bol te bepalen.

Ter controle heb ik de gegevens uit de TCX ingelezen in Excel. Met de hierboven genoemde formule heb ik de GPS-afstand vergeleken met de afstanden uit het bestand. Daar is helaas geen conclusie uit te trekken.

Voor de geinstereseerden, de formule die je in Excel gebruikt om van twee kolommen (lengte- en breedtegraden) de afstand te bepalen is als volgt:

6370,97327862273*BOOGCOS(COS(RADIALEN(90-(L1)))*COS(RADIALEN(90-(L2)))+SIN(RADIALEN(90-(L1)))*SIN(RADIALEN(90-(L1)))*COS(RADIALEN((B1-B2)))) * 1000

Eerste cijfer is de constante voor de radius van de aarde

L1 = lengtegraad punt 1, L2 = lengtegraad punt 2

B1 = breedtegraad punt 1, B2 = breedtegraat punt 2

Leuk en aardig om een beetje te spelen met Excel, maar hoe krijg je nu je TCX-bestand weer een beetje op orde?

De snelste manier die ik op dit moment weet is om de TCX aan te bieden op de site tcxtools.com. Kies voor de optie tcx distantance recalculation. Deze optie leest je TCX-bestand en past de haversine-functie toe op ieder <trackpoint> blok. Let wel dat je deze truuk alleen zou moeten gebruiken als je zeker weet dat de individuele punten van de route goed overeenkomen met de werkelijkheid. Ook bij grote hoogteverschillen levert deze truuk onbetrouwbare afstanden, omdat de <altitude>-tag niet wordt meegenomen in de formule.

Wat nu nog een handmatige actie is (Data van horloge naar ST, TCX exporten vanuit ST.mobi, converteren op tcxtools, TCX uploaden) zou eigenlijk geautomatiseerd owrden als plug-in voor ST. Eens kijken of ik mijn beperkte Visual Studio skills hier op kan loslaten............

PPosted by Jeroen at 14:52.25
Categories: Running, Software