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

В украинском разделе форума всплыла тема с адресацией домов по району, а не улице. Российское сообщество в этом случае использует addr:suburb, но в Украине принята схема адресации отношениями. По ней на дом ставится только addr:housenumber, затем дома добавляются в отношение типа street вместе с улицей. Dimonster составил более-менее подробное описание схемы с учётом двойной адресации и прочих необычных случаев. Так, второй адрес должен ставиться на точку внутри дома, которая войдёт в отношение street соответствующей улицы. В случае адресации по микрорайону в отношении отсутствуют члены с ролью street, что, по мнению dimonster, не важно.

Одной из главных причин использования отношений стали двуязычные названия почти всех улиц. Перенос названия улицы в отношение упростит обработку данных после «языковых войн», периодически вспыхивающих в Крыму и окрестностях. Кроме того, устраняется избыточность: название улицы достаточно написать дважды, на линии и в отношении. Украинское сообщество (или liosha), почему-то, не считает тег name идентификатором: так, для адресации по улицам с названиями на нескольких языках они (до ввода отношений) предлагали расставлять на домах addr:street:uk, addr:street:ru и т. п.

Эта схема тегирования используется не на всей территории Украины (например, не здесь), и озадачивает сделанные в России валидаторы: сайт контроля качества для Ситигида жалуется на почти двадцать тысяч неуказанных улиц в адресах. Однако свежая версия лёшиного конвертера в MP схему понимает, поэтому поиск в выгрузках для Навитела и Гармина работает. Наверное, именно поэтому, в отличие от белорусской схемы, эта смогла выжить и распространиться.
Поделиться
Отправить
2013   теги
15 комментариев
Ох
Мутанты
Sergey Astakhov
> addr:street:ru

IMHO, лучше использовать википедийную схему ссылок вида addr:street=ru:Название улицы
OverQuantum
> Так, второй адрес должен ставиться на точку внутри дома, которая войдёт в отношение street соответствующей улицы.
> Для линии улицы пишем роль street, а для домика роль house.
Лучше бы писали бы в role номер дома, логичнее бы было
Илья Зверев
Параметрические роли — это очень, очень плохой вариант. Более разумным было бы дополнить API, добавив к членам отношений нормальные теги.
liosha
>> лучше использовать википедийную схему ссылок вида addr:street=ru:Название улицы

И как тогда задать название улицы на разных языках?

>> Российское сообщество в этом случае использует addr:place

addr:quarter, а не addr:place. addr:place — это совсем для другого
dimonster
>>Украинское сообщество, почему-то, не считает тег name идентификатором

Вообще-то это Liosha (автор конвертерера) так считает. И извращённые теги типа addr:street:ru тоже идея Лёши.

>>название улицы достаточно написать дважды, на линии и в отношении.
Вообще-то мы предлагали Liosha переделать конвертер, чтобы мультиязычные названия улиц брались не из тегов отношения, а из тегов name:xx на линиях улиц. Даже готовый патч выкладывали. Но Liosha считает такой перенос названий неестественным, и патч в свой конвертер не включил. Поэтому приходится названия улиц писать и на линиях, и в тегах отношения.

>> сайт контроля качества для Ситигида жалуется на почти двадцать тысяч неуказанных улиц.
Вот это уже неправда. Во-первых, не улиц, а домов, во-вторых, отношения он таки понимает
Sergey Astakhov
>> лучше использовать википедийную схему ссылок вида addr:street=ru:Название улицы
> И как тогда задать название улицы на разных языках?

Так же, как и сейчас — в свойствах самой улицы. Весь смысл такой ссылки — уйти от использования name без указания языка и использовать в качестве идентификатора name:xxx
Sergey Astakhov
> Вообще-то мы предлагали Liosha переделать конвертер

Если автор конвертера не хочет поддерживать конкретную схему, всегда есть обходной путь — сделать препроцессор, который бы из исходных данных сделал такие, какие ему нравятся. :-)
liosha
>> Так же, как и сейчас — в свойствах самой улицы.

Правильно, для этого и нужно отношение, связывающее дом и улицу. А если этого отношения нет? Использовать в качестве связи само название — плохая идея.
dimonster
>>и использовать в качестве идентификатора name:xxx
это тоже не будет поддерживаться конвертером

>>сделать препроцессор,
а потом что? Всем и каждому пихать этот препроцессор и пояснять, что «Лёша не хочет» ?
liosha
Предупреждая вопрос, почему это плохая идея: потому что она сводит определение вполне детерменированного адреса к плохо определённой задаче «поискать хрен знает что в хрен знает какой окрестности».
dimonster
Ну, не «хрен знает что», а линию с тегами highway=.... и name, значение которого совпадает с addr:street. В области, ограниченной полигоном населённого пункта.
Я не специалист по перлу, но почему-то ведь при привязке улицы к городу проблем с поиском границ города «хрен знает в какой местности» не возникает.
_sev
Почему «хрен знает что»? И почему полигон? Искать не надо, нужно брать первый член отношения с ролью street, и оттуда вытянуть name.

Хотя мысль с препроцессором весьма интересна, его будет несложно сделать.
OverQuantum
Илья,
Чем плохи параметрические роли?
Хотя бы чем они хуже текущего изврата с точкой, которая включается во второе отношение или допиливания API специально для Украины?
Илья Зверев
С ними бесконечно тяжело работать (если брать жанр сложнее, чем «вот я могу скриптик написать»). Например, фиг ты их нормально для мапника в базу зальёшь. Вот ещё цитата от Komяpы: «его хрен запроксируешь в шейпы и любой другой формат со стандартным набором колонок, я такое вообще хрен на постгисе поддержу, при всём желании».
OverQuantum
> фиг ты их нормально для мапника в базу зальёшь
> хрен запроксируешь в шейпы и любой другой формат со стандартным набором колонок
ИМХО, проблемы рендереров. Или мы всё-таки рисуем под рендереры, если очень хочется? :)
Илья Зверев
Ну хватит уже любое извращение прикрывать «не рисуем под рендереры», а? Всем, кто хоть как-то работал с данными OSM, понятна проблема параметрических ролей. Роли просто не работают так. Изначально они предполагались фиксированным списком. Структуры данных во всех инструментах работы с OSM предполагают, что их число конечно. Рендереры, валидаторы, редакторы, конвертеры. Добавляя параметрические роли, ты добавляешь новую сущность в данные, сродни новому типу объекта. Чтобы её поддержать, нужно будет допиливать почти все инструменты из цепочки. Рендереры, т. е. имеющиеся в виду в фразе «рисовать под рендереры» стили карты (а не программы) здесь вообще не при делах.
OverQuantum
Илья,
> Изначально они предполагались фиксированным списком.
Где это написано? Не вижу ни в описании API, ни relation-ов.

> Ну хватит уже любое извращение прикрывать «не рисуем под рендереры», а?
Ну замечательно, языковые войны, игнорирование связки через name и второй адрес на левой точке здания  — не извращение, а параметрическая роль — извращение.

И эти люди запрещают мне рисовать внутримикрорайонные проезды highway=residental-ом и не дают номер корпуса называть номером дома :)