Доделал валидатор: http://amdmi3.ru/files/rail_routing/
Для каждой пары станций вычисляется путь в обе стороны, и перегон считается корректным, если:
- обе станции нашлись в базе (а это, напомню, точки на путях, либо с тэгами railway=station|halt + name=, либо public_transport=stop_position + train=yes + name=).
- между ними нашелся путь в обе стороны
- разница в длине пути в разные стороны не превышает 500м (запас на ж/д развязки типа такой: http://osm.org/go/04qFAfET– , случаи когда платформы разных направлений смещены друг относительно друга, платформы разной длины и т.д.)
- путь не превышает 150km (вылавливает явно неправильные обходные маршруты и маршруты до станций с таким же названием но в другой части страны)
Кроме пар соседних станций, в проверке участвуют пары их конечные станции линий из ЕСР - они выделены жирным и ограничений на расстояние между ними не накладывается.
Известные косяки:
- станции ищутся только по названию, поэтому вместо нужной может найтись станция совсем в другом регионе. Это не большая проблема т.к. учитывается только самый короткий маршрут, и для пары соседних станций либо найдётся правильный, либо слишком длинный и это будет видно. Проблема будет если в разных регионах есть одинаковые пары станций, но пока так сойдёт
- проложенный маршрут пока нет возможности посмотреть
- маршрут ищется только для пар станций, хотя по-хорошему должен искаться для всей линии целиком, чтобы поезда не могли перескакивать на соседний путь на станцях
Замечание по исправлению: не поломайте маршруты, отцепляя станции от путей. Я не нашёл как в JOSM отцепить точку от линии, не создавая новой точки. Если например, сделать UnGlue ways на станцию которая есть в relation=route, будет создана новая точка, на неё перенесены тэги со старой (а с последней удалены), в отношении останутся обе точки, причём старая точка с ролью stop, а новая - с пустой role, и в конце списка членов (т.е. вдобавок можно потерять порядок станций). Пока не придумал ничего лучше чем вырезать из линии небольшой кусок, содержащий станцию, удалить его, а линию склеить обратно. Так станция останется и отношение не будет покорёжено.