После расстановки stop_position и исправления двух проблем с oneway и одного разрыва пути, получилось так:
Горький-Московский -> Дзержинск
Route found, 32.56 km, expected 34.00 km, offset is -4.43% (-1442 m)
Дзержинск -> Ильино
Route found, 34.00 km, expected 35.00 km, offset is -2.95% (-1002 m)
Ильино -> Вязники
Route found, 57.76 km, expected 58.00 km, offset is -0.41% (-236 m)
Вязники -> Ковров 1
Route found, 59.84 km, expected 60.00 km, offset is -0.27% (-162 m)
Ковров 1 -> Владимир
Route found, 64.09 km, expected 64.00 km, offset is +0.13% (+86 m)
Владимир -> Москва-Курская
Route found, 190.24 km, expected 191.00 km, offset is -0.40% (-755 m)
Москва-Курская -> Тверь
Route found, 182.13 km, expected 169.00 km, offset is +7.77% (+13131 m)
Тверь -> Бологое-Московское
Route found, 163.48 km, expected 164.00 km, offset is -0.32% (-524 m)
Бологое-Московское -> Окуловка
Route found, 70.32 km, expected 70.00 km, offset is +0.46% (+321 m)
Окуловка -> Малая Вишера
Route found, 82.28 km, expected 87.00 km, offset is -5.74% (-4721 m)
Малая Вишера -> Московский вокзал
Route found, 161.16 km, expected 162.00 km, offset is -0.52% (-839 m)
Москва-Курская - Тверь я не смотрел, ибо там больно сложно, но в остальных случаях с большой погрешностью (“Горький-Московский → Дзержинск”, “Дзержинск → Ильино”) ручное измерение показывает что прав мой роутер (на всякий случай проверено по Яндекс.картам), а в случае “Окуловка → Малая Вишера” разница получается из-за этой загогулины: http://osm.org/go/0y80Z5_ которая, судя по всему, была спрямлена, и в OSM отражено актуальное состояние, но в ваших данных длина всё ещё содержит этот крюк.