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

Что-то мне эту тему напомнило.

Что вы так убиваетесь? Вы же так не убьётесь! (С)

Гораздо больше новичков, которые рисуют связанные дороги без общей точки, явно нарушая граф маршрутизации (не имея при этом о нём ни малейшего понятия). Я думаю, в целях минимизации зла умолчальное значение этой настройки выставлено правильно.

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

  1. Я освоил и не только их
  2. На скриншотах в левой половине результат работы плагина Graphview от графа который нарисован в правой части скриншотов
  3. Речь о новичках. Которые не знают что такое запрет на поворот. Не знаю что такое навигационный граф. Не знают что есть навигационные правила и что есть утилиты (вне JOSM) чтобы их проверить. Которые зашли в JOSM порисовать домов и решили от нечего делать дорисовать дороги в некоторых местах.

ИМХО, слишком синтетическая ситуация. Надо чтобы

  1. Две дороги, AB и CD, которые пересекаются но так, что съехать с одной на другую нельзя
  2. Кто-то уже нарисовал дорогу АB, но ещё никто не нарисовал CD
  3. Новичок взялся нарисовал дорогу CD и, получив предупреждение JOSM, не попытался выяснить как правильно и тупо поставил точку пересечения.
    Даже если всё это сложится, мы получим ошибку в базе, да.
    ИМХО, вероятность этого очень низкая. Такие пересечения на крупных дорогах уже должны быть отрисованы, а на мелких - риск некорректного роутинга небольшой, скорее всего недалеко можно будет съехать.
    С учётом всего, риск вполне допустим. Сопоставим с риском нарваться на ремонт дорог и т.п.

С другой стороны, если мы выключим эту опцию в JOSM по умолчанию, в базе скоро будет тонна перекрёстков в городах и сёлах без общей точки дорог, т.е. по которым не будет работать роутинг.

  1. Она ни разу не синтетическая а возникает на любом перекрёстке “квадратом” одностороннем

Как это происходит? Вы рисуете эллипс горизонтальный. Вы рисуете эллипс вертикальный. Эти два эллипса это дороги только односторонние. Образуются четыре области где эти накладываются. Если поставить хоть в одну эту область точку (точнее - соединить два ребра в графе) то вы сможете “прыгать” с одного колечка на другое.

Редактор JOSM по умолчанию заставляет вас сделать с пересекающимися путями.

Если вы ставите четыре точки - как JOSM просит - в центральном квадрате вообще возникает круговое движение. Которую нужно теперь запрещать?! Эта х$#я происходит происходит потому что "we’re core developers of JOSM for several years джосма которые заставляют всех пользователей OSM рисовать ПОД РЕНДЕР

http://josm.openstreetmap.de/ticket/10200
Когда у osm будут нормальные роутилки с такими ебан!@ в “core dev” - я не знаю. Пусть эти идиоты до посинения тикет минусуют, они полные профаны в роутинге если не понимают что такое связанность графа, а прямоугольники - да, пусть рисуют. Жаль только обычным пользователям приходится изворачиваться (рисуя кресты внутри квадрата и делая всяческие запреты) из-за этих идиотских и необоснованных традиций.

Вы, я смотрю, очень хорошо разбираетесь… Для информации - некоторые алгоритмы роутинга не работают, если нет нода в точке пересечении рёбер графов. Надо отметить это не “тупые алгоритмы”, а наоборот очень продвинутые вроде генерализации графа по уровням и т.д.

Всего-то дел - отключить проверку в JOSM.

Так, секундочку.
Это мост (одна дорога сверху, друга снизу) или это перекрёсток, где нельзя поворачивать?
Если это мост, то надо ставить bridge и/или layer, а ставить общие точки нельзя.
Если это перекрёсток, где нельзя поворачивать, то надо ставить общие точки и рисовать запреты.
Рендерер тут ни при чём, это схема данных ОСМ.
Например, если нужно построить роутинг для чего-то, что имеет право игнорировать запреты поворотов, то однозначно нужна общая точка.

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

Если новичок рисует дорогу двумя линиями, не проставил bridge/layer или запреты поворотов или не знает что тут за тип пересечения дорог в реале и не хочет это выяснять, то он вам такого в базе ещё может наколбасить, мало не покажется. От таких умельцев вы не защититесь ни чем, кроме премодерации.

А вот ошибка “дороги пересекаются, но пользователь не поставил общую точку” - она очень частая. Сам периодически налетаю, спасибо JOSM-у, подсказывает.
JOSM, кстати, говорит только “Crossing ways”. Он не говорит, что надо поставить общую точку или какие-то тэги.

  1. Так ведь дело не в алгоритмах. Дело в том, какой граф навигационный в базе указан.

Опять мой пример с круговыми дорогами, они правда часты кое-где. Я нарисовал без одной лишней точки, линии и запрета хоть на один поворот. Там нет точки это потому что там нет связи никакой с другим ребром. Точка это не просто точка, она свяжет граф роутнга новым ребром (в РЕАЛЬНОМ мире этого ребра т.е. направления откуда-куда проехать нет).

Нет-нет-нет. Это уже практика тегирования. Почитайте “руководства для новичков” на которые они пытаются сослаться.

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

Вот только что проще: заставлять всегда этими правилами рисовки под рендер указывать сначала 45 рёбер на перекресток, запрещать 35 запретами всевозможных манвров. Либо дать людям соеденить 10 линий???

Нельзя? Потому что то??? Обязательно точки ставить на пересечения дорог? Потому что этот дурачок занимается бредом много лет и так не понял этого? Зачем это?

  1. “Тупые” A* они тупые но с эвристиками lat lon reach они позволяют роутить в масштабах графа дорог США. 0.005 секунды на запрос через всю страну - для тупого алгоритма это плохо? http://research.microsoft.com/pubs/64505/goldberg-sp-wea07.pdf

Это не мост, это самый настоящий граф роутинга на местности где есть одностороний квадратный перекрёсток, но запрещено "перескакивание с одного кольца на другое - хоть в каком виде нельзя попасть с одного маршрута на другой, нет такого пути-линии.
“Традиция” ставить точку на видимых дорогах (не на графе роутинга) приводит к тому что у вас граф создаётся не тот, что в “действительности”.

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

d1g, можно более чёткий пример, когда не должно быть точек? Я не могу понять…

Ещё раз.

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

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

Я понимаю что это схема, они от того не становится более человечной ни к людям ни роутерам. Быстрый пример: только две линии 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=* создает правильные непересекающиеся дороги ??