Адресная схема, используемая osm2mp (гармин/навител)

Описываю схему адресации, которая используется сейчас.
Во всяком случае, адресация для гарминов и навителов строится именно по ней. :slight_smile:
Почему-то в явном виде эта схема нигде пока не была описана.

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

Пока такие 2 замечания:

  1. Нет описания того, как в этой схеме задавать дома с несколькими адресами (например, когда дом угловой);
  2. Улицы может не быть (вместо неё может быть, например, какой-нибудь район/микрорайон) - нужно четче определить значение этого тега (например, по аналогии с http://wiki.openstreetmap.org/wiki/Relations/Proposed/Postal_Addresses).
  1. В этой схеме двойная адресация не предусмотрена. В ближайшее время буду добавлять поддержку релейшенов street, тогда можно будет что-то придумывать.
  2. Слово “улица” используется для совместимости с карлсруе. На самом деле это может быть и квартал, и микрорайон, и любая другая группировка.

Ещё одно общее замечание: нет описания того, как должны выглядеть значения тегов addr:*.
И отсюда же потенциальная проблема: если, например, в теге addr:street мы не используем т.н. статусную часть названия, то не понятно откуда её потом восстанавливать. Если используем, но не понятно как бороться с неизбежной чехардой, когда эта статусная часть либо будет появляться в разных местах названия в разнообразных формах, либо просто будет опускаться тогда, когда это не желательно.

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

Опять же, релейшен street частично решит проблему с разным написанием.

Вообще, адресная схема построенная на релейшенах была бы лишена этой проблемы. Это её несомненный “плюс” по сравнению с адресной схемой на тегах.
А вопрос “чистоты” данных очень важен. И он тем важнее, чем больше база.

asaw, у любых способов всегда есть свои плюсы и минусы :slight_smile:

Еще есть населенные пункты - ноды(точки), они, наверное, должны адресоваться по тем же правилам, что и полигоны. В поиске (навителе) оба типа высвечиваются. А пои в полигоне населенного пункта - адресоваться так же как дома.

//В поиске (навителе) оба типа высвечиваются
по-моему эту проблему давно победили. ищете надеюсь не среди “ближайщих”, а “по адресу”?

я не знаток угловых домов с двойной адресацией, но… когда мне понадобилось обозначить такой дом - я подглядел в карте яндекса или гугла и мне очень понравился вот такой вариант
http://www.openstreetmap.org/?lat=56.841301&lon=60.626854&zoom=18&layers=B000FTF

считаю его 110% оптимальным (дома 91 и 75)

Сейчас начнутся вопли “Костыль! Костыль!”

Извините, не сдержался :smiley:

Какой ужас. :3

Hind,
“ужас” - это про схему вообще или про угловой дом?
Если про схему, то вот скрины с навигатора, при этом адресацию-то никто специально не делал :slight_smile:

Про угловой дом. :slight_smile:
Я тоже не смог удержаться. :3

А как там выглядят улицы, которые в OSM начинаются со статусной части?

А сейчас любая попытка делать двойной адрес будет костылём.
Единственный нормальный вариант - это если в следующих версиях API появится возможность вешать теги на отдельные роли :slight_smile:

у меня сейчас настроена индексация по словам, поэтому в списке поиска “Ивановская улица” будут как “Ивановская улица” и как “улица”, а “улица Иванова” - как “улица Иванова” и как “Иванова”.
Препроцессор для перетаскивания статуса в конец написать несложно, но лениво :slight_smile:

костыль - это когда используется схема, типа
addr:housenumber
addr:housenumber1

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

Возможность вешать теги на роли есть и сейчас, и называется она — отношение.

опишите, как будет рендериться номер углового дома, включенного в 2 отношения? как 91, 75, 9175 или 91/75?
потому что лично я не считаю использование подобной идеи оптимальным. именно по причине некорректного отображения на карте. электронной или бумажной

Тегов у роли в отношении нет.

Это вопрос исключительно графического алгоритма. При желании можно хоть в «как в Яндексе» — притягивать номер к улице. Или, как тут где-то проскакивало, при номере писать сокращённое обозначение улицы.