Ужасы адресации в Украине

А еще у нас есть 1 гениальная адресация
http://osm.org/go/0pGqGc1W3
На левом здании - 27а, на правом - 27с, я так понимаю, это нумерация на латинице? O_o
http://maps.yandex.ua/-/CVu5V8lx

Очередной прикол с адресами.
Вот дом на наб. Победы 108
http://osm.org/go/0pD5~Pd8l
Когда-то давно он имел адрес пер. Шокальского 24. Я так понимаю это было лет 25-30 назад. В итоге мы имеем шикарную табличку на доме.
http://screencast.com/t/woyculOREOy

Хочу поділитись гарною новиною з користувачами OsmAnd та просто зацікавленими - тепер конвертація карт підтримує street/associatedStreet зв"язки в адресному пошуку! Сподіваюсь, нові карти в їх рідній конвертації будуть збиратись з врахуванням цього патчу якнайшвидше.

До речі, а що робити, коли будинки прив’язані не до вулиць, а до кварталів?
Ось, наприклад, валідатор (http://peirce.gis-lab.info/qa/UA-E/addr/2) лається на Авдіївку.
А там деякі будинки мають адресу типу “Ювілейний квартал, будинок 10.”
Я для експерименту позначив один проїзд у кварталі як highway=residential, name=Ювілейний квартал. Потім зробив релейшен associatedStreet з тим проїздом та будинками з Ювілейного кварталу.
Але щось мені здається, що це не є коректним.

dimonster
Есть такие места. Однако могу привести пример.
В Донецке есть такое место как “Площадь правосудия” которая представляет из себя небольшой сквер собственно без улиц. Есть один дом с гордым адресом “Площадь правосудия 1”.
Так вот сквер обведен полигоном

leisure=common; name=Правосуддя площа;

Дом имеет

addr:housenumber=1; addr:street=Правосуддя площа;

Посмотрим будет ли на него ругаться валидатор.
Пока ругается. Жду следующего прохода на посмотреть.

Zaskoruzlov Garik
Скорее всего, будет ругаться. Как я понял, валидатор хочет видеть не площадь, а линию с тегом highway=residential (или tertiary, secondary, primary) и тегом name=Правосуддя площа.

Шо делать - не знаю. Была бы там реально проезжая площадь, я бы там нарисовал пути проезда с помощью линии с тегом highway=residential, name=Правосуддя площа , прикрыл бы их полигоном с area:highway=residential и проблем нет.
А тут - не знаю. Из всех проездов ближайший - это проезд на парковку. Да и тот не на площади, а за зданием.

В Доброполье тоже что то подобное.
“Молодежный микрорайон”, “Солнечный микрорайон” (

Да, это много где так.
Гм. Я вот задумался… Пожалуй, не нужно подстраиваться под СитиГид", делая несуществующие улицы типа "Юбилейный квартал. Пусть лучше митовские прогромисты свою программу дорабатывают.
Что думает народ?

+1, не варто молитися на валідатори - кожен з них заточений під одну конкретну математичну модель, а моделі описують реальність лише з певним ступенем наближення.
Брати до уваги інформацію - так, треба, але ж не бездумно зачищати все, що не вклалося в алгоритм.

Ну, все, я прибрав ту “експериметальну” вулицю. Повернув проїзду статус service та прибрав його з релейшена. Хоча ДЖОСМ при надсиланні лаявся на відсутність у релейшені члена з роллю street.

Так, це некоректно, і інші коментатори праві – не варто мапити під валідатор.

Згідно прийнятої класифікації мікрорайон або квартал на будинку слід вказувати у тезі addr:place, а addr:street не слід вказувати зовсім, це помилково. Але для повноти картини було б непогано додати і точку у центрі кварталу/мікрорайону як place=neighbourhood.

_sev
Ладно, тогда несколько вопросов.

  1. Будет ли работать адресный поиск в существующем на данный момент ПО, если заменить тег addr:street на addr:place на полигонах зданий?
    ведь судя по этому:

Тег addr:street все таки сейчас допускается.
2. Что добавлять в relation associatedStreet в роли street, ведь объект с такой ролью там нужен?
3. Если для проставления адресации использовать только relation, нужно ли выставлять на домах тег addr:place?
Тут по аналогии. Я так понял считается, что если дом включен в relation street/associatedStreet, то теги addr:street:/ru/en/uk на полигонах домов не нужны и даже вредны.

PS Кстати Josm на данный момент тега addr:place не знает. (

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

Позаботился ли автор конкретного ПО поддержкой тега addr:place, это можно проверить только экспериментально, и если не поддерживается, то пинать автора или сразу предоставить патчик.

Что качается адресного отношения, то addr:street там является таким же необязательным, как и все остальные. А JOSM много чего не знает, но в отличие от большинства около-ОСМовских продуктов, в него как раз добавить недостающие вещи проще всего. Для тегов там простая XML.

Наследование тегов от отношений к их членам идёт сверху вниз. Т.е. то, что указывается в отношении, наследуется всем его членам, но если теги есть на одном из членов, то они перекрывают значения из отношений. Поэтому, поставив addr:place на отношение, на домиках это будет yне только лишним дублированием информации, но и потенциальным источником ошибок (если, к примеру, где-то будет опечатка).

Отношение street/associatedStreet является особенным в том смысле, что теги name с членов отношения с ролью street копируются в виде addr:street во все остальные члены. Семантика поведения для разнящихся name членов не определена, я думаю что просто берётся первый член с такой ролью.

_sev
Вы конечно извините и большое спасибо за экскурс, но все это вода.
Давайте вернемся к конкретике:
Как правильно сделать адресацию в таком месте используя relation associatedStreet?
Давайте я напишу как я понял, а вы напишите будет ли это работать:

  1. Проставляем всем полигонам домов тег addr:housenumber=*
  2. Ставим точку place=neighbourhood и тегами name/:ru/:en:/uk в центре микрорайона/площади/etc.
  3. Создаем relation associatedStreet
  4. Добавляем в relation все полигоны домов с ролью house.
  5. Добавляем в realation точку place с ролью street.
  6. На relation ставим теги name/:ru/:en:/uk совпадающие с таковыми у точки place.
    Это верный алгоритм?

PS А что касается отставания софта и рендеров от базы. Да, конечно, я полностью согласен с принципом “не мапить под рендер”. Но, все таки необходимо оглядываться на возможности ПО. Поддерживать deprecated теги до тех пор пока не будут устаканены проблемы с ПО ну и так далее. А иначе вы будете в каждый произвольно выбранный момент времени (то есть всегда) иметь базу которая становится все лучше но не может быть полноценно использована :frowning:

Ну как сказать…
У каждой навигационной программы свой формат геоданных. В OSM свои правила обозначения объектов и тегирования. И эти правила надо чётко соблюдать. И менять в правилах что-то можно только если в этом есть реальная необходимость. Например, если изначально не были учтены какие-то особенности объектов, и отобразить эти особенности имеющимися средствами нельзя.

А превращение данных в формате ОСМ в данные в формате для какой-то навигационной программы - это задача конвертера и головная боль его автора.

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

Если при адресации оглядываться на конвертор от товарища liosha, то вроде так можно. Вот только по шестому пункту у нас с liosha возникли разногласия. Почему-то liosha хочет, чтобы мультиязычные названия улицы (или микрорайона) были обязательно указаны в тегах релейшена в виде name, name:ru, name:en и т.д. В случае адресации по микрорайнам это вроде бы логично.
Хотя в случае обычных улиц эти названия можно спокойно взять с линий улиц. Мы ведь подписываем на линиях name=Радянська вулиця, name:en=Radyanska Street, name:ru=Советская улица.
Но liosha упёрся и не захотел переделывать конвертер, хотя мы ему даже готовый патч передали. Вместо этого liosha заставляет дописывать на домиках языковые суффиксы addr:street**:ru**, addr:street**:en**. Хотя нигде в правилах этого нет.

Как ни крутись, для адресации программе СитиГид нужна улица с названием. Так что в СитиГиде и этот алгоритм работать всё равно не будет. Зато в Навителе будет :slight_smile:

dimonster
Гм. ИМХО вы мне доказываете то с чем я и не спорил в общемто.
Я к другому клоню. Пытаюсь от значительно более опытного товарища получить недвусмысленный ответ как наиболее правильно поступать с такими местами. Опишу то что я вижу пока.
Дано:
*. Для Украины принята адресация через relation, следовательно тег addr:street на полигонах зданий для Украины является deprecated и по сути оставлен для совместимости.
*. Для мест где дома не привязаны к конкретной физической улице рекомендуемый relation не может быть полноценно использован. Либо надо выработать общепринятую процедуру как его использовать.
*. Для решения проблемы адресациии таких мест предложен не поддерживаемый в данный момент никем тег add:place который надо проставлять на каждый дом индивидуально. То есть: предложено заменить один deprecated тег другим.
И вот в этом месте не совсем понятно зачем козе боян? Зачем менять устоявшийся тег на другой если на самом деле нужно просто договорится как адресовать эти места через relation. Что я и пытаюсь сделать.
Я ничего не имею против addr:place но это не вписывается в схему адресации relation-ами. Получаем принципиально разные схемы тегирования для вариантов “есть улица/нет улицы”.

Я имел ввиду содержание ответа на несколько вполне конкретизированных вопросов. ИМХО там была вода.

С этим никто не спорит.

Я как раз и спрашивал как правильно делать. Предлагаю взять приведенный мной алгоритм за основу и обсудить его.

Разумная избыточность данных еще никому не мешала. В relation улицы может быть много элементов с ролью street, в некоторых теги name могут быть проставлены с ошибкой/опечаткой. Получаем неоднозначность из какого way-я брать нужное имя. Если брать name из relation то такой неоднозначности нет, тут я полностью солидарен с liosha. И к тому же такой вариант имеет “совместимость вперед” в случае “необычных” улиц которые мы сейчас и обсуждаем. Все логично. )

Согласен что это по сути не важно.

Итого: нужно выработать четкий алгоритм использования relation associatedStreet для адресации мест где адреса привязаны не к улице а к некоей площади. Главный вопрос, какой объект использовать в роли street для случаев микрорайон/площадь/etc.

Zaskoruzlov Garik
addr:street не є застарілим тегом ні в Україні ні в іншій країні - обидві схеми цілком рівноправні
А ось addr:street:uk/ru/en - видумані теги, які незручно вносити/редагувати/використовувати, до того ж вносять дублюючу інформацію, часом некоректну.

dudka
Ох. Да согласен addr:street:uk/ru/en неудобны но мультиязычность названий все равно нужна и потому нужно переходить на relation повсеместно где это возможно.
Вот я и пытаюсь поднять вопрос о том можно ли использовать relation для мест без физической улицы.
Если можно то как? Расписать правила для разных случаев и это самый лучший вариант.
Если нельзя, то нужно четко договорится, что “Для случаев адресации без существования физической улицы relation не использовать, а использовать схему с тегом addr:place на каждом полигоне здания описанную тут

Эта избыточность не нужна. А ошибок быть не должно. И названия улиц должны быть одинаковыми, поэтому без разницы, с какого вея их брать.

Лично мне кажется, что логично было бы при создании релейшена улицы убирать теги name с веев улиц, и записывать их только в релейшен. Но почему-то в ОСМ требуется тег name на отрезках улицы. Без него рендер не напишет название.

ИМХО, никакой. Ну нет там такого объекта, чтобы подходил на роль street, как у обычной улицы. Разве что мелкие проезды между домами.

Просто напишите в тегах релейшена name=Ювілейний квартал, name:ru=Юбилейный квартал.
Лёшин конвертер это поймёт.

dimonster

Конечно не должно, но они всегда есть. Системы нужно делать по возможности с устойчивостью к простейшим ошибкам навроде опечаток. Это жизнь.

А мое ИМХО что все таки что то нужно. И не обязательно это должен быть highway ведь роль объекта в relation это не его тип. Тип как раз прописан в тегах самого объекта.
Вот и надо обсудить и прийти к общему знаменателю.