4 Answers
4

Try http://www.gpsvisualizer.com. In the parameters set "Add DEM elevation data" to "From best available source". This will replace the recorded elevation with elevation data from a database, which should be more accurate.

When you import a GPX track into Google Earth, it offers to adjust the elevation data to match their internal database of worldwide elevation. From there, you can export it as a track again, to use as you wish.

Thanks to the simple reality of how GPS works, elevation data is never going to be as accurate as lat/lon position. Even with expensive setups the elevation still isn't anywhere near as accurate as the lat/lon.

I cannot tell exactly but to me as a physicist this looks like the height curve has just a huge noise on it. From your profile I would guess that you have some programming skills so you could build a nice little tool that tries to flatten the curve a bit for you without the need to upload it to some website where you don't know what they are using your data. So here are some ideas:

The most simple thing would be to just parse through your GPS track data and do a moving mean value calculation which replaces every data point by the mean of lets say the the data point and its neighbours or event next-nearest neighbours.

A more sophisticated approach was to do some assumptions: the slope that you are able to ride on is somewhat limited and therefore only slopes smaller than a max_slope should occur in your height profile. The fraction (height_(i+1)-height_i)/(tracklength_(i+1)-tracklenght_i) between the data points i and i+1 is exactly the representation of this slope. So you could restrict the averaging to data points where a threshold slope is exceeded.

Depending on the distance between your data points it is quite improbable that you have one single "dip" or "spike" in between them as you normally don't ride mogul piste like ways with bumps of several meters height in it.

Oh, this looks like a very nice programming project... if I just had some more time ;-)