In terms of horizontal GPS accuracy, using raw position fixes is going to produce a zig-zagging line between two points so the measured distance is always going to be greater than the actual straight line distance.
I wrote my own running app and I use a rolling average of 6 points (1 Hz rate) and then also apply a minimum distance of 7m between distance calculations. This filtering produces fairly good results. My running buddies mostly have Apple watches and my distances agree with their distances well.
In terms of elevations, I use the barometer to measure elevation differences. I use the average GPS elevation from the first few minutes before my run as the start elevation. I also use a rolling average on the barometric readings.
In terms of the net elevation changes, for a typical run in very hilly terrain over about an hour and a half, I have recorded up to 300m or so of up and 300m or so of down. So far, the net difference between ups and downs have been around 5m or less. This is much better than what my buddies' Apple watches show for elevation changes. For my measurement of +/- 300m, the Apple watch was in the range of +300m, -150m.
Given the good elevation results, it appears that the atmospheric conditions are fairly stable over a period of couple of hours. If the weather conditions are changing rapidly, things will probably be not so good.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
In terms of horizontal GPS accuracy, using raw position fixes is going to produce a zig-zagging line between two points so the measured distance is always going to be greater than the actual straight line distance.
I wrote my own running app and I use a rolling average of 6 points (1 Hz rate) and then also apply a minimum distance of 7m between distance calculations. This filtering produces fairly good results. My running buddies mostly have Apple watches and my distances agree with their distances well.
In terms of elevations, I use the barometer to measure elevation differences. I use the average GPS elevation from the first few minutes before my run as the start elevation. I also use a rolling average on the barometric readings.
In terms of the net elevation changes, for a typical run in very hilly terrain over about an hour and a half, I have recorded up to 300m or so of up and 300m or so of down. So far, the net difference between ups and downs have been around 5m or less. This is much better than what my buddies' Apple watches show for elevation changes. For my measurement of +/- 300m, the Apple watch was in the range of +300m, -150m.
Given the good elevation results, it appears that the atmospheric conditions are fairly stable over a period of couple of hours. If the weather conditions are changing rapidly, things will probably be not so good.