You are not logged in.

#76 2012-10-03 12:39:07

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

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

Offline

#77 2012-10-03 13:39:02

Marych73
Member
From: Ташкент
Registered: 2011-01-18
Posts: 283

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

Komяpa wrote:
Marych73 wrote:

1-Белорусская схема

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

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

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

Last edited by Marych73 (2012-10-03 13:52:11)

Offline

#78 2012-10-03 13:52:56

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

dimonster wrote:

Тот адрес, который на тегах полигона домика, а не на точке - тот и главный.

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

freeExec wrote:

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

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

Offline

#79 2012-10-03 17:07:46

andriano
Member
Registered: 2009-06-15
Posts: 1,667

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

dimonster wrote:

На полигон домика вешаем тег addr:housenumber=...
На контуре полигона домика вешаем точку с тегами building=yes, addr:housenumber=22...

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

Offline

#80 2012-10-03 17:13:18

andriano
Member
Registered: 2009-06-15
Posts: 1,667

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

ikz wrote:

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

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

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

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

Offline

#81 2012-10-03 17:20:48

andriano
Member
Registered: 2009-06-15
Posts: 1,667

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

AMDmi3 wrote:

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

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

Первую проблему можно было бы решить так: на каждый дом создаётся одно отношение "набор адресов"

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

...проще всего та что с номером дома в role

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

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

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

Offline

#82 2012-10-03 17:23:40

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 8,485

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

andriano wrote:

И что делать в случае, когда улица обозначена hw=residental, а в отноршении - она же hw=primary?

Как в отношение вообще попало hw= ?
Что-то я пролестнул назад и не нашел объяснения чем плохо если указать в роли для дома "1" в одном отношение (главная улица для дома) и "2" или пусто в другом (второстепенные и прочие дублирующие адреса) ?

Offline

#83 2012-10-03 18:01:43

andriano
Member
Registered: 2009-06-15
Posts: 1,667

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

freeExec wrote:

Как в отношение вообще попало hw= ?

Это надо спрашивать у того, кто туда его поместил. Могу лишь отметить, что это достаточно распространенная практика.

Что-то я пролестнул назад и не нашел объяснения чем плохо если указать в роли для дома "1" в одном отношение (главная улица для дома) и "2" или пусто в другом (второстепенные и прочие дублирующие адреса) ?

На сегодняшний момент неофициально подразумевается, что если в роли стоит цифра "1", то это значит "дом номер один".
Проблема здесь в том, что адрес не обязан быть числом, поэтому не существует формального алгоритма способного определить, что значение роли является именно адресом, а не чем-то иным.
По-хорошему должно быть что-то вроде "role=bno:123a литер Ц корпус 11 строение 8", где "bno:" - служебное слово для отличия адресов от всего остального.

Offline

#84 2012-10-03 19:39:42

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

andriano wrote:

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

Это предположение неверно.

andriano wrote:

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

Это неверно. Потому что на практике есть один главный адрес + (десяток неофициальных) * (десяток разных написаний), и все они используются.
Главный адрес надо писать на доме в рендерах и именно его использовать там, где поддерживается только один адрес. Но дом должен искаться и по любому из остальных адресов.

andriano wrote:

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

На самом деле связь направлена в обе стороны. Но мы указываем только одну, и если другую можно из неё восстановить, какую именно использовать - непринципиально.

andriano wrote:

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

Тэги, тэги. Поэтому альтернативы карлсруэ и нет.

Offline

#85 2012-10-03 19:42:05

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

freeExec wrote:

Что-то я пролестнул назад и не нашел объяснения чем плохо если указать в роли для дома "1" в одном отношение (главная улица для дома) и "2" или пусто в другом (второстепенные и прочие дублирующие адреса) ?

Тем что это невозможно сделать. Нельзя понять какое отношение главное.

Offline

#86 2012-10-03 20:21:30

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 8,485

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

AMDmi3 wrote:

Тем что это невозможно сделать. Нельзя понять какое отношение главное.

Не понимаю почему так.
multiaddr.gif
Берем дом, берем его отношения и ищем в них его с ролью равной числу "1" -> Это его главная улица. Соответственно наоборот, берем отношение "улица" пробегаем по домам, в них сверяем номер с нужным индексом в доме -> находим нужный дом.

Offline

