Помоги человечеству, или так вот ты какое, недоступное ребро! (OSRM)

Это аргумент, причем ровно тот же, что линки нужно классифицировать по тем же правилам, что и не_линки, по важности в дорожном графе.

Да, по младшей было бы гораздо логичнее.

Но тут как всегда: кто-то когда-то от фонаря написал, а теперь оно непреложное правило.

Лучше на самом деле именно по старшей - бахрома легко отсекается по *_link. А вот если требуется сохранить место примыкания прочих дорог к дорогам высокого уровня, то потребуется вытаскивать линки всех уровней.

И, кроме того, если дорога класса unclassified примыкает к motorway, то, спрашивается, какие должны быть линки в этом случае при выборе линков по минимуму? unclassified_link нет, а просто unclassified приведет к тому, что даже при выборе всех линков данное пересечение будет потеряно.

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

PS. В принципе, в OSM действует вполне логичный принцип: если локальное правило отличается от общего, поступать следует именно по локальному правилу. А локально, как видим, максимум.
Кстати, алгоритмически достаточно просто построить валидатор, но мне как-то такие не попадались.

Это плохо, т.к. не имеет никаких преимуществ и при этом затрудняет использование данных.

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

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

Ну и последнее, касающееся логики: если для trunk это еще не обязательно, то для motorway наличие link является обязательным. При этом обязательность обусловлена именно статусом “максимальной” дороги. Т.е. по логике, выходит, нужно исходить из максимума.

Мне больше нравится по младшей. Имхо - это логичнее: мы же при классификации основываемся на “популярности” маршрута, естественно что “популярность” сьезда = популярности той дороги на которую сворачиваем, а не основной.

А они (более низкие дороги) могут и вообще без линков примыкать. Чем тогда алгоритм будет отличаться?

И где эта задача стоит? При генерализации задача формулируется по другому: вытащить все что старше праймари, наплевав на все что ниже, примыкания секондарей и т.д. при генерализации не вытаскиваются.

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

Единственное место где имхо стоит брать по максимуму - это моторвеи, т.к. маркировка моторвейная начинается как правило сразу после пункта оплаты (контроля оплаты) и т.к. на моторвейных линкахъ особый режим движения (знак автострады ставится на начале/конце линка + иногда ограничение).

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

Кто сказал, что не вытаскиваются?
При генерализации стоит задача избавиться от “лишних” точек на вее. И с точки зрения “какие точки выкидывать” представляется разумным, что в первую очередь выкидываются точки, в которых нет пересечения с дорогами более низкого уровня.
Как отличить одни точки от других?

Для моторвея - всегда.

Вот именно.
Для моторвея очевидно, что линки должны устанавливаться по максимуму, и иных точек зрения быть не может.
Теперь альтернатива звучит только так:

  1. Все линки подчиняются единым правилам.
  2. Для линков в зависимости от статуса дороги правила различаются.
    Мне 2-й вариант кажется неразумным. А раз так, единственный возможный вариант - по максимуму.

Вашему утверждению противоречит факт, что кроме motorway_link существует еще 4 типа линка.
Если бы Вы были правы, линков существовал бы только один тип.

PS. Мне кажется, прежде, чем рассуждать о том, что логичнее, нужно сначала найти ответы на два вопроса:

  1. Зачем линки выделены в отдельную категорию, т.е. зачем разделены tertiary и tertiary_link?
  2. Зачем линки различаются между собой, т.е. зачем различаются secondary_link и tertiary_link?

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

В вики емнип написано что линки дополняют развязки ушами, что если линки убрать то должен остаться просто перекресток. Только учитывая что мы общих точек на пересечениях автодорог в разных уровнях не ставим + рисуем крупные автомагистрали двухвейками это правило де факто не выполняется. Если убрать линки мы полуим несвязанные автодороги.

Помятуя о выше сказанном я смысла в транк/праймари/секондари/тертиари-линках не вижу никакого, и собственно говоря по этому стараюсь их не использовать. Чего и всем остальным к новому году желаю :slight_smile:

  1. Сворот на линк неплохо бы озвучивать в нафигаторе. А из геометрии не всегда ясно что это поворот.
  2. Для красоты отрисовки, как минимум.

Господа, ну что вы пытаетесь доказать-то? :smiley:

Ну, то есть, если мы едем по tertiary6 и пересекаем unclassified, то спич навигатора должен различаться для unclassified и tertiary_link?
Или, наоборот, едем по unclassified, то различие для tertiary и tertiary_link?

Красота - страшная сила.
Но коль скоро мы уже умеем различать tertiary и tertiary_link, разве это не способствует “красивому” оформлению картинки?

Мне кажется, любая попытка ответить на эти вопросы в контексте навигатора или рендера не приведет к успеху в силу локальности данных. В случае же генерализации стоит задача выборки заранее ограниченного объема данных из объема, который явно существенно больше допустимого (если это не так, генерализация не нужна), а, следовательно, должны быть средства, позволяющие выбрать нужные данные в минимально возможное количество проходов.
Указанная мной выше задача решается в 1 проход, если сделать линки по максимуму, и не может быть решена в 1 проход в противном случае.

Мы едем по тертари и на развилке tertiary и tertiary_link обязательно озвучиваем поворот на tertiary_link, хотя из геометрии это может и не следовать (очень очень слабый правый или tertiary ушла левее, а линк ведет абсолютно прямо)

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

Мне вот интересно как?
С учетеом что транк/праймари/секондари/тертиари может соединяться с низкокласными дорогами не через линк.

Ну и когда это у нас генерализация стала важнейшим из искусств и мерилом логичности?

Ну и опять же, классификацию веев мы стироим на основе популярности маршрута, почему популярность съезда принимается равной популярности основной трассы?

И Андриано, не надо сюда мешать вопросы конкретной реализации алгоритма решения 1 из задач (генерализации). При фильтрации данных, коли есть желание оставлять все пересечения, даже с линками на дороги которые отфильтровываем, ничто не мешает фильтрануть по highway=*_link

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

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

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

Угу, даже гармин ни в чём не разбирается :smiley: