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

http://www.openstreetmap.org/?relation=175321 - теж саме, але з мультиполігонами :slight_smile:
на панорамах Яндекса школа виглядає так http://maps.yandex.ua/-/CVFLyFph

А вот этот пример я считаю не правильным…

???
обоснуй

теж вважаю недоцільним таке використання мультиполігонів
всі будинки(building=*), а також їх частини(building:part=yes) у яких немає inner-членів потрібно малювати звичайними лініями, а не групувати десять двоточкових ліній в мультиполігон.
http://www.openstreetmap.org/browse/way/201173780 - чому ця лінія в Зв’язку Моніторна вулиця (1180082) як house?
http://www.openstreetmap.org/browse/relation/1180082 - ще 9 ліній є членами зв’язку, але зайві там
Крім полігону з inner-членами(relation 175321) все інше прекрасно мапиться звичайними лініями.

На мою думку мультиполігони у яких немає inner-членів зручні в тих випадках коли спільна сторона двох полігонів є дуже довгою(понад 10 спільних точок) і тоді дійсно краще мати одну лінію(з понад 10 точок) і включити її в два мультиполігони.
Мультиполігонами зручно мапити великі суміжні земельні ділянки які відрізняються землекористуванням(наприклад ліс+поле), але не будинки.

IMHO, суміжні будинки краще мапити окремими замкненими полігонами, а мультиполігонами ліпше мапити будинки з “дірками”, тобто з внутрішніми дворами.

Спасибі за зауваження - підправив зв’язок Моніторної вулиці (прибрав зайві лінії, додавши замість них мультиполігон будівлі)

Если можно вопрос.
При проставлениии POI постоянно натыкаюсь на то, что многие организации предоставляют больше одного телефона/факса/email.
Как правильно проставить в POI несколько телефонов например?

общее правило для нескольких значений - через ;

Спасибо.

Ох, в Алчевске назревает война uk/ru правок однако.
Случайно нет желающих пообщаться с Cepera1575 ?
Так как мне сложно будет с ним холиварить, я его понимаю отлично хоть и не поддерживаю :frowning:

Печально.
Надо бы объяснить товарищу, что он в Украине живёт, а не в России.
И что для русских названий есть name:ru.
И что нужно улицы задавать релейшенами. Тогда при конвертации не сломается адресный поиск на любом языке.

http://forum.openstreetmap.org/viewtopic.php?pid=297759#p297759
надеюсь проблем не будет

Ну, я вроде исправил этот русофильский вандализм. Но надо что-то придумать, чтобы такое не повторялось.

dimonster
Что тут придумывать. Я сейчас просмотрю и поисправляю ошибки адресации (а их там прилично, с парой простеньких проверяющих стилей в Josm куча красных пятен). С полным переходом на associatedStreet.
Тогда аргумент Cepera1575 отпадет.

PS Вы кстати невнимательно прошлись. Много пропусков. Много не включенных в отношения домов. Есть и места где way “улица” а relation “вулиця” и тд.
Именно такое качество редактирования и дает возможность прикрываться “проблемами адресации”

Виноват :frowning: Был рассержен. Да и так много исправлять пришлось. Вместо того, чтобы заняться чем-то более приятным.

dimonster
Попробую выловить всех блох и посмотрим. :slight_smile:

Я тут подумал…
Может, в русской ветке форума и в русской статье вики про адресацию расписать подробно. (Выложу, когда обсудим все детали).
Типа так:

Преамбула:
В Украине, как и в других бывших республиках СССР, есть много народу, которые хотят иметь карты на родном языке, и много другого народа, которые хотят карты на русском языке. Поэтому приходится указывать для каждой улицы, населённого пункта, района, области и всяких там POI сразу несколько вариантов названия на разных языках. Использовать транслитерацию названий не получается. Пример: “Радянська вулиця - Советская улица”, “Квітковий бульвар - Цветочный бульвар”.

При этом нужно, чтобы:

  1. Система адресации нормально работала на любом языке. Чтобы не было на карте “Социалистическая улица”, а в базе адресного поиске она же “Соціалістична вулиця”, причём домики привязаны непонятно к какой из “улиц”.

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

Поэтому практически выведены такие правила адресации:

Тегирование домиков:

  1. теги addr:country, addr:city, addr:street, addr:region, addr:district и прочие addr:чегототам на домах НЕ ИСПОЛЬЗУЮТСЯ! Кроме addr:housenumber (или addr:housename, но он реально нигде не нужен)
    Номера домов с буквами указываем без пробелов и дефисов. Буквы пишем в нижнем регистре кириллицей.

Например,

addr:housenumber=12а
  1. привязывание домиков к улицам, (а при адресации по микрорайонам - к микрорайонам) делается с помощью релейшенов (отношений) типа associatedStreet. (см. ниже)
  2. остальные теги домиков пишем как обычно (building=yes или что-то иное, этажность, amenity и др.)
  3. если один домик официально имеет несколько адресов, например, находится на пересечении улиц Иванова и Петрова и имеет два адреса: “Иванова улица, 1” и “Петрова улица, 14”, то на контуре домика пишем тот номер дома по тому адресу, который используется чаще. Потом ставим внутри контура точку, пишем на ней building=yes и пишем номер дома по второму адресу.
    Затем контур дома включаем в отношение для улицы Иванова, а точку с номером включаем в отношение для улицы Петрова.
    Получаем:
    -Полигон дома с тегами building=yes, addr:housenumber=1, включен в отношение улицы Иванова
    -Точку с тегами building=yes, addr:housenumber=14, включен в отношение улицы Петрова
    (надо уточнить, нужно ли на точку ставить building=yes. По логике, не нужно, но надо чтобы конвертер это понимал)
  4. Если здание выстроено замкнутым кольцом, то его рисуем двумя линиями: внешний контур и внутренний контур. После чего выделяем оба контура и создаём мультиполигон (роль inner для внутреннего контура, роль outer для внешнего контура). В тегах мультиполигона пишем building=yes (или apartments, house или что там ещё), addr:housenumber=…, amenity=…. и др.
    Потом мультиполигон здания включаем в отношение соответствующей улицы.
  5. если один физический домик поделён на два логических домика с разными номерами, то рисуем это чудо как два домика с разными номерами. Можно контуры этих домиков слепить вместе. Пример: Харьков, Социалистическая улица, 68 и его “сиамский близнец” 68А.
  6. если рядом с домом имеется отдельно стоящий магазин или киоск с тем же номером, то (… пока не знаю как обозначить. Обсуждаем…)
    Пример: Харьков, Полтавский Шлях, 148/2 (жилой дом и магазинчик недалеко от этого дома у входа в метро).

– Вопрос: Почему нельзя поставить два номера через дробь на контур дома и включить дом в два отношения?
– Ответ: Потому что тогда непонятно к какой улице относится какой номер дома.

– Вопрос: А почему так получается, что для одного домика нужно два объекта - контур и точка. Дом-то один.
– Ответ: Дом один, а адресов два. В реальности само наличие двойных (тройных, четверных) адресов - это извращение и маразм. Нечто вроде одного человека с двумя паспортами на разные имена и фамилии. Поэтому и в OSM это явление отображается извращёнными средствами и кажется маразмом.

Тегирование подъездов в многоэтажках

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

  1. на линии контура дома ставим точку в том месте, где расположен вход в подъезд
  2. на эту точку ставим теги entrance=yes, ref= номер подъезда (1,2,3 и т.д.) Например, ref=1

Конвертер osm2mp пока не поддерживает адресацию подъездов, но Liosha обещал добавить такую возможность.