#87 2012-10-03 21:14:32

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Понял. Какой ужас. Вообще-то, ваши стрелки из данных никак не следуют - у дома есть только номера, без улиц и он никуда не ссылается. А у улиц, значит, в role задаётся номер номера дома в доме.
Ну это немного нежизнеспособно. Схема хрупкая, ибо от смены любого номера всё рассыпается. Данные размазываются по нескольким объектам, для редактирования надо лезть во все. Собрать адрес можно только имея все объекты, причём довольно интересно как будет выглядеть на SQL извлечение номера по номеру... Не, не канает.

Offline

#88 2012-10-04 06:38:25

dimuzz
Member
From: Екатеринбург
Registered: 2009-09-10
Posts: 1,843

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

Marych73 wrote:
Komяpa wrote:
Marych73 wrote:

1-Белорусская схема

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

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

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

Схема отлично работает с мультиязычностью, но у нее побольше накладные расходы (для построения полного адреса нужно последовательно вытаскивать всю цепочку отношений, что и делает препроцессор), чем у схемы с адресацией, основанной на вхождении в полигон НП. Еще один минус схемы - он корректно работает только в условиях строгой вложенности.
Я ж для того и предлагал сократить вложенность ровно до двух (дом и город), чтобы данные можно было использовать напрямую из объектов и, на мой взгляд, более дуракоустойчивую.
По сути это похоже на схему с отношениями, но не с последовательной вложенностью, а с вложенностью, равной двум: все внутригородские атрибуты адреса (a4-a6) навешиваются на дом, а все атрибуты адреса города (a1-a3) - на город (или же дом входит во все внутригородские отношения, а город - во все отношения региональные).
Дополнительно предлагается разрешить использовать не числовые, а общепринятые названия (addr:a1 = addr:state = addr:region = addr:province etc). Конкретные теги есснно обсуждаемы.

Offline

#89 2012-10-05 07:45:04

Marych73
Member
From: Ташкент
Registered: 2011-01-18
Posts: 283

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

Пока идет дисскусия, хочу предложить мой способ, получить name из name:ru - там где это прописано соотвественно.
Я думаю этот вариант будет полезен тем, кто конвертирует данные напрямую из OSM файлов.

Нам понадобится osmosis и 2 плагина к нему TagTransform и relationtags
первый проход, члены отношения street и associatedStreet в свои свойстава получают associatedStreet:name:ru и street:name:ru, с помощью relationtags
osmosis.bat --rb UZ.osm.pbf  --rt types=street,associatedStreet separator=:  --wx uzbekistan.osm

потом, с помощью плагина TagTransform все что имеет тег name:ru - переводим его в name
osmosis.bat --rx uzbekistan.osm --tt  --wx uzb_ru.osm
используется такой transform.xml

<?xml version="1.0"?>
<translations>
 
  <translation>
    <name>Fill name from name:ru</name>
    <description>Find all tags with name and name:ru.</description>
    <match mode="and">
      <tag k="name" match_id="name_uz" v=".*"/>
      <tag k="name:ru" match_id="name_ru" v=".*"/>
    </match>
    <output>
      <copy-all/>
        <tag k="name" from_match="name_ru" v="{0}"/>
     </output>
  </translation>
 
</translations>

последний этап, перевести теги associatedStreet:name:ru и street:name:ru , полученные в результате первого прохода в addr:street
osmosis.bat --rx uzb_ru.osm --tt file=streetname_ru.xml --wx uzbekistan.osm
используется такой streetname_ru.xml

<?xml version="1.0"?>
<translations>
 
  <translation>
    <name>Replace addr:street from name:ru tag in street relation</name>
    <description>Find all tags with name and name:ru.</description>
    <match mode="and">
      <tag k="associatedStreet:name:ru" match_id="streetname_ru" v=".*" />
      <tag k="associatedStreet:role" match_id="1_ru" v="house" />
    </match>
    <output>
      <copy-all/>
     <tag k="addr:street" from_match="streetname_ru" v="{0}"/>
     </output>
  </translation>
 
  <translation>
    <name>Replace addr:street from name:ru tag in street relation</name>
    <description>Find all tags with name and name:ru.</description>
    <match mode="and">
      <tag k="street:name:ru" match_id="streetname_ru" v=".*" />
      <tag k="street:role" match_id="1_ru" v="house" />
    </match>
    <output>
      <copy-all/>
     <tag k="addr:street" from_match="streetname_ru" v="{0}"/>
     </output>
  </translation>
</translations>

Замечания и предложения по улучшению приветсвуются.

PS если кто-то знает как заполнить addr:region и addr:district населенных пунктов из name:xx соотвестувующих полигонов - прошу поделиться.

Last edited by Marych73 (2012-10-05 08:10:44)

Offline

#90 2012-10-05 10:48:59

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

А зачем эти сложности?
Конвертер osm2mp с патчем от larry0ua умеет получать названия улиц из тегов линий улицы, входящих в релейшн или из тегов самого релейшена. Без осмозиса и плагинов.
А вот когда есть домик с addr:street=Названиененарусском и рядом улица с name=Названиененарусском и name:ru=Русскоеназвание, то получить оттуда русское название улицы конвертер не может.

Offline

#91 2012-10-05 10:55:04

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

если кто-то знает как заполнить addr:region и addr:district населенных пунктов из name:xx соотвестувующих полигонов - прошу поделиться.

Вот это ещё нерешённая проблема.
Вообще-то при создании карт под навигатор карта страны разбивается осмозисом на области. И при конвертации название области указывается вручную в bat-файле.
А вот с названиями районов в addr:district действительно проблема. Как мне кажется, конвертор должен делать так: берём координаты точки, обозначающей центр населённого пункта, смотрим, в территорию какого района она попадает, берём название (на нужном языке) с тегов границ района, прописываем это название в addr:district
(по аналогии с привязыванием улиц к населённым пунктам).

Offline

#92 2012-10-05 11:17:13

Marych73
Member
From: Ташкент
Registered: 2011-01-18
Posts: 283

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

dimonster wrote:

Вот это ещё нерешённая проблема.
Вообще-то при создании карт под навигатор карта страны разбивается осмозисом на области. И при конвертации название области указывается вручную в bat-файле.

А addr:district - как? у меня в одной области 2 населенных пункта с одинаковым названием в разных районах. Да и недоросла наша страна для разбивки на области еще, всю страну конвертеры еще переваривают.

Один из вариантов в тегах addr:region и addr:district использовать ISO 3166, а потом коды пост-процессором переводить в нужный вариан name

Offline

#93 2012-10-05 11:20:52

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

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

Для district-ов исо-коды не определены

Offline

#94 2012-10-05 12:23:25

Marych73
Member
From: Ташкент
Registered: 2011-01-18
Posts: 283

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

liosha wrote:

Для district-ов исо-коды не определены

Насколько сложно сделать в osm2mp или вообще в отдельном скрипте, анализ в каком районе и области находится населенный пункт, по границе мультиполигона и проставить для него addr:region и addr:district  из name:xx полигона?
Возможно ли это?

Offline

#95 2012-10-05 12:30:43

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

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

Теоретически возможно, конечно, но только не всегда оно будет правильно. Часто название района в адресе не нужно.

Offline

#96 2012-10-05 16:48:51

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

Часто название района в адресе не нужно.

Если я не ошибаюсь, єто не нужно для областных центров. А для райцентров и городов (деревень, сёл) районного подчинения название района очень даже нужно.

Offline

#97 2012-10-09 12:57:34

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

Кстати, ещё есть проблема с улицами, имеющими одинаковые названия и расположенными в одном городе, но в разных районах.
Их можно различать по названию городского района в addr:suburb, но непонятно где брать локализованные названия addr:suburb.
По идее, их нужно брать с тегов мультиполигона городского района. Не?

Offline

#98 2012-10-09 13:48:09

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

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

dimonster wrote:

Их можно различать по названию городского района в addr:suburb, но непонятно где брать локализованные названия addr:suburb.

В osm2mp они берутся из addr:suburb:{lang}

Offline

#99 2012-10-09 14:12:44

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

addr:suburb:{lang} нет в вики, не обсуждали, не голосовали, не принимали. И вообще, это что, на каждом домике в таких улицах прописывать кучу addr:suburb:{lang} на разных языках? Ужас!

Offline

#100 2012-10-09 14:55:44

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

dimonster wrote:

И вообще, это что, на каждом домике в таких улицах прописывать кучу addr:suburb:{lang} на разных языках? Ужас!

С чего это? Только улицу. suburb площадной, если что.

Offline

Board footer

Powered by FluxBB