Харьков и область (обсуждение)

Судячи з не раз згадуваного реєстру урбанонімів, та що в Київському районі називається Кіровська/Кировская

Так, але теоретично, згодом вулицю можуть продовжити, й вона “заповзе” на територію іншої “місцевості”.

То як треба робити?

Поставити в центрі “місцевості” точку з place=suburb, name=Основа, name:ru, name:en.
Якщо вулиця задана релейшеном, то прописати в тегах релейшена addr:suburb=Основа

Якщо нема релейшена (хоча по Харкову майже всюди релейшени), то addr:suburb=Основа прописуємо до кожного будинку на тій вулиці та до кожного відрізку вулиці.

Так?

Гм. Треба перевірити на місцевості.

У паперовому атласі Спаеро 2006 року та карті тревелЖПС вулиця Кірова
У реєстрі урбанонімів та у схемі вулиць від Спаеро (KharkivStreetsSpaero.osm) вулиця Кіровська.

Все правильно. Хоча якщо відношення нема, його легше створити за обклацування кожного будинку :slight_smile:

Особисто мені достатньо. Просто за логіою, якщо name задаємо в сегментах, то варто б інші теги туди ж пхати. Та й невідомо як поведуть себе сторонні аплікухи (наприклад nominatim) - треба це питання дослідити.

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

А хіба Nominatim використовує addr:suburb? Мені здається, що він просто показує назву найближчого place=suburb, або назву suburb/residential-полігона, що містить будинок.
Судячи з історії змін в wiki, addr:suburb придуманий російською спільнотою.

Крім osm2mp більш не знаю хто використовує addr:suburb.
А osm2mp ніби бере addr:suburb зі звязку
http://forum.openstreetmap.org/viewtopic.php?pid=284664#p284664

Ну і ще я їх використовую. Зараз я вигрібаю усі сегменти вулиць і групую їх по name + suburb. Обмежуватись суто сегментами відношень не хочеться - більша частина сегментів просто не включена у відношення. Тому я і говорю, що нелогічно ставити name на сегменти, а addr:suburb як продовження name, тільки на відношення. Уся логіка ламається. Виходить я можу працювати лише або з сегменти, або лише з відношеннями. Але так як у нас зараз 50/50 і всі сторонні аплікухи заточені на використання name саме з сегментів, вважаю ідею озвучену dudka поганою.

Та й всі “проблемні” вулиці країни на поточний момент заадресовані через addr:suburb саме на сегментах. Вище я пропонував проставляти addr:suburb або ж CONCAT(name вулиці, ’ ', name suburb) лише з метою:

  1. обєдання сегментів (навіть тих, що не потрапили у відношення через неуважність по цим атрибутам)
  2. мати можливість відрізняти відношення по текстовим міткам

Випадки

  • не додав addr: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.

Нет. Приписывание названия местности к названию улицы - это задача конвертора. А в OSM пусть эта информация хранится в соответствующих тегах.

Мова про те що, якщо зберігаємо name на лінії то і addr:suburb треба вказувати для лінії, не в name - окремо.
Якщо створюємо зв’язок і вказуємо там name то і addr:suburb треба вказувати також

А що, ми вже “прогнулися” під Льошу та переносимо назви вулиць з тегів ліній до тегів релейшена?

Ну, на мою думку логічно було б так:

  1. якщо нема релейшена, то addr:suburb прописуємо на кожній лінії, що відноситься до вулиці та на кожному будинку на цій вулиці.
  2. якщо є релейшен, то addr:suburb пишемо в тегах релейшена.
    Звичайно, тег addr:suburb прописуємо лише для тих вулиць, які мають одноіменних “сестер” у тому самому населеному пункті.

Саме так :slight_smile:

Льоша тут ні до чого. Основна фішка в тому, що якщо розглядати аддр:субурб як продовження name, то виставляти його необхідно, і на сегменти, і на відношення. Я керуюсь суто алгоритмічною необхідністю. Якщо ви знаєте інший відносно простий спосіб як вибрати усі вулиці, згрупувавши сегменти за name + suburb - пропонуйте.

В інакшому випадку, я дуже просив би все ж виставляти addr:suburb і на сегменти, навіть якщо задано відношення.

Використання релейшенів взагалі дозволяє винести ті теги, які стосуються всіх членів релейшену, в теги самого релейшена. При обробці релейшена конвертером ті теги у разі потреби мають бути перенесені на членів релейшена.
Тож конвертор чи валідатор повинен взяти релейшен, прочитати з його тегів addr:suburb та прописати той тег до всіх членів релейшена.

Не треба роботу, яку може зробити конвертор чи інший автомат-робот, перекладати на людей.

Ну так повиносьте тоді і name з сегментів на відношення. Адже аддр:субурб є логічним продовженням name. Ви готові це зробити для усієї країни/світу? Мабуть ні. Рендери, валідатори, конвертори працюють на основі запрограмованих дій, тому я і попросив навести алгоритм як це сколдувати при запропонованій в попередньому пості схемі? Невже не очевидно, що в тій схемі уйма мінусів?

Ну, наприклад, як це зробив Larry0ua з назвами вулиці у патчі конвертора osm2mp.

Беремо релейшен вулиці, дивимося, чи є тег addr:suburb. Якщо ні, то перебираємо у циклі всіх членів, шукаємо першого-ліпшого члена з тегом addr:suburb. Якщо таких немає, то вулиця вважається неприв’язаною до субурба.

Ну і щодо валідатора:

  1. наявність у одному населеному пункті декількох релейшенів типу street (associatedStreet) з однаковими name та відсутніми чи однаковими addr:suburb вважати помилкою.
  2. наявність несуміжних ліній з тегами highway=* та однаковими name помилкою не вважати, але позначати як потенційну помилку, варту уваги.

Так тоді чому ви не видаляєте name з сегментів? Чому addr:suburb заважає, а name ні? Я ще раз повторюю, що для розділення вулиць addr:suburb треба вважати частиною name.

Уважно перечитайте мої пости вище. Я вигрібаю усі сегменти, а не лише членів відношень. І потім групую їх по name+suburb. А що пропонуєту ви? Якусь фігню з циклами і переборами. Можете навести SQL-запит? Спробуйте напишіть, бо я бачу ви не до кінця розумієте про що йде мова.

Тема мусолиться вже кілька тижднів. На цей час для Харкова розділено аж 6 вулиць, при чому через адмінрайони. Продовжувати цей пустий дискурс бажання не маю. Отже, велике прохання: нанесіть як вважате за потрібне - додавайте на відношення. Я потім особисто пройдусь - і додам додатково на сегменти. Ок?

Гм. Справді. Щось я й сам заплутався у тих тегах :frowning:

Ок. Тоді я понаписую addr:suburb і на відношення, і на відрізки, і на будиночки. “І пусть нікто нє уйдьот абіженим” :slight_smile:

ой, це ж треба ще й точки з place=suburb понаставляти.

Ну будиночки не потрібно, якщо задано через відношення. Тільки сегменти і відношення ж)