maandag 17 juni 2013

Hoogte data toevoegen aan een GPX bestand

Je kent het wel. De organisatie deelt een .gpx bestand van het parcours maar zonder hoogte data. Dat had je natuurlijk niet gezien. Je laad de GPX op je fietscomputer. Als het dan tijdens de rit begint te klimmen scroll je de eerste keer door naar het hoogte schempje op je Garmin om dan vast te stellen dat alleen de gemeten (voorbije) hoogtes erop staan.

Er bestaan verschillende manieren om aan hoogte data te komen. Blijkbaar is de meest nauwkeurige dataset met hoogte afkomstig van de Space Shuttle. De Shuttle Radar Topography Mission leverde begin 2000 een database tot op 30 meter nauwkeurig op. (In de US is de data meer nauwkeurig). De meeste diensten gebruiken die gegevens om de hoogte op een bepaalde plaats te bepalen.

Ik heb volgende methodes eens uitgetest:
  1. Laad je .gpx bestand op bij gpsies.com en download het als GPX Track.
  2. Voeg hoogte toe via GPS Visualizer: http://www.gpsvisualizer.com/elevation
  3. Gebruik een Python script dat gebruik maakt van de STRM data : strm.py
  4. Converteer het .gpx bestand naar KML met http://gpx2kml.com/, open het KML bestand met Google Earth, exporteer terug naar KML en converteer de KML terug naar GPX met http://gpx2kml.com/.
  5. Laad je .gpx bestand op in http://www.bikehike.co.uk/, klik op opties en klik op de "Resample" knop onder "Resample Elevation Data: Click to resample the elevation data". Sla het de GPX Track op met "Save Route" en kies voor "Select file type" voor "gpx track".
  6. Gebruik het srtm.py script met het Digital Elevation Model van http://www.viewfinderpanoramas.org/dem3.html#wip (meer bepaald dit bestand http://www.viewfinderpanoramas.org/dem1/N45E005.zip ) en gebruik de smooting parameter
Dit resulteerde in volgende hoogteprofielen (grafiek gemaakt met http://www.mygpsfiles.com/app/):

Zoals je ziet komt de data globaal gezien over een maar als je inzoomt merk je dat er toch wel wat verschilletjes op zitten. Ook het totale aantal meters klimmen verschilt nogal:
  1. Gpsies: 6513 meter
  2. GPS Visualiser: 5490 meter
  3. strm.py: 5734 meter
  4. Google Earth: 6292 meter
  5. Bikehike: 6292 meter
  6. Viewpanorama DEM met srtm.py: 5734

Omdat Google nog extra processing doet op de hoogte data denk ik dat hun data het meest accuraat is. Helaas is dat natuurlijk ook de meest omslachtige methode (twee converties en manueel opladen in Google Earth). Ik heb een vermoeden dat het tool "TCX Convertor" ook de Google data gebruikt maar vind daar niets over terug op de site van dat tool.

Bikehike haalt zijn data van GeoNames die op zijn beurt data haalt van nasa: srtm3 elevationcgiar: void filled srtm3 elevation. Omdat de hoogtemeters van Bikehike en Google Earth exact dezelfde zijn en ook visueel exact matchen vermoed ik dat ze dezelfde databron gebruiken. Bovendien is bikehike gemakkelijker in gebruik omdat het rechtstreeks gpx inlaad en dumpt en dus geen extra converties via KML nodig zijn.

Ook Gpsies maakt gebruik van GeoNames.

Maar zoals door Strava opgemerkt : "The elevation profile has climbs, but the elevation gain is very large. This often happens with activities recorded in mountainous areas outside of the US. The resolution of the data sets can be coarse and the profile may be bumpier than it should be even with interpolation and smoothing. These bumps may pass the threshold in gain calculations and the total gain from the bumps may add up to more than the gain that was perceived on the ride."

Het komt er eigenlijk op neer dat er geen zeer accurate hoogte data is in Europa. Het zal wachten zijn tot Galileo (de meer accurate opvolger van het huidige GPS systeem) operationeel geraakt in 2020.