Неправильное поведение JOSM

Я понимаю что это схема, они от того не становится более человечной ни к людям ни роутерам. Быстрый пример: только две линии AB, CD. Односторонне, на одному уровне дороги идут. AB никогда не будет роутить на CD. Воообще-вообще никого, даже катки. ПДД такое. Я не могу указать как я хочу сейчас обойдясь четырьмя точками (вершинами графа) и двумя рёбрами. Требуют с меня точку в том проклятом месте. Изза этой точки возникает маршрут AB-O-D которого вообще не было (две всегда прямые).

Это если 2 дороги - 2 направления возникает, если больше - еще больше. Их нужно запрещать. 2 двусторонние дороги пересеклись - это два ПОЛНЫХ ГРАФА АВТОМАТОМ - 12 рёбер (почему обязаны указывать полный граф а потом плясать от этого?) Вот 7 дорог сходятся в одной точке via. Сколько как вы думаете нам направлений создаётся? Попробуйте посчитать.

Дело в том, что мне выбора не дают: указывать полный граф, либо начинать с дорог у которых нет направлений-путей и соединять по-потихоньку каждое направление. Оттуда-сюда. Нет такой возможности.

Cd_spb, сейчас по времени режет, если будет возможность - завтра с картинками продолжу в теме двуполостного роутинга, там самое место

Это не вопрос к JOSM, и не его баг.
Если вас не устраивает схема данных, надо обсуждать схему данных, а не требовать что-то исправить в JOSM.

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

Меня вот в схеме данных не устраивает, что ради отношений маршрутов и запретов нужно все улицы нарубать (в пределе) поквартально. Но я пока не могу предложить не костыльного решения в рамках текущего API, поэтому нарубаю и “не жужжу”. :slight_smile:

А вообще, разговор напоминает притчу о слепцах и слоне.
Одни тут пытаются рисовать изначально схему движения, а другие - инфраструктуру (а возможности движения - уже новым уровнем), третьи - какой-то компромисс, ориентированный на удобство использования. Вот и вся история.
P.S.: Я отношусь к третьим, с сильным уклоном во вторые.

Это вопрос в JOSM почему он считает мои два эллипса перекрёстком неверными. В формате xml osm такого бреда нет. Вы же помните - любые теги, это мы просто документируем всё стараемся. Попробуйте замапить такие два эллипса и использовать уже имеющиеся роутилки - они будут отлично роутить по этим кружкам, не перепрыгивая с одного на другой. Роутилки работают 100% правильно, osmxml полностью без вопросов позволяет мне такое мапить, какого черта JOSM запрещает это? Он не просто* советует или предупреждает о накладывающихся путях*, а запрещает так мапить этот несчастный жосм? Что этот core dev может? Нубом назвать? На руководство новичков сослаться?

Это. Принятая. Схема. Данных. В. ОСМ.
Что непонятного?
Если вы нарисовали две пересекающиеся дороги без общей точки и без bridge/tunnel/layer, то вы либо случайно ошиблись, либо намеренно пытаетесь внести в базу неправильные данные.
Вот пример в keepright. Он тоже не прав?

И никто вам не запрещает. Можно просто игнорить ошибку, можно нажать Ignore, можно отключить в настройках.
Но лучше всё-таки соблюдать схему данных.

О как у вас тут весело оказывается. :slight_smile:
Я могу мысленно только представить пересекающиеся маршруты без точки, только воздушные или водные.
Но чтобы представить две дороги которые пересекаются и не имеют пересечения… :slight_smile: Да в самой этой фразе самоисключение.

Увольте, он даже не записывает его в ошибки, а всего лишь в предупреждения.

Кто-то здесь истерию развёл. При этом не понятно, чего хочет человек и какой практический пример (словесное описание местности, ссылку на место привести - неа?) его так раззадорил.

дыкЪ, станадртная ситуация: чел тянет в наш монастырь свой крутой устав с блекджком и прочими плюшками, и ему глубоко по пояс имеющийся, годами отрабатываемый и от этого работающий.
мож ему по работе хитровы**анность така нужна.
п.с: я не успел во весь тред вникнуть, обьемен он велико: ему сказали что layer=* создает правильные непересекающиеся дороги ??

Его раздражают желтые обводки вокруг сегментов http://forum.openstreetmap.org/viewtopic.php?pid=432261#p432261
Не разобравшись, поспешил открыть тикет со статусом critical, требовать к себе повышенного внимания от разработчиков, нахамил им, начал учить их роутингу. Хотя решения вроде простые:

а) отключить проверку пересечений в конфигурации валидатора, или
б) после проверки сделать invisible слой Validation и скрыть ненавистные предупреждения

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

Вот-вот-вот, вы очень близко подобрались к корню всех зол.

Почему мы считаем что в воздухе есть какие это абстрактные пути, а дороги должны быть только физическими?

Ведь дороги это не рельсы!!! У них есть ширина где машины могут маневрировать влево-вправо, да вилять. Машины умеют сходить с рельс. Не нужно рисовать их дорогами-рельсами без какой-либо ширины.

Старая модель работает в 80% случаях - в сельских поселениях, в спальных прямоугольных районах, в простой застройке кварталов с улицами под 90 градусов. Это работает даже на, казалось бы, “сложных” развязках магисталей - но они и правда похожи на рельсы в большинстве.

Старый подход не работает на площадных перекрёстках где машины ездят по площади от 60 до 4000 м^2.

  1. Почему вы отмечаете площадь точкой и ждете что роутилка будет адекватной
  2. Почему вы отмечаете площадь не площадью, а 5, 10, 20 линиями и ждете что это будет работать?

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

