Карты для СитиГида

Попытаюсь объять все вместе что уяснил, чтобы сделать наброски к некоему роадмапу:

  1. Внести в осм данные о физических характеристиках дорог.
    1.1. Разбить задачу на этапы, по важности – по убыванию важности дорог.
    1.2. Для контроля выполнения организовать валидатор физики на примере существующих, по регионам, типам и т.п.
    1.3. Реализовать/сделать доступными инструменты работы с большими участками дороги (плагины к жосму, онлайн тулзы).

  2. Внести в осм/Оценить реальные скорости участков дорог.
    2.1. Разбить задачу на этапы, по важности – по убыванию важности дорог.
    2.2. Для контроля выполнения организовать валидатор скоростных режимов на примере существующих, по регионам, типам и т.п, с учетом границ населенных пунктов.
    2.3. Реализовать интерфейс получения пробочных данных для статистической оценки скоростных режимов из открытых источников (определиться с лицензией, либо привязывать это непосредственно в осм либо использовать только на этапе конвертации).

  3. Используя 1 и 2 доработать конвертер_мп для создания реальной, как внешне так и по сути, карты.
    3.1. Реализовать табличный алгоритм преобразования исходных данных осм (highway, lanes, oneway) в mp.тип_дорог для корректного отображения на экране навигатора (см. 3.2).
    3.2. Подкрутить конфиги геоконструктора, чтобы он конвертил каждый вариант mp.тип_дорог в линию желаемой толщины и цвета.
    3.3. Реализовать/допилить табличный или иной алгоритм преобразования исходных данных осм (highway, lanes, oneway, speed, границы нп…) в mp.RouteParams и mp.EndLevel.

  4. Оценить на практике полученный результат, по необходимости откорректировать.

Сорри, пока путаюсь в ароматах местных кварков, ну и в терминах их описывающих, но имел ввиду именно тип.

Из предыдущих разговоров о “темной стороне силы” уяснил что нет однозначного преобразования osm.{hw,lanes…}->mp.type->cg.vasualstyle (хотя теперь вижу что есть) и предположил что оно зарыто где-то в недрах ГК, поэтому было предложение самим определять vasualstyle и кодировать его, например в комментариях, а МИТ попросить о допилке импорта в ГК с возможность оверрайда по нашим комментариям.

Предлагаю сделать аналогичное для веев типа сервис, имеющих ноду барьер без явно указанного аксесса.

Ну да, только в п.2 должно быть “оценить”.