Тегирование линий улиц

  1. Линии улицы подписываем по названию, используя теги name, name:ru, name:uk и другие name:xx
  2. В теге name пишем название улицы на украинском языке (кроме Крыма - там отдельный разговор, но в принципе, тоже на украинском).
  3. В тегах name:ru, name:uk и прочих name:xx пишем название улицы соответственно на русском, украинском и xx-ском языках
  4. Название улицы на английском языке (name:en), если оно получено простой транскрипцией, можете не писать. Его потом автоматически проставит робот “_sevbot”. (Вопрос про робота спорный. Пожалуй, желательно, чтобы название на “таком-то” языке писал человек-носитель этого языка)
  5. Статусную часть названия (слова вулиця, улица, Street, провулок, переулок, Lane и т.д.) пишем обязательно, указываем полностью, без сокращений и в конце названия.

Например:

name=Радянська вулиця
name:ru=Советская улица
name:uk=Радянська вулиця

Учтите, что для многих населённых пунктов существуют официальные перечни названий улиц на украинском и на русском языке. Желательно сверяться с ними.

– Вопрос: Почему не “ул. Советская” или “Советская ул.”?
– Ответ: Для однообразия. Это важно для компьютера. И так меньше ошибок.

– Вопрос: Почему надо указывать одно и то же название и в name, и в name:uk ?
– Ответ: Чтобы после “языковых войн” можно было бы всё-таки получить из базы название на украинском языке. Впрочем, в тех местах, где “войн правок” не происходит, можно ограничится украинским названием в name.

– Вопрос: А если я не знаю украинского названия?
– Ответ: Не знаешь - не пиши. Будет улица без тега name. Либо спроси на форуме. Либо узнай из официальных документов.

– Вопрос: А я хочу видеть на карте названия на русском языке. А на osm.org выдаёт украинские! Что делать?
– Ответ: Используйте рендер www.toolserver.org. Например, на http://openstreetmap.org.ua/ мы сделали для выбора языка кнопки name:uk, name:ru. Или ждите, когда подобный инструмент появится на главной странице osm.org (насколько я знаю, работы по этой теме ведутся).

Привязка домиков к улицам (или микрорайонам) с помощью релейшенов (отношений):

  1. выбираем мышкой все линии с тегом highway, относящиеся к данной улице, а также все домики, относящиеся к данной улице
  2. создаём отношение
    В тегах отношения (вверху) указываем тип type=associatedStreet (можно использовать и тип street, но желательно, чтобы в пределах одного населённого пункта использовался только один тип использовать тип street не рекомендуется).
    В тегах отношения указываем названия улиц на разных языках. Так же, как это делали на линиях улиц.
name=Радянська вулиця
name:ru=Советская улица
name:uk=Радянська вулиця

Добавляем в отношение участников (выбранные нами линии улицы и домики).
После добавления прописываем для каждого участника отношения его роли.
Для линии улицы пишем роль street, а для домика роль house.

Если домики адресуются не по улицам (“Советская улица, 72”) а по микрорайонам ("Юбилейный микрорайон, 72), то в тегах отношения пишем названия микрорайона на разных языках.

name=Ювілейний мікрорайон
name:ru=Юбилейный микрорайон
name:uk=Ювілейний мікрорайон

При адресации по микрорайонам в релейшене отсутствуют учасники с ролью street. JOSM на это ругается, но ничего не поделать, пусть ругается.
Учтите, что в программе СитиГид адресация по микрорайонам всё равно не поддерживается. (уже вроде поддерживается)
Если вы, я надеюсь, используете редактор JOSM, то рекомендую установить плагин для работы с отношениями RelationToolbox.

  1. Если в населённом пункте имеются улицы - “однофамильцы” в разных районах, то в теги отношений для таких улиц добавляем тег
    addr:suburb с названием района города, в котором расположена эта улица. Не забудьте обозначить сам район точкой или полигоном с тегом place=suburb и названиями (name, name:ru, …).

  2. для одной улицы (микрорайона) создаём только одно отношение. Даже если улица имеет разрывы или состоит из нескольких линий.
    Если кто создал два отношения для одной и той же улицы, то надо убедиться, что это одна и та же улица, а не разные одноимённые улицы в разных районах, после чего выделить всех членов второго отношения, добавить их в первое, не допуская дубли, после чего второе отношение удалить. Потом выделить всех членов первого отношения и проверить правильность.

– Вопрос: А зачем названия прописывать дважды: сначала на линиях улиц, а потом в релейшене?
– Ответ: Потому что конвертер не хочет брать названия улиц из тегов линий улиц. Поэтому названия на линиях улиц пишутся для того, чтобы их было видно на карте, а названия в тегах релейшена пишутся для базы адресного поиска.

– Вопрос: А нельзя ли написать на домике addr:street=Радянська вулиця, на линиях улицы написать name=Радянська вулиця, name:ru=Советская улица. А потом заставить конвертер искать улицу с названием “Радянська вулиця”, чтобы взять с неё русскоязычное название?
– Ответ: Нельзя! Конвертер этого не умеет и не будет. Все вопросы - к Liosha.

– Вопрос: А можно использовать теги типа addr:street:ru
– Ответ: Нет. Во-первых, это неудобно. Во-вторых, вызовет кучу возможных ошибок. Например, если на домике забыли написать название улицы на каком-то языке, то при создании карты на этом языке он выпадет из поиска.

– Вопрос: А почему не рекомендуется тип street?
– Ответ: Потому что 1) street не поддерживается системой nominatim 2)для однообразия и уменьшения путаницы, когда для одной и той же улицы вдруг окажется два релейшена разных типов 3) в плагине RelationToolbox в JOSM работать с associatedStreet удобнее (есть автозаполнялка ролей и name, правда name:ru придётся вручную прописать).

Привязка улицы к населённому пункту

  1. никаких тегов для привязки улицы, дома или микрорайона к городу (деревне) дописывать НЕ НУЖНО.
    Необходимо и достаточно, чтобы линии улицы и все домики находились целиком ВНУТРИ границы населённого пункта.

– Вопрос:А если укажу?
– Ответ: Тогда в базе адресного поиска может появиться два города. Причём все дома будут в одном городе, а ваш домик в другом.

Тегирование населённых пунктов и привязка улиц к населённым пунктам:

  1. населённый пункт обозначается точкой в условном центре населённого пункта, а также границой территории населённого пункта.
    При наличии в населённом пункте именованых улиц границу рисовать обязательно!
  2. точка-центр и граница (помимо прочих тегов) должны иметь теги place и нзвания на разных языках
    Например,
place=town
name=Іванівка
name:ru=Ивановка
name:uk=Іванівка
  1. Дописывать к названию статусную часть (слова “деревня”, “село”, “город”, с.м.т и т.д) не нужно.
    В виде исключения допускается дописать статусную часть в случае, если имеется два населённых пункта в одном районе, но один из них село, а другой посёлок, и по другому их не различить
    Например, в Харьковской области почти рядом есть две Одноробовки - село и посёлок:
place=village
name=Одноробівка
name:ru=Одноробовка
name:uk=Одноробовка
place=village
name=Одноробівка селище
name:ru=Одноробовка посёлок
name:uk=Одноробовка селище
  1. Если населённый пункт имеет “однофамильца” в другом районе, то можно в тегах обоим указать район (на украинском языке)
place=town
name=Борова
name:ru=Боровая
name:uk=Борова
addr:district=Борівський район

place=town
name=Борова
name:ru=Боровая
name:uk=Борова
addr:district=Зміївський район

(в будущих версиях В новой версии конвертора osm2mp планируется действует автоматическая привязка населённых пунктов к районам. Тогда Теперь указывание addr:district станет ненужным уже не требуется)

  1. Если населённый пункт имеет “однофамильца” в том же районе, его нужно привязать к территории местного совета (городского совета, поселкового совета, сельского совета).
    Тут пока есть два варианта:
    а) временный, но не очень правильный
    На точке и на границе населённого понкта указать принадллежность к местному совету, например addr:subdistrict=Козіївська сільська рада
    б) правильный, но пока трудно выполнимый
    Обозначить границы территории местного совета, указать на отношении границы теги boundary=administrative, admin_level=8, name=Козіївська сільська рада, name:ru=Козиевский сельский совет. Убедиться, что территория населённого пункта целиком попадает в эти границы.

– Вопрос:А конвертер osm2mp это понимает?
– Ответ: Пока не знаю, надо проверить.

– Вопрос:А как узнать, что у населённого пункта есть “однофамильцы”?
– Ответ: После конвертации “польский” формат откройте файл карты области в GPSmapedit, запустите проверку карты. В списке ошибок увидите ошибки типа “Более чем один населённый пункт проиндексирован как “Ивановка”” со ссылками на эти населённые пункты.

– Вопрос:А как найти населённый пункт, который я вижу в GPSmapedit, на карте OSM?
– Ответ: В GPSmapedit щёлкните правой кнопкой мыши на объекте, выберите “Свойства” - “Комментарий”. В комментариях будет указан номер объекта по базе данных OSM. Откройте JOSM и загрузите объект с этим номером, а потом и прилегающую к нему часть карты.

Привязка населённых пунктов к области

Не требуется. Потому что:

  1. Обычно карта Украины нарезается по областям. И при нарезке название каждой области задаётся вручную.
  2. Конвертор osm2mp привязку районов и городов к области выполняет автоматически, если город или район геометрически находится внутри границ области.

dimonster
О. Подробно, доступно и поясняются многие неочевидности. ИМХО то что нужно. :slight_smile:
Правда сейчас конечно же придет _sev и скажет что

не нужно и бессмысленно :smiley:

буду первым, мультиязычные теги в отношениях приоритетней, нужней и полезней…

dimonster,
гарно розписано, але є один важливий недолік - ви популяризуєте маппінг під osm2mp, а одне з основних правил OSM “не мапити під конкретне застосування(мапнік, неідеальні валідатори, неідеальні конвертори)”.
Вам уже казали не раз: “не подобається osm2mp - використовуйте власний, пропатчений osm2mp, викладайте вигрузки на радість всім”.

addr:housename - в Україні не повинен використовуватися взагалі, це британський тег.

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

Ось це дійсно маразм, який давно був прийнятий в UA-OSM через пропозал.
Значно краще - так як в RU-OSM, з природнім порядком слів. Кому потрібна одноманітність міг би на рівні конвертора зміщувати “вулиця” на початок/кінець назви кому як треба.
Сподіваюсь, що колись в UA-OSM з’явиться критична кількість маперів яким сьогоднішній стиль утворення назви також здається хибним.

Що значить “и не будет”? Та допишіть кілька рядків в той конвертор і все вам буде. На nadoloni.com будинки зв’язані з вулицями і через зв’язки, і по addr:street. Якщо osm2mp не вміє розпізнавати прив’язку по addr:street то це проблема osm2mp, а не даних.

На цьому можна було зупинитись, немає ніяких виключень. Не потрібно дописувати в назву населених пунктів те, що не є назвою.

а які є інші способи конвертації osm-navitel, osm-garmin, osm-7ways, osm-CityGuide ???

Згоден. Хіба що у якомусь задрипаному хуторі, де будиночки-мазанки не мають номерів. Але я такого ще не бачив. Цікаво, хтось бачив будинок (житловий) без номера?

Не згоден. Для цього є нумерація під’їздів. Обробку якої, до речі, Liosha обіцяв зробити.

А який порядок слів є природнім? Де слід писати статусну частину? Чи слід скорочувати “вулиця - вул.”? Як писати “Заречная улица” або “улица Заречная”. Чому москалі пишуть “Площадь Свердлова” зі статусною частиную спереду, а “Красная площадь” зі статусною частиною ззаду?
Ще й можуть виникати помилки з адресацією, коли десь прописано “вулиця Іванова”, в іншому місці “вул. Іванова”, "а десь на будиночку “Іванова вул.”.

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

Ні, це проблема усіх.

А що робити з селом Одноробівкою та селищем Одноробівкою?