А хіба Nominatim використовує addr:suburb? Мені здається, що він просто показує назву найближчого place=suburb, або назву suburb/residential-полігона, що містить будинок.
Судячи з історії змін в wiki, addr:suburb придуманий російською спільнотою.
Ну і ще я їх використовую. Зараз я вигрібаю усі сегменти вулиць і групую їх по name + suburb. Обмежуватись суто сегментами відношень не хочеться - більша частина сегментів просто не включена у відношення. Тому я і говорю, що нелогічно ставити name на сегменти, а addr:suburb як продовження name, тільки на відношення. Уся логіка ламається. Виходить я можу працювати лише або з сегменти, або лише з відношеннями. Але так як у нас зараз 50/50 і всі сторонні аплікухи заточені на використання name саме з сегментів, вважаю ідею озвучену dudka поганою.
Та й всі “проблемні” вулиці країни на поточний момент заадресовані через addr:suburb саме на сегментах. Вище я пропонував проставляти addr:suburb або ж CONCAT(name вулиці, ’ ', name suburb) лише з метою:
обєдання сегментів (навіть тих, що не потрапили у відношення через неуважність по цим атрибутам)
мати можливість відрізняти відношення по текстовим міткам
не додав лінію в relation у якого є addr:suburb(в схемі з звязками)
абсолютно ідентичні. В обох випадках будуть роздвоєння вулиць.
Якщо ставити addr:suburb на дороги - тоді вже треба ставити і на будинки. Адже досить часто будинок має addr:street, але не включений у зв’язок вулиці.
Ситуації ідентичні, але наслідки різні. Основне питання, як вибрати список вулиць міста?
Твій варіант: вигрібаємо всі відношення, а вже з них отримуємо name і suburb. Ця схема вимагає аби кількість відношень = кількості вулиць, чим зараз може похвалитись зовсім мізерна кількість міст країни. + Додаткова проблема: відсутність рендерів, що відображають вулиці на основі відношень і як наслідок неможливість виявлення помилок.
Мій варіант: вигрібаємо усі сегменти і групуємо їх за CONCAT(name вулиці, ’ ', name suburb). Отримуємо в кілька раз більше вулиць, ніж в першому варіанті. + відпадає проблема з затрудненням виявлення помилок.
Тобто сама по собі ідея хороша, я сам ще місяць назад палко її підтримував. Проте очевидним є проблеми з редагуванням і валідацією. Та й схема вимагає аби абсолютно усі сегменти вулиць країни були включені у відношення, чого звичайно ніколи не станеться.
На будинки ставити є сенс лише за умови, що будинок не включений у жодне відношення. Якщо адресація задана через addr:street, то звичайно треба виставити і addr:suburb. У разі використання відношень ця потреба відпадає, адже addr:suburb може бути взятий з самого відношення (варіант А), або ж з першого сегменту вулиці.
Вважаю, що на відношення є сенс вішати тільки теги не повязані з name. Наприклад, якщо у місті 1000 вулиць, а з них через відношення задано лише 700 - нічого страшного, що 300 залишившихся сиротами вулиць не отримають тег wikipedia.
До того ж врахуй, що екс-сільські вулиці зазвичай коротенькі - 1 сегмент (2-3 сегменти максимум). Кількість рухів у редакторі майже однакова для обох варіантів
Здається зрозумів в чому наше протиріччя:)
Ключова позиція з твого боку: addr:suburb є частиною назви. Правильно?
Ок, я з цим скоріше погоджуюсь. Дійсно логічно обидві частини назви зберігати на одному об’єкті - на лінії дороги.
Якщо ж додатково створюємо зв’язок - то аналогічно додаємо обидві частини назви в теги зв’язку - в name + addr:suburb.
Мова про те що, якщо зберігаємо name на лінії то і addr:suburb треба вказувати для лінії, не в name - окремо.
Якщо створюємо зв’язок і вказуємо там name то і addr:suburb треба вказувати також
А що, ми вже “прогнулися” під Льошу та переносимо назви вулиць з тегів ліній до тегів релейшена?
Ну, на мою думку логічно було б так:
якщо нема релейшена, то addr:suburb прописуємо на кожній лінії, що відноситься до вулиці та на кожному будинку на цій вулиці.
якщо є релейшен, то addr:suburb пишемо в тегах релейшена.
Звичайно, тег addr:suburb прописуємо лише для тих вулиць, які мають одноіменних “сестер” у тому самому населеному пункті.
Льоша тут ні до чого. Основна фішка в тому, що якщо розглядати аддр:субурб як продовження name, то виставляти його необхідно, і на сегменти, і на відношення. Я керуюсь суто алгоритмічною необхідністю. Якщо ви знаєте інший відносно простий спосіб як вибрати усі вулиці, згрупувавши сегменти за name + suburb - пропонуйте.
В інакшому випадку, я дуже просив би все ж виставляти addr:suburb і на сегменти, навіть якщо задано відношення.
Використання релейшенів взагалі дозволяє винести ті теги, які стосуються всіх членів релейшену, в теги самого релейшена. При обробці релейшена конвертером ті теги у разі потреби мають бути перенесені на членів релейшена.
Тож конвертор чи валідатор повинен взяти релейшен, прочитати з його тегів addr:suburb та прописати той тег до всіх членів релейшена.
Не треба роботу, яку може зробити конвертор чи інший автомат-робот, перекладати на людей.
Ну так повиносьте тоді і name з сегментів на відношення. Адже аддр:субурб є логічним продовженням name. Ви готові це зробити для усієї країни/світу? Мабуть ні. Рендери, валідатори, конвертори працюють на основі запрограмованих дій, тому я і попросив навести алгоритм як це сколдувати при запропонованій в попередньому пості схемі? Невже не очевидно, що в тій схемі уйма мінусів?
Ну, наприклад, як це зробив Larry0ua з назвами вулиці у патчі конвертора osm2mp.
Беремо релейшен вулиці, дивимося, чи є тег addr:suburb. Якщо ні, то перебираємо у циклі всіх членів, шукаємо першого-ліпшого члена з тегом addr:suburb. Якщо таких немає, то вулиця вважається неприв’язаною до субурба.
Ну і щодо валідатора:
наявність у одному населеному пункті декількох релейшенів типу street (associatedStreet) з однаковими name та відсутніми чи однаковими addr:suburb вважати помилкою.
наявність несуміжних ліній з тегами highway=* та однаковими name помилкою не вважати, але позначати як потенційну помилку, варту уваги.
Так тоді чому ви не видаляєте name з сегментів? Чому addr:suburb заважає, а name ні? Я ще раз повторюю, що для розділення вулиць addr:suburb треба вважати частиною name.
Уважно перечитайте мої пости вище. Я вигрібаю усі сегменти, а не лише членів відношень. І потім групую їх по name+suburb. А що пропонуєту ви? Якусь фігню з циклами і переборами. Можете навести SQL-запит? Спробуйте напишіть, бо я бачу ви не до кінця розумієте про що йде мова.
Тема мусолиться вже кілька тижднів. На цей час для Харкова розділено аж 6 вулиць, при чому через адмінрайони. Продовжувати цей пустий дискурс бажання не маю. Отже, велике прохання: нанесіть як вважате за потрібне - додавайте на відношення. Я потім особисто пройдусь - і додам додатково на сегменти. Ок?
Кстати, и Горбани тоже уже в границы Харькова попали. Я знаю, что горсовет Харьков “расширил”, но давайте пока это “расширение” не устаканилось, пока не придуманы новые названия дублирующихся улиц, оставим старые границы.
Не?
По согласованию с Евгением (_sev) начал причесывать статусы дорог в центре. А также некоторые перекрестки на предмет ограничений на маневр. Общая идея - чтобы сервисы навигации выдавали вразумительные (для водителя) маршруты. Если у кого сервисы типа mapquest выдают неправильные или не оптимальные маршруты - присылайте - проанализирую и поправлю карту.