Прокладка маршрутов в Питере

Здравствуйте.

В Питере готовится официальный городской транспортный портал, в котором среди прочего есть функция прокладки маршрутов, как с использованием общественного транспорта, так и без оного.

Прокладка маршрутов осуществляется на карте. Один из рассматриваемых источников данных – OSM.

Я пишу алгоритм построения путей, и для улучшения работы алгоритма хотелось бы, чтобы были соединены выходы из метро с ближайшими дорогами. Хотелось бы выслушать опытных людей по этому вопросу.
Стоит ли это делать? И, если стоит, то как?
Достаточно ли добавить линию от выхода до точки на дороге с тэгом «hightway=footway» или надо что-то более навороченное?

Мне, в общем-то, всё равно как это будет оформлено. Главное, чтобы было единообразие.

Вам нужно написать такой алгоритм пешеходной маршрутизации, что бы он мог рутить без всяких фиктивных линий. Пешеход может много где ходить, не только по специальным пешеходным дорожкам, каковые обозначаются как hw=footway. Маршрут должен прокладываться просто поперек карты, но вокруг препятствий - домов, заборов, рек, и автомобильных дорог. А пешеходные дорожки должны быть предпочитаемым маршрутом, но не единственным.

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

И да, выходы можно соединить с тротуарами с помощью highway=footway, если там действительно есть путь. Но zkir прав, пешеходный роутинг должен идти везде, где может законно пройти человек.

Это будет нормально действовать при любой полноте карты, в отличие от рутинга по графу, который будет действовать только при полном графе.

Только не “путь”, а обособленная пешеходная дорожка :slight_smile: Пример, где путь есть, а футвея нет - метро (или просто некая точка) внутри hw=pedestrian+area=yes

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

В городских условиях вполне хватает авто-дорог, “типа” тротуаров вдоль дорог c foot=yes, футвеев и пазов (последним обычно обозначают “везде, где может пройти человек”) для приемлимого пешеходного роутинга.

Может, какие-то местные зубры и привыкли ходить в куртках и резиновых сапогах там, где человек может пройти (бурелом, грязь…), но если бы у меня спросили, как мне, как пешеходу, нужно построить маршрут, я бы сказал, что его нужно строить там, где можно нормально пройти (или хотя бы там, где вроде как можно нормально пройти) - тротуары и пешеходные дорожки. Либо станция метро находится внутри пешеходной зоны, внутри которой можно ходить как попало, обходя здания, либо от неё должна идти какая-то дорожка к дороге или пешеходной зоне. Впрочем, это же касается и железнодорожной платформы и остановки общественного транспорта.

Что касается единообразия - его может и не быть, т. к. где-то станции расположены посреди пешеходных зон, где-то - там, куда можно пройти только по строго определённому пути (например, по подземному пешеходному переходу), где-то - у тротуаров. То есть алгоритм должен уметь и водить по пешеходным зонам как попало, и по дорожкам.

Естественно, маршрут должен тяготеть к дорожкам. Но и если их нет, роутер должен работать.

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

Но станций метрополитена относительно мало и их можно обрисовать нормально.

Кстати, на мой взгляд “пешеходный роутинг должен идти везде, где может законно пройти человек” и “маршрут должен тяготеть к дорожкам” - это совсем не то, что “Но и если их нет, роутер должен работать”. В первом случае предлагается строить маршруты везде, где получится, отдавая некоторое предпочтение дорожкам, во втором - строить без дорожек только там, где их нет. В одном варианте маршрут “пройдите 50 метров по дороге, затем 50 метров напрямик через лес, затем 50 метров по дороге” возможен, если альтернативной является, например, “пройдите 500 метров по дороге, затем поверните направо, пройдите 500 метров по дороге”, во втором - только если с первой дороги нельзя попасть на вторую по дорогам (это, скорее всего, некорректная прорисовка карты).

Большое спасибо за обсуждение и ценные замечания и предложения.

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

Отлично. Тогда предлагаю придерживаться такого мнения.

По поводу того, как должен работать роутер , прозвучало очень много мыслей.
Предлагаю обсудить их в отдельном топике, поскольку в данном случае хотелось бы оценить, настолько пригодна OSM, или настолько можно сделать пригодной OSM, для роутинга по дорожкам (графу).

Естественно, аналогичные вопросы возникнут и по поводу пригодности OSM для путешествий «где попало» и для прочих подходов.

Окрылённый итогами обсуждений поста про выходы из метро предлагаю следующий вопрос.

Некоторый дороги обозначены двумя линиями ( одна линий – в одном направлении, вторая – в противоположном).
Пример – Лиговский проспект у Площади Восстания.

Чтобы пешеход мог перейти на другую сторону такой дороги (например, через Лиговский проспект у выхода из метро «Площадь Восстания»), необходимо добавить линию, соединяющую точки на дороге (highway=traffic_signals или highway=crossing), где начинается и заканчивается переход.

Такие тэги должны (могут) быть у такой лини? highway= residential или highway= footway? Что-то ещё?

Заранее спасибо.

Во избежание недоразумений. Специалисты считают, что рисование липовых дорожек прямо противоположно принципам OSM (truth on the ground, рисовать то что есть на местности) и является вандализмом.

Например: highway=footway, footway=crossing, bicycle=dismount, surface=asphalt

Это на сам переход, обозначенный линией.

Хотелось бы уточнить один момент.
Предположим в жизни (“то что есть”) я выхожу из метро “Проспект X” и иду по Проспекту X. На карте есть точка, которая соответствует выходу из метро “Проспект X” и линия, которая соответствует проспекту X.
Пусть точка “Выход из метро “Проспект X”” не принадлежит линии “Проспект X” и не соединена с этой линиией какой-то другой линией.
Это соответствует тому, что есть в жизни (truth on the ground) или нет?

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

Из всех дворов в жизни есть пути «наружу». Ведь как-то же менты долджны выносить трупы выпавших граждан?

Как правило, пути из дворов проходят через подворотни или через выходы/входы внутренних лестниц.

Теперь вопрос.

Должны ли на карте быть указаны такие выходы «наружу» и переходы между дворами?

И, если должны, то как правильно это делать?

Достаточно ли, например, поставить внутри двора точку и соединить её с внешними дорогами и соседними дворами линиями (количество линий должно совпадать количеством подворотен и внутренних лестниц) с тегом «highway= residential»?

highway= residential - это тег для улиц, но никак не для пешеходных маршрутов. Почитайте в самом деле Map Features! Прежде чем поднимать тему как все переделать, надо хотя бы ознакомиться с тем что есть сейчас.

Да, безусловно соответствует, причем это самая распространенная ситуация и есть. С какой радости они обязательно должны быть соединены линиями? Линии пешеходных маршрутов - это абстракция высокой степени.

  1. Крупные города более чем полностью закатаны в асфальт, и ходить можно практически где угодно. И это не сколько дорожки (как например в парках), сколько зоны. Физически существующие линейные дорожки - скорее редкость. Причем физически существующие дорожки совсем не обязательно объединены друг с другом в сеть.

Где нельзя ходить надо еще поискать (это я повторяюсь). Если нарисован landuse=residental, то по нему вполне можно ходить, за исключением препятствий.

  1. “Выход из метро” это уже практически везде полигональный, а не точечный объект (здание).

  2. Линией hw=primary…residential обозначается обычно проезжая часть (части) проспекта X. Пешеходные дорожки с ним (ними) и не должны соединяться. Ситуация осложняется тем, что есть мода обозначать отдельно тротуары, причем они где-то нарисованы, где-то нет.

Да, должны, обозначайте подворотни. :slight_smile: Но обозначать дворы точками (?!) - это моветон.

То что вы хотите обозначать, есть не столько пешеходные дорожки (highway=footway) сколько пешеходные маршруты (от выхода из метро “Проспект X” к остановке троллейбуса "Метро “Проспект X”), что то в духе route=pedestrian.

Но без описанного выше алгоритма их построить вряд ли удастся. Ну ладно остановки метро - остановки автобусов. А магазины и рестораны? Пешеходы же в них как-то заходят. Их тоже надо какими-то линиями соединить? Можно конечно, но это прямой путь к информационной помойке.

Город - это и есть зона, предназначенная для движения пешеходов. Считайте, что пои уже объединены тем что они находятся внутри полигона place :wink:

Сам отсылаешь к wiki, и тут же ему противоречишь. :stuck_out_tongue:
Согласно wiki railway=subway_entrance применим только к точкам. И это правильно.
А насчёт везде - 7 979 супротив 113.

Это обычная история. :slight_smile:
Не думаю что это правильно, должно быть - один объект на местности - один в осм. Выходы из метро это так или иначе здания, и они нарисованы полигонами с building=yes) А что предлагается? Рисовать виртуальные футвеи внутри зданий?

subway_entrance — это точка входа в метро. Не здание, потому что часто здания просто нет. Когда есть, subway_entrance ставится на дверь здания, иначе… Есть варианты :confused:

subway_entrance — это тоже абстракция для роутеров вообще-то.

Правильно. Весь вопрос в том, какой именно объект. :wink:

Нет. Здание - это здание. В котором может быть вход в метро. А что конкретно считать входом, двери или турникеты или чего ещё - мы помнится уже дискутировали, но к единому мнению, как обычно не пришли. :slight_smile:

Ну почему сразу виртуальные? Если рассматривать footway как основной маршрут движения людей - это вполне реальная сущность даже посреди сплошной асфальтовой площадки.