Вносить в osm расчитанные скорости нет никакой необходимости. Вообще опыт показывает что “средняя” или “средне-потолочная” скорость (ака maxspeed:practical) вещь довольно мутная и крайне субъективная. Я вообще думаю отказаться от поддержки maxspeed:practical в пользу чего-то вроде Звериковской surface:grade (http://wiki.openstreetmap.org/wiki/Key:surface:grade)
Причина этого в том что скоростные индексы полученные из maxspeed:practical начинают конкурировать с индексами полученными из классов дорог на основе более абстрактных соображений, и начинаются всякие глупости.

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

mercurial присутствует на гуглокоде

делается файлик properties.template - вкидывается в репозиторий
в readme пишется “переименовать properties.template в properties и вписать туда свои настройки”

А прикрутить что-нибудь типа “place.tertiary.visible = place.maxHighwayLevel <= tertiary” не реально? :slight_smile:
В крупных городах ничего не должно измениться, а в мелких - дырки пропадут :slight_smile:

Не очень понял, что это значит?

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

Я правильно понимаю, что access=no обрабатываются не так, как access=private?

  1. Если да, то почему?
  2. Простановка скоростного индекса хорошо работает на беспробочных картах: пробочная информация, насколько я знаю, перекрывает информацию о нулевом скоростном индексе (грубо говоря, если кто-то проедет по дороге с нулевым скоростным индексом, то “сшибёт” его; а проехать можно, например, на велосипеде, машине дорожных служб либо машине спецслужб).

P. S. Насколько я вижу, при наличии дороги c access=private ищется то место, где она соприкасается с дорогой без access=private и там ставятся запреты проезда в обе стороны. На мой взгляд, access=no следует обрабатывать так же (равно как access=destination).

akoruno,
это интересная мысль, выравнивать важность дорог в НП динамически, я подумаю.

Dinamik,

Это где видно такое?

Судя по тому, что Вы задали такой вопрос, я неправильно трактовал увиденное. Я видел в нескольких местах access=private, ограничиваемое в тех местах, где дорога переходит в дорогу без access=private, запретами поворотов, и думал, что запреты поворотов ставились из-за наличия границы private - не private. Сейчас я посмотрел те примеры, там везде в местах, где access=private переходит в дорогу без access=private, стоят barrier=gate. Надо понимать, запреты поворотов ставились из-за наличия barrier=gate, а не из-за наличия границы private - не private.

Тогда вопрос: можно ли при наличии ребра с access=no/private/destination ставить на его края запреты поворотов? Запреты поворотов не сшибаются пробочной информацией.

Алгоритм: есть ребро 1, состоящее из точек 2, 3, 4, 5, 6 и имеющее access=no. Берём точку 2, видим, что она содержится ещё в рёбрах 7 и 8. Ставим “no_straight_on” from 1 via 2 to 7, “no_straight_on” from 1 via 2 to 8, “no_straight_on” from 7 via 2 to 1 и “no_straight_on” from 8 via 2 to 1. Для точки 6 - аналогично. Если крайняя точка, помимо ребра с access=no, содержится ещё только в одном ребре, на котором тоже стоит access=no, запреты поворотов можно не ставить (например, улица с access=no может состоять из трёх линий: дорога, дорога + bridge=yes, дорога).

Отмечу, что с access=destination, по идее, нормально будет работать только механизм с установкой запретов поворотов. Если есть улица с access=destination, насквозь ехать нельзя, но в её центр - можно. Если поставить нулевой скоростной индекс, навигатор маршрут построит, но выдаст не вполне корректное время в пути (такое ощущение, что 0 км/ч заменяется на 5 км/ч), если поставить запреты поворотов, то навигатор построит маршрут, проигнорировав те запреты, которые мешают ему добраться до финиша, и показав правильное время в пути.

Нулевой скоростной индекс:
Достоинства: это уже технически реализовано; не допускается сквозное движение.
Недостатки: нулевые скоростные индексы “сшибаются” пробочной информацией; показывается неправильное время в пути.

Запреты поворотов:
Достоинства: правильно показывается время в пути; не допускается сквозное движение.
Недостаток: пока неясно, насколько реально это реализовать технически.

Это больше похоже на правду. Насколько я помню, access=private и destination не обрабатываются никак. access=destination это атрибут служебных проездов, которые и так не рутинговые, а access=private обычно обеспечивается барьерами (воротами, шлагбаумами). Только тот и хозяин, кто может не пускать в свой двор (на свою частную дорогу!) посторонних.

//можно ли при наличии ребра с access=no/private/destination ставить на его края запреты поворотов?
Мне кажется это надо делать в самом OSM. Запрет проезда обычно чем-то обеспечивается. На этапе конвертации - сразу скажу, в обозримом будущем - сильно врядли.

по поводу access=destination было несколько иное мнение, что как раз его нужно закрывать нулевым скоростным индексом, чтобы при финише на таком ребре маршрут таки прокладывался.

Есть кстати примеры улиц с access=destination?

Почему не может быть residential улицы с access=destination? “residential — дорога в основном используется только теми людьми, которые живут на этой улице или живут на улицах, примыкающих к ней”. Берём residential улицу, вешаем по краям знаки 3.2 - она от этого становится highway=service? Не очевидно.

Да, private обычно огорожены чем-то типа barrier=gate.

Запрет проезда может быть обеспечен знаком 3.2, установленным с двух сторон дороги.

Огорчительно.

Если поставить запреты поворотов, то маршрут тоже проложится, но при этом ещё и время в пути отображено правильное.

http://www.openstreetmap.org/browse/way/4484482
Улица, закрытая с двух сторон знаком 3.2

Ещё встречаются улицы, закрытые с двух сторон знаком 3.1, но это уже скорее vehicle=no.

Бывают улицы, закрытые с двух перекрёстков знаком 3.1, но не имеющие этого знака при выезде на эту улицу из какого-нибудь двора. Тогда, получается, можно приехать куда-нибудь во двор рядом с этой улицей, а потом уехать через ограниченную знаками дорогу. Это скорее no_straight_on по краям улицы (въехать нельзя, выехать можно).

Потому что это лажа какая-то. С какой радости знак 3.2 это access=destination?
access=destination, согласно англовики это запрет транзитного рутинга через этот элемент, для всех.
Only when traveling to this element. (только если данный элемент является концом маршрута). Откуда в русской вики появилось то что появилось, я не знаю. :frowning:

Вопрос 1: как на дороге может быть обозначено “транзитом нельзя, но в какую-то из точек на этой дороге - можно”, кроме как знаком 3.2?
Вопрос 2: почему 3.2 не является “Only when traveling to this element”? “устанавливают на каждом въезде на участок дороги или территории, где запрещается движение транспортных средств… не распространяется на соответствующие транспортные средства, обслуживающие предприятия, находящиеся в обозначенной зоне, обслуживающие (или принадлежащие) граждан(ам), проживающих(им) или работающих(им) в этой зоне… Такие транспортные средства должны въезжать в обозначенную зону и выезжать из нее на ближайшем к месту назначения перекрестке”.

В русской вики “разрешён доступ только для обслуживания или проживающим/работающим в зоне ограничения”, что, в общем-то, не очень отличается от “Only when delivering to the element”.

Вопрос 3: как должна обозначаться дорога, закрытая с двух сторон знаками 3.2 (если highway=residential + access=destination не подходит)?

P. S. В http://wiki.openstreetmap.org/wiki/RU:%D0%92%D0%B8%D0%BA%D0%B8%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%94%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D0%BA%D0%B8 написано “3.2 - Движение запрещено - vehicle=destination”
P. P. S. http://www.complexdoc.ru/ntdtext/545841/15 “Знак 3.2 информирует водителей, что за него невозможно попасть и с противоположного конца дороги или из боковых проездов, так как и там установлены такие знаки - т.е. участок дороги закрыт для транзитного движения транспортных средств.” - чем не “Only when traveling to this element” в чистом виде?

А если это статистические данные? Grade конечно штука крайне полезная, поддерживаю на все сто, если lanes - это ширина то grade по сути глубина ) Но есть еще степень свободы - скорость и боюсь так просто ее откинуть не получится, есть места где постоянные пробки, пример - трехполосное (в каждую сторону) ровное Новорязанского ш. в районе поворота на Лыткарино в область, где все рабочее время стоит пробка и скорость 20км/ч из-за узкого клевера и узкого моста, и синхронного поворота машин из всех трех рядов.

