Подготовка базы для ж/д роутинга

В рамках соседней темы http://forum.openstreetmap.org/viewtopic.php?id=18869 я написал простой роутер по железным дорогам. Пока он позволяет проверить наличие маршрута между двумя станциями и показывает длину самого короткого маршрута.
oneway учитывается. Запрет поворотов на >90° пока нет (вообще, стоит? поезд может остановиться и поехать в другую сторону; такое встречается на практике для, например, пригородных электричек?). Сам маршрут тоже пока не выдаётся. Сейчас роутер позволяет проверить связность ж/д сети, а если будут данные о длинах перегонов, и качество отрисовки ж/д линий. В будущем, возможно, пригодится где-то ещё.

Тестовый прогон показал, что основная проблема на данный момент - отсутствие точек остановки на railway линиях. Поэтому в рамках сабжа я предлагаю начать приводить станции к следующей схеме:

  • если через станцию проходит несколько путей (и нарисовано, соответственно, несколько путей)
    • точки остановки поездов у всех платформ отмечать как public_transport=stop_position + train=yes + name=название станции
    • точку станции (railway=station) убирать с путей
  • если через станцию проходит один путь, или несколько путей, но они нарисованы как один, допустимо как ставить railway=station на этот путь, так и использовать схему выше

Тут нет ничего нового, всё полностью соответствует как wiki:
http://wiki.openstreetmap.org/wiki/Tag:railway%3Dstation
http://wiki.openstreetmap.org/wiki/Tag:public_transport%3Dstop_position
так и ситуации де-факто, за исключением того что public_transport=stop_position мало где проставлены, а railway=station много где незаслуженно стоит на одном пути из многих.

Поясню, почему stop_position должны быть проставлены руками, и не могут быть вычислены автоматически. Допустим, точка станции находится не на путях, и мы берём ближайшую к ней точку на каждом пути и считаем её за stop_position.

  • точки будут проставлены на неправильных путях: например, сквозных через станцию http://osm.org/go/0v39aIKNr– либо вообще сортировочной горке http://osm.org/go/0t21pNR3f-
  • точки будут проставлены не в том месте, ибо бывает, что разные платформы смещены друг относительно друга: http://osm.org/go/0t3iKPGAA-

Поясню почему станцию имеет смысл убирать с путей, когда их несколько: потому что иначе создаётся впечатление что один из путей отличается от других и имеет больший приоритет, когда на деле это не так, и усложняется редактирование, потому что нельзя будет, например, выбрать все stop_position и добавить к ним какой-либо тэг - путь со station придётся обрабатывать отдельно. wiki с этим согласна:

но вцелом это опционально.

Любой поезд запросто может развернутся на 180 градусов, и даже несколько раз, например http://rasp.yandex.ru/thread/6815x6816A_9601102_g12_af?departure=2012-10-28#data или все что проходят через Мичуринск-Уральский.
Я еще где-то в вики видел railway=stop, и где-то его поставил.

поезд может остановиться и поехать в другую сторону; такое встречается на практике для, например, пригородных электричек?
В Германии - да, я на таком ездил.
Ехал из Dusseldorf-а в Paderborn, в Hamm-е после остановки поезд трогается в обратную сторону.

Ну ok, в принципе можно будет разрешать/запрещать такие развороты для отдельных перегонов, если захочется.

Привёл Спирово к схеме, включая релейшн. Пойдёт?

Такая крамольная мысль ломает все традиции и вики не соответствует.

Почему там нельзя добавить stop_position?

Традиции она не ломает, ибо станцию и так часто ставят вне путей. Между путями, на здание вокзала - обычное дело.
Wiki она соответствует, цитату я уже привёл. Правда в wiki случай с 2 путями почему-то тоже отнесли к simple, хотя логики в этом никакой, очевидно, нет. Если чешется к этому придраться, начнём со случев с >2 путей.

Тэги stop_position будут перемешаны с тэгами station. Кроме того, обоснования почему station именно на этом пути от этого не появится.

Как это не ломает, если большинство стоит именно на путях, а предлагается убрать специально все такие (во всем мире)?
Вики я приводил — призывает делать именно на путях, если случай не сложный.
2 пути — случай не сложный, хоть и не симметричный.

В чем проблема? Не хотите на ту же точку - поставте рядом отдельнуу, причем в более точное место.

А оно нужно? Стоит, где хочет. Где осмысленнее подпись выглядит - вполне за обоснование.
Если рутинг основывается на stop_position, то зачем трогать старый добрый station и мутить воду?
Надо расставлять новомодные stop_position и т.п. куда идея велит, а на местоположение station не обращать внимание.

Совершенно не факт что большинство. Станции вне путей - обычное явление по всему миру

http://www.openstreetmap.org/?lat=48.7122295796871&lon=2.40511804819107&zoom=17
http://www.openstreetmap.org/?lat=49.0236474573612&lon=2.46508419513702&zoom=18
http://www.openstreetmap.org/?lat=38.9714428782463&lon=-95.2296933531761&zoom=18
http://www.openstreetmap.org/?lat=57.5226397812366&lon=25.4425495862961&zoom=17
http://www.openstreetmap.org/?lat=51.26868&lon=-1.08588&zoom=17&layers=M

Сейчас и де-факто, и де-юре существуют и допустимы обе схемы, и приведение к одной из них ничего не может сломать. Вопрос только в выборе более логичной.

Не призывает, а считает допустимым. И не всегда, а только в простых случаях. Не более двух путей. Станция на пути где таковых больше двух wiki уже явно противоречит.

Не трогай и не мути - никто не заставляет, я ясно написал что это опционально. А те кто считает привязку к какому-то конкретному пути нелогичной - отвяжут.

Отнюдь! Ясно, что не опционально:

Ясно написано, что предлагается: раз увидел на путях, то убери!
Разборки на “простой” или “сложный” случаи не играют роли. Предлагается убирать то, что веками расставлялось с неким смыслом.

Может. Это сломает одну из них, причем без всякой надобности.

Всё наоборот!
Именно призывает. Дает рецепт что делать.

А вот для “сложного случая” как раз скорее “считает допустимым”, чем предписывает.

“часто лучше создать” — мягкая рекомендация

У меня один вопрос - много ли на самом деле точек станций, принадлежащих путям, и тех, которые им не принадлежат. А то вот беглый осмотр в нескольких случайных местах показал что это более чем непостоянная практика, даже в основательно отрисованных областях.

Читай первый пост до конца.

Нельзя сломать то, что не работает. При наличии кучи станций вне путей, схема которая ожидала их на путях, очевидным образом не работала. Схема, которая описана в вики “станция может быть на путях, может быть вне путей, а может быть вообще на полигоне, без точек” и которую же имеем де-факто ни коим образом не нарушается.

С точки зрения роутинга - вполне. Про отношение я не в курсе.

Возражу.
“For simple modeling of simple stations” – для простого моделирования простых станций. Но где здесь настоятельная рекомендация для простых станций применять обязательно простое моделирование? Я полагаю, здесь выбор способа картографирования – за самим картографом, и ничто не запрещает ему картографировать простые станции не самым простым способом.
Эту фразу в вики следует понимать так: “если для простых станций применено простое моделирование …” и далее по тексту.

Как это не работает? Ни мапник, ни навигаторы не рисуют?:o