Для разработки потребовались некоторые расчёты. Этакая памятка.
(Сразу отмечу, что точность расчётов можно принять за достоверную только при достаточном количестве точек трека. В проведённых расчётах использовался GPX файл с более чем 10000 точек, что дало вполне удовлетворительный результат.)
1. Следует учесть, что координаты в формате GPX указываются в градусах в системе WGS 84, следовательно для расчёта необходимо произвести пересчёт в радианты по формуле:
рад=(град*Пи)/180
Фрагмент GPX :
31.000000
2010-01-01T00:00:00Z
lat="38.15018000" lon="15.66083000">
30.000000
2010-01-01T00:00:21Z
lat="38.15035000" lon="15.66088000">
30.000000
2010-01-01T00:00:28Z
2. Для расчёта длины участка между соседними координатами потребуется радиус Земли. Обычно используется значение среднего радиуса r=6371 км. (уточнённое значение 6 371 302 м)
Справочно
Полярный радиус Земли - малая полуось эллипсоида Красовского, равная 6 356 863 м.
Экваториальный радиус Земли - большая полуось эллипсоида Красовского, равная 6 378 245 м.
Средний радиус Земли - 6 371 302 м.
3. Расчёт дистанции производим по формуле Хаверсина (haversine formula), удобная форма представления для расчёта имеет вид:
где
d - дистанция между двумя точками
r - радиус сферы (в нашем случае радиус Земли)
φ1, φ2 - латититуды первой и второй точки в радиантах (lat)
λ1, λ2 - лонгтитуды первой и второй точки в радиантах (lon)
https://en.wikipedia.org/wiki/Haversine_formula