Мультиязычные адреса

Далеко не все веи входят в релейшны. Потому: предложенное - вандализм.
По хорошему нужно вводить в ОСМ новую сущность - объект, и освобождать узлы, пути и отношения от несвойственных им функций (в частности, от всех тегов).

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

Нет, нужно изначально проектировать структуру данных так, чтобы не было ограничения “один объект - один адрес”.

Отнюдь.
Нужно просто понять, что адрес - это самостоятельная сущность.
Итак:

  1. Дом в виде узла или вея.
  2. Адрес по улице 4 в виде релейшна со ссылкой на 1 и номером дома.
  3. Адрес по улице 5 в виде релейшна со ссылкой на 1 и номером дома.
  4. Улица-релейшн, ссылающаяся на адрес-релейшн 2.
  5. Улица-релейшн, ссылающаяся на адрес-релейшн 3.

Об этом есть пропозал?

Ещё вариант обозначения множественных адресов вроде ул. Садовая, 7 / ул. Парковая, 22 :
На полигон домика вешаем тег addr:housenumber=7 и включаем его в релейшен ул. Садовой.
На контуре полигона домика вешаем точку с тегами building=yes, addr:housenumber=22 и включаем его в релейшен ул. Парковая.
Если в доме есть POI, размещаем их внутри полигона домика. При этом POI получают адрес из тегов полигона здания и релейшена улицы
(ул. Садовая, 7).

Так что если таксист с навигатором будет искать ул. Садовая, 7 - навигатор приведёт к домику.
если будет искать ул. Парковая, 22 - приведёт туда же.
А если будет искать по названию POI, то какая разница по какому из двух адресов он его найдёт, если это один и тот же дом.

andriano, ну ты, ей богу, как вчера родился… Все это уже по пятому кругу предлагается, обсасывается и отвергается…

:facepalm: видимо только тебе непонятно, что убирать name:* надо с тех веев, которые уже собраны в адресный street. На остальных пусть пока остается.

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

P.S. А ты точно программист?

Это поломает конвертацию у тех, кто не поддерживает адресные отношения. Т.е. на данный момент у большинства.

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

Нет, потому что это (как и все схемы с отношениями, пока) не позволяют указать какой адрес главный. И это зверский overcomplication несовместимый с реальным миром.

Первую проблему можно было бы решить так: на каждый дом создаётся одно отношение “набор адресов”, а внутри него уже что-то из существующих схем - проще всего та что с номером дома в role, но можно и тот ад, что ты предложил. Главное, что адреса в таком случае будут упорядочены.
Вторую решить сложнее, потому что нет, мы не можем просто взять и перейти на такие сложности для самых базовых объектов на карте - как минимум, нужна полная поддержка во всех редакторах.
Без решения обеих проблем адресные отношения использовать нельзя.

К сожалению, без отношений полного решения тоже нет. addr:street можно матчить с улицей (дабы выбрать оттуда нужные name:*), но это не работает для адресации по не-улицам. Можно матчить и с place, но и place может не быть (кстати, использования addr:place тут поможет тем, что ускорит поиск). Но на практике непокрытыми остаётся такое незначительное количество случаев, что им можно либо пренебречь (оставив адрес на одном языке), либо исправить добавлением условно-фейкового place, либо добавлением addr:place:{lang} только для таких объектов. Затраты и возможные проблемы от этого на порядки меньше любых извращений с отношениями.

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

А моё предложение постом выше? http://forum.openstreetmap.org/viewtopic.php?pid=279208#p279208
Тот адрес, который на тегах полигона домика, а не на точке - тот и главный.

Так стоит применять схему с отношением хотя бы для домов с одним адресом, которых вообщем-то 98% ?

У нас в Украине схема с отношениями широко применяется и рекомендована к использованию.
Но вообще-то мне не нравится такой разнобой со схемами. Интересно, а что по этому поводу думают в DWG?

Немножко про Беларусь.

Дом линкуется к улице по addr:street=name + ближайшее расстояние.
name:* лежат на линии улицы, в доме - только addr:street.
Если в доме несколько адресов, то адреса стоят на точках внутри зданий и линкуются аналогично.

Как это работает, можно посмотреть по указателю вверху карты, например, на http://openstreetmap.by/?zoom=18&lat=53.898315&lon=27.556999 - попереключайте языки, чтобы увидеть разные адреса на русском-английском-белорусском.

Попытки решать это как-то иначе (через сложные релейшены, тегами addr:street:*) в целом показали свою неэффективность.

Но почему тогда при конвертации не подхватываются name:ru с тегов линий улицы, а берётся значение addr:street на том языке, на котором оно написано?

Я имел в виду вот это http://www.openstreetmap.org/browse/relation/81697
a1 - Страна

a6 - улица с домами

Структурированная схема, готовая для конвертации, с name:*
Можно про нее поподробнее, и функции препроцесорра который, насколько я знаю, ее обрабатывает перед конвертацией в MP

Точки даже рассматривать не стоит.

Нет. Во-первых, иметь две схемы нельзя, во-вторых, сложность никуда не девается.

Это не решение проблемы, а уход от нее.
Адреса - объективно у дома, а не у точек внутри него. У нас же получается, что у одного объекта все равно не может быть двух разных адресов, а разные адреса - у разных объектов (у полигона и у точки).

Это нелогично: правило должно быть одно - общее.
Это во-первых.
А во-вторых, чем тег name:* отличается от других тегов, что убирать нужно именно его?
И что делать в случае, когда улица обозначена hw=residental, а в отноршении - она же hw=primary?

Выше чем где? В варианте с точкой внутри дома с самостоятельным адресом?
Система адресации в первую очередь должна быть логичной и только после этого компактной.
Правильно надо расставлять приоритеты. Иначе вместо “улица Ленина” нужно писать исключительно “ул. Ленина”, а то иначе “профит отрицательный”.

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

Мне кажется это неверно, т.к. направление связей обратное тому, которое должно быть. Адрес должен ссылаться на дом, а не дом на список адресов.

Мне, кстати, идея эта нравится, увы у нее на сегодняшний день совершенно неудовлетворительная реализация - без служебного слова в role - что не позволяет отделить адреса от прочих ролей.

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