Отлично работает. Если правильно разрисовать площадь линиями и проставить запреты поворотов - обычный алгоритм будет рассчитывать правильный маршрут.
Можете привести пример, где правильно разрисовать невозможно?

Предлагайте, почитаем.
Только имейте ввиду, что

  1. По дорогам не только машины ездят, а ещё велосипеды и люди ходят иногда. Роутинговый граф должен позволять просчитывать маршрут и для них.
  2. Пока не наблюдается алгоритма построения маршрута по area-объектам.

У кого не наблюдается? У OSM??? Еще бы: вы все площади пытаетесь линиями с нулевой шириной и точками обозначить. Пренебрегать шириной нельзя. Либо можно, но не ждите от роутилок хоть каких-то улучшений.

В большом мире еще как наблюдается: http://en.wikipedia.org/wiki/Traffic_simulation, http://en.wikipedia.org/wiki/Motion_planning. Последний подход ресурсоёмкий, но действительно больших площадных перекрёстков немного, можно и помапить их асфальтовой площадью с разметкой.

Запросто, я начну с очень простого примера, но даже на нём ваш “рабочий” подход будет непригоден для серьезного использования (точный расчёт пути, адекватные подсказки на сложных путеводах), а не просто “попасть из точки А в точку Б”.

http://ge.tt/2LUWNUn1/v/0?g
http://freakshare.com/files/euge6qbl/demo-oldschema-limitations-1.osm.html
(если ссылки не работают - скажите куда выложить лучше)

Очень простой пример: двусторонние дороги A, B, C, D (запад-север-восток-юг) выходят на площадь в 700 кв. метров (я не соблюдал масштаб, перерисуйте по метрам, если вам это принципиально)

  1. нужно связать B-D, D-B
  2. нужно связать A-C, C-A

попробуйте обозначить это так, чтобы роутилка была хоть сколько-нибудь адекватной.

Учитывайте, что:
3. Я буду спрашивать у вас адекватность разворота для грузовиков 3 тонн и грузовиков 20+ тонн с двойными фурами
4. Я буду спрашивать у вас адекватность подсказок для легковых машин
5. Я буду спрашивать у вас адекватность подсказок для мопедов и велосипедов
6. Это только начало

Насколько я вижу, первое вообще не про построение маршрута, а про моделирование траффика множества участников в дорожной сети
Есть оценки, сколько второй алгоритм будет строить маршрут Кейптаун - Магадан, если все дороги будут нарисованы только area-объектами?

Кто же пускает 20 тонные грузовики на площадь в 700 кв. метров в городе (иначе непонятно, что там за легковушки, велосипедисты и пешеходы)?
Давайте пример из жизни, а не сферический перекрёсток в вакууме.
ИМХО, если есть перекрёсток и на нём размечено движение, то по этой разметке и правилам ПДД можно нарисовать правильный дорожный граф линиями с нулевой шириной.

А если на перекрёстке не нарисовано, как тут должны поворачивать 20 тонные грузовики или двойные фуры отличным от легковушек способом, то, извините, я не могу нарисовать для этого дорожный граф, я не водитель 20 тонной фуры.

Вы сначала простой сделайте? Взяли слово - держите.

Реальный пример? Вы сразу решили обосраться на путепроводе с 6 подъездами и площадью 2500 метров с круговым движением? Такой путепровод даже приведенные мной методы с трудом возьмут.

ИМХО, если есть перекрёсток и на нём размечено движение, то по этой разметке и правилам ПДД можно нарисовать правильный дорожный граф линиями с нулевой шириной.

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

Покажите, пожалуйста, где я “взял слово” нарисовать движение на какой-то развязке.
Я вас попросил привести пример, где правильно нарисовать невозможно.
И выссказал мнение, что если дорожная разметка нанесена и маппер знает ПДД, то он сможет нарисовать дорожный граф.
Я нигде не утверждал, что я смогу это сделать.

Адекватный для роутилок любых транспортов? Не сможет. Учитывая:

  1. соглашение OSM (или российской части) highway=* указывает “проезжая часть” (ПДД)
  2. highway=* рисуется строго по середине проезжей части (которая может быть и 50 метров, а может вообще постоянно менять ширину)
  3. обязательные точки на пересечениях путей
    Никогда не сможет.

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

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

Понятно.

Ладно, предлагайте ваш способ отрисовки дорог

Старый граф не нужно трогать. Те, кого устраивает навигация по графу пусть ей пользуются. Она не ресурсоёмкая и работает для базового роутинга (из точки А в точку Б).

Вкратце:
0. обозначаем все возможные виртуальные направления: стоп линия - назначение

  1. перед входом на площадь развязки рисуем стоп линии (виртуальные стоп линии также возникают перед рельсами трамваев и поездов),
  2. рисуем surface=asphalt (трейсим асфальт площадей как мы трейсим леса)
  3. режем асфальт по дорожной разметке
    3.1 двойная сплошная - рисуем линию двойной сплошной
    3.2 островок треугольный по ПДД - отмечаем запрет для соотв. видов транспорта
    3.3 кусок асфальта только для автобусов - вырезаем его из полотна и отмечаем
    3.4 каждый пункт дорожной разметки по ПДД
  4. размечаем светофоры и правила переключений светофоров
  5. Запускаем http://en.wikipedia.org/wiki/Motion_planning
    5.1 “выкидываем” машины со стоп линий
    5.2 запрещаем двигаться где нельзя и моделируем запреты согласно 3
    5.3 ждем пока они доберутся до “назначений” из пункта 0

Это будет работать на любых площадных развязках но без кругового движения. Круговое движение я пока не знаю обойти - если кто подскажет - отблагодарю.