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

Не, всё забить в одну строку это бред, который невозможно будет анализировать глазами, просто он банально не будет помещаться в окошечко, да ещё и высматривать где там точка с запятой.
Что-то мне навикить Белорусскую схему так и не удалось, в чём там принципиальное отличие от отношения улицы с домами ?

Ну, вроде бы вот это - белорусская схема. http://wiki.openstreetmap.org/wiki/Relations/Proposed/Postal_Addresses
По крайней мере, вики на неё ссылается.

addr:street=ru:улица Ленина;en:Lenina street;uk:;es:;fr:* и т.д.
IMHO, длиннющая строчка из 250 названий на разных языках - неудобно.

Не пойму, почему liosha не нравится предлагаемый патч для osm2mp.pl
По факту на отрезках улиц прописаны названия улиц на разных языках. Отрезки улиц и домики связаны релейшеном.
Берём названия улиц из тегов отрезков улиц - и нет проблем.

Ну первый и очевидный косяк, если на веях количество тегов не совпадает. Допустим не указан какой-то язык, то тогда играет роль с какого вея брать эти данные.

Конвертору достаточно, чтобы хотя бы на одном вее в тегах было название на нужном языке.

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

Вообще то, если подходить к этому вопросу с точки зрения “нормализации данных” (в терминах баз данных), то все отрезки одной улицы, должны быть собраны в collection, а уже только после этого этот *collection *должен входить в состав релейшена с адресацией с ролью street. На *collection *навешивается туева хуча name:xx, которые потом и берутся для названия улицы на нужном языке — в итоге получаем нормальный алгоритм для работы как маперов так и конвертеров, к тому же БД не засирается явно избыточной информацией. Всем профит!

, вообще-то только тех веев, у которых роль street.

...

for my $member ( @$members ) {
               next if !( $member->{role} eq 'street' );
...

Да. Но для начала нужно всего лишь: 1) убедить всех участников OSM пользоваться только такой схемой адресации и стандартизировать схему. 2) переделать все релейшены в базе OSM и убрать addr:street с домиков, объединив их в релейшены. 3) в редакторах Потлач и ДЖОСМ убрать все инструменты для работы с addr:***, переделав всё на работу с релейшенами.

Релейшены в релейшенах - зло. В эту сторону лучше даже не смотреть.

Жаль, а было бы удобно: Область → Район → Поселение → Село → Улица → Дом

IMHO достаточно только name:* на отношении street. Все name:* на веях - ф топку. addr:street туда же.
Ботом регулярно приводить улицы и адреса к данному виду.

Минусы: множественные адреса идут лесом. Далеко и надолго.

Что за множественные адреса ? Что мешает создать два отношения, где члены одни и те же объекты ?

Создать-то можно, но как их будет обрабатывать конвертор?
Сейчас конвертор будет делать так: обработает один релейшен, потом обработает другой релейшен. В результате на домике останется только одно название улицы (из того релейшена, который был обработан последним). А потом конвертер обработает все addr:street и название улицы останется из addr:street. И пойдут лесом ваши мультиязычные названия :frowning:

Множественные адреса (кстати, какой дурак их придумал?) можно обозначать двумя (тремя, четырьмя,…) точками с тегом building=yes и addr:housenumber=*. Точки ставить на контуре домика со стороны соответствующих улиц. Потом точки включить в соответствующие релейшены. Да, это “костыль”. Особенно феерично будет прописывать в таком доме номера подъездов :frowning:

freeExec при включении домика в два отношения, как понять, к какому отношению относится addr:housenumber? Номер дома без смазки в отношение не запихивается.

dimoster в случае с точками POI в здании лишатся адреса. И его (точнее их) надо будет прописывать везде - дублирование информации и огромное поле для ошибок.
И не всегда есть “сторона соответствующей улицы” - в НЧ дома собраны в стриты псевдорайонов, мне с какой стороны ставить точку?

Да, косяк. Тогда стоит использовать гибрид. Где в отношении в роли писать порядковый номер N, а на доме как и в одном из вариантов addN:=*.

Да, с двойными адресами без пол-литры не разберёшься :slight_smile:

Кстати, в Навител они не поддерживаются. Костя Галичский рекомендует привязывать дом только к одной из улиц, а номер дома писать через дробь.

freeExec, ну есть и более чумовой вариант :slight_smile: Вообще отказаться от addr:housenumber, а номер дома записывать в отношение, в роль дома как house:NN.

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

Это как? Там же вроде “один объект - один адрес”?

А в чем проблема то? Сопоставление идет по addr:street = name или addr:place = name. У улицы могут быть name:* Вроде между этими пунктами не возникает противоречий.

Почему-то не идёт :frowning:
Имеем домик addr:street=Гагаріна вулиця и отрезки улицы с name=Гагаріна вулиця, name:ru=Гагарина улица.
После конвертации русскоязычной карты с помощью osm2mp имеем в базе улицу “Гагарина улица” без домов вообще и улицу “Гагаріна вулиця” с домами.

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