Описываю схему адресации, которая используется сейчас.
Во всяком случае, адресация для гарминов и навителов строится именно по ней.
Почему-то в явном виде эта схема нигде пока не была описана.
Я знаю, что схема далеко не идеальная и плохо подходит для некоторых случаев,
но она достаточно простая и не требует специальных усилий для поддержания, что для OSM принципиально.
Используется система тегов карлсруе,
но в отличие от прямой карлсруе, где у каждого объекта все адресные данные прописываются полностью, тут используются два уровня адресации: объекты (обычно дома) и населённые пункты.
Населённые пункты нужно обозначить как полигоны с тегами place=city/town/village/hamlet и названиями.
Для них указывается страна (addr:country), и при необходимости регион (addr:region), район (addr:district) и, в случае неоднозначности, сельсовет (addr:subdistrict).
Для объектов (домов, улиц etc) достаточно прописать только адрес внутри населённого пункта.
Обычно это улица (addr:street) и номер дома (addr:housenumber).
В качестве дополнительных единиц адресации можно указать район (addr:suburb) и квартал (addr:quarter). Все остальные данные наследуются из населённого пункта, в полигон которого этот дом попал.
Дополнительно в качестве эксперимента osm2mp умеет получать название улицы из релейшена street, и название района из полигонов addr:suburb, но в целях совместимости пользоваться такими вещами не рекомендуется.
Ещё одно общее замечание: нет описания того, как должны выглядеть значения тегов addr:*.
И отсюда же потенциальная проблема: если, например, в теге addr:street мы не используем т.н. статусную часть названия, то не понятно откуда её потом восстанавливать. Если используем, но не понятно как бороться с неизбежной чехардой, когда эта статусная часть либо будет появляться в разных местах названия в разнообразных формах, либо просто будет опускаться тогда, когда это не желательно.
asaw, со статусной частью договориться не получается уже несколько лет
Да, будет чехарда, но тут уж как нарисуют, так и будет.
Пока местные сообщества сами решают, в каком виде им писать статусы.
Опять же, релейшен street частично решит проблему с разным написанием.
Вообще, адресная схема построенная на релейшенах была бы лишена этой проблемы. Это её несомненный “плюс” по сравнению с адресной схемой на тегах.
А вопрос “чистоты” данных очень важен. И он тем важнее, чем больше база.
Еще есть населенные пункты - ноды(точки), они, наверное, должны адресоваться по тем же правилам, что и полигоны. В поиске (навителе) оба типа высвечиваются. А пои в полигоне населенного пункта - адресоваться так же как дома.
А сейчас любая попытка делать двойной адрес будет костылём.
Единственный нормальный вариант - это если в следующих версиях API появится возможность вешать теги на отдельные роли
у меня сейчас настроена индексация по словам, поэтому в списке поиска “Ивановская улица” будут как “Ивановская улица” и как “улица”, а “улица Иванова” - как “улица Иванова” и как “Иванова”.
Препроцессор для перетаскивания статуса в конец написать несложно, но лениво
опишите, как будет рендериться номер углового дома, включенного в 2 отношения? как 91, 75, 9175 или 91/75?
потому что лично я не считаю использование подобной идеи оптимальным. именно по причине некорректного отображения на карте. электронной или бумажной
Это вопрос исключительно графического алгоритма. При желании можно хоть в «как в Яндексе» — притягивать номер к улице. Или, как тут где-то проскакивало, при номере писать сокращённое обозначение улицы.