Знаками 5.21/5.22 “Жилая зона”. В отличие от знака 3.2 знак 5.21 не устанавливает ограничений, кто может туда въезжать.

Потому что знак 3.2 устанавливает не только куда и как можно ехать, но и кто может так ехать.

Вопрос 3: как должна обозначаться дорога, закрытая с двух сторон знаками 3.2 (если highway=residential + access=destination не подходит)?
На текущий момент, тега который бы однозначно соответствовал знаку 3.2 “движение закрыто”, нет.
похоже на access=destination и на access=private, но access=destination не ограничивает круг лиц, которым разрешен въезд, а access=private не запрещает транзитный рутинг, но предполагает возможность выдавать разрешения на въезд на индивидуальной основе, что для знака 3.2 не применимо.

Я бы обозначал vehicle=no. (No access for the general public. - нет доступа для широкой публики).

Это то и плохо. Это и есть ползучее обессмысливание тегов.

ИМХО, 3.2 тоже фактически не ограничивает. "обслуживают граждан или принадлежат гражданам, проживающим или работающим " - под это дело подходит практически любое ТС, заехавшее по делу, а не транзитом.

vehicle=no - это для “кирпичей” (3.1), когда они висят с обеих сторон дороги. Нет доступа - значит нет.
vehicle=destination - имхо самое логичное для 3.2.

Там же не это совсем написано. Там написано - нет доступа для широкой публики.

Ну и? В чём противоречие?