interpolating extra records after smart-recording

Didn't want to clog up the benchmark thread with this but it's an interesting problem with FIT files.

Smart-recording is evil, experimented using my old vivoactive vs fenix on my long run and they are a quarter mile off despite no GPS loss.

The route looks accurate on both without GPS drift.

The problem must be the coastline paradox, where if you measure more points, you get more distance https://en.wikipedia.org/wiki/Coastline_paradox

Almost 8000 records on the fenix, only 1300 on the vivoactive, it adds up.

What's interesting is that Stryd also appears to not use 1-second recording but some kind of hybrid, it's FIT has almost 4300 points but that's still half of the Fenix, it's less than a tenth of a mile difference.

Has anyone had success interpolating points, distance and elevation, when smart-recording is on?

There are curve formulas for point to point because people tend to "arc" and not go in straight lines when there is velocity so you have to look at points before and after.

I am wondering if anyone has more datasets with 1-sec vs smart-recording, I bet I could find some on Rainmaker's site if I hunt for them.

Smart-recording is silly with today's cpu and storage on watches, I could see a full day ultra maybe needing it but eventually efficiency will allow that to have 1-sec too, storage is definitely not a problem

I can get several elevation databases but distance is another matter.

By the way does anyone know if modern GPS watches use the doppler-effect available in GPS in addition to the lat/lon ability? It's a fascinating principle I was not aware of, it can measure speed based on the slew of the signal (like how a siren changes tone when moving past you)

This library supposedly has the most accurate math for distance between two close GPS points, better than Haversine or Vincenty

https://geographiclib.sourceforge.io/

There's no PHP version but a JS version exists so was thinking of porting it.

https://geographiclib.sourceforge.io/scripts/geographiclib.js

  • While working on this problem I came across this hosted version of the javascript of the "Algorithms for Geodesics" by Charles F. F. Karney

    geographiclib.sourceforge.io/.../geod-calc.html

    His work is amazing. Millimeter accuracy between lat/lon points, try dumping all the lat/lon records into the polyline calculator at the bottom.

    Of course you need quality input data and unfortunately GPS in watches has too much variance and drift and can vary up to and over 15 meters.

    Even with 1-second recording though, it's not perfect because it does shortest line between two points and an object in motion on the earth of course doesn't move in a perfect manner, it's curved with mass and gravity.

    My local parkrun which is wheel measured to 5000 meters comes up 5190 meters by his calculations using a FIT from a fenix5. (The watch itself comes up with 5184)

    It is a very curvy course, looped and not out/back but some of the loop turns are tight.

    With a long run and few turns, his routine comes up with 26276 meters and the garmin has 26197 meters, that's like 80 meters off for 16 miles so pretty good. But what's interesting is I also used an old vivoactive with smart-recording like every 6-seconds instead of 1-sec for that same long-run, and with far few points his routine shows 25884 meters, the VA calculated 25859 meters

    His routines can calculate intermediate points, I am going to look into that.

    I look forward to 2030 when we have L5 GPS watches and sub-1 second recording ;-) maybe 2025 if there is a cost/cpu breakthrough.