OpenStreetMap

Адресация

Posted by ~Jhellico on 21 January 2013 in Russian (Русский)

dimonster:

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

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

1) теги addr:country, addr:city, addr:street, addr:region, addr:district и прочие addr:чегототам на домах НЕ ИСПОЛЬЗУЮТСЯ! Кроме addr:housenumber (или addr:housename, но он редко где нужен)

2) привызывание домиков к улицам, (а при адресации по микрорайонам - к микрорайонам) делается с помощью релейшенов (отношений) типа associatedStreet или street. (см. ниже)

3) остальные теги домиков пишем как обычно (building=yes или что-то иное, этажность, amenity и др.)

4) если один домик официально имеет несколько адресов, например, находится на пересечении улиц Иванова и Петрова и имеет два адреса: "Иванова улица, 1" и "Петрова улица, 14", то на контуре домика пишем тот номер дома по тому адресу, который используется чаще. Потом ставим внутри контура точку, пишем на ней building=yes и пишем номер дома по второму адресу. Затем контур дома включаем в отношение для улицы Иванова, а точку с номером включаем в отношение для улицы Петрова.

Получаем:

  • Полигон дома с тегами building=yes, addr:housenumber=1, включен в отношение улицы Иванова

  • Точку с тегами building=yes, addr:housenumber=14, включен в отношение улицы Петрова

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

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

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

1) Линии улицы подписываем по названию, используя теги name, name:ru, name:uk и другие name:xx

2) В теге name пишем название улицы на украинском языке (кроме Крыма - там отдельный разговор).

3) В тегах name:ru, name:uk и прочих name:xx пишем название улицы соответственно на русском, украинском и xx-ском языках

4) Название улицы на английском языке (name:en), если оно получено простой транскрипцией, можете не писать. Его потом автоматически проставит робот "_sevbot".

3) Статусную часть названия (слова вулиця, улица, 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, но желательно, чтобы в пределах одного населённого пункта использовался только один тип).

В тегах отношения указываем названия улиц на разных языках. Так же, как это делали на линиях улиц. name=Радянська вулиця name:ru=Советская улица name:uk=Радянська вулиця Добавляем в отношение участников (выбранные нами линии улицы и домики). После добавления прописываем для каждого участника отношения его роли. Для линии улицы пишем роль street, а для домика роль house.

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

name=Ювілейний мікрорайон

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

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

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

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

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

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

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

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

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

1) населённый пункт обозначается точкой в условном центре населённого пункта, а также границой территории населённого пункта. При наличии в населённом пункте именованых улиц границу рисовать обязательно!

2) точка-центр и граница (помимо прочих тегов) должны иметь теги place и нзвания на разных языках

Например,

place=town

name=Іванівка

name:ru=Ивановка

name:uk=Іванівка

Comment from andrewsh on 21 January 2013 at 15:09

Фигня.

1) теги addr:country, addr:city, addr:street, addr:region, addr:district и прочие addr:чегототам на домах НЕ ИСПОЛЬЗУЮТСЯ! Кроме addr:housenumber (или addr:housename, но он редко где нужен)

addr:street таки нужен.

3) Статусную часть названия (слова вулиця, улица, Street, провулок, переулок, Lane и т.д.) пишем обязательно, указываем полностью, без сокращений и в конце названия. Например: name=Радянська вулиця name:ru=Советская улица name:uk=Радянська вулиця

Бред. Советская улица, но улица Советов.

Ответ: Тогда в базе адресного поиска может появиться два города.

Бред. Не появится.

Ну а упомянутый релейшн вроде как давно deprecated.

Hide this comment

Comment from Larry0ua on 22 January 2013 at 14:26

andrew_shadoura, это правила для Украины. релейшн address - deprecated, associatedStreet - нет.

мои комментарии: addr:street возможен, хоть и нежелателен в общем случае.

про два города - подозрительное условие, не должно быть таких проблем. если присутствуют - пинайте автора конвертера.

Hide this comment

Comment from dimonster on 10 February 2013 at 18:33

Ребята, эти правила дают возможность сделать карту с нормальным адресным поиском на русском либо на украинском языке (просто указав нужный язык при конвертации в osm2mp). В них вроде бы нет ничего, что противоречило бы вики. И конвертер osm2mp понимает релейшены улиц, привязывает улицы к городам, а города к районам и областям.

Полный текст и обсуждение по ссылке: http://forum.openstreetmap.org/viewtopic.php?pid=305091#p305091

"addr:street таки нужен." - при использовании отношений типа associatedStreet не нужен тег addr:street. Кстати, конвертер osm2mp при наличии addr:street и одновременном наличии отношения associatedStreet заменяет название улицы а адресе домика на то название, которое прописано в релейшене.

"Бред. Советская улица, но улица Советов." Не бред, а договорённость. Чтобы было всё однообразно.

"Бред. Не появится." В карте под "Семь дорог" появились Харьков и Kharkov потому что кто-то умный прописал на одном POI тег addr:city на английском. Впрочем, версия конвертера osm2mp, которой я пользуюсь, вроде уже заменяет addr:city на название с полигона города.

"Ну а упомянутый релейшн вроде как давно deprecated.". Нет. В вики написано, что он может использоваться вместо addr:street.

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment