Есть такое дело как адресация (адресный поиск)
Тут будем разбирать на примерах то как её правильно орагнизовать в OSM,
В качестве примера будет выступать Краснодарский край, города Краснодар и то что попалось под руку.

1. Границы города

брать тут

Муниципальбное образование Город Краснодар (http://www.openstreetmap.org/browse/relation/269701)
город Краснодар (http://www.openstreetmap.org/browse/relation/1477036)

просмотр online

2. Что есть что?

Обращаем внимание на то что есть город краснодар и "МО город Краснодар(Краснодарский район)" - это два разных понятия
За частую в адресах типа г.Краснодар ,посёлок Берёзовый, улица целиноградская под словом "г.Краснодар" имеется ввиду как раз муниципальный округ "МО город Краснодар"
Чёрным обведены границы Муниципального образования (района), а красным - сам город Краснодар

3. Адресация

адрес задаётся или точкой или полигоном должен иметь следущие атрибуты
Чем предпочитетльнее полигон перед точкой? - а тем что полигоном мы обводим здания и задаём как эстетический так и практический вид карте,
так же домики можно посчитать, и красиво отрендерить в 3D :)
Если же всётаки выбран халявный путь - и дом задан точкой (на точку ОБЯЗАТЕЛЬНО) вешаем building=yes, иначе не будет нам адресного поиска.
И точку поставить ближе к главному въезду. А то вещаем адрес на основное строение или на участок, а потом нафигатор приводит к объекту с другой стороны (улицы), к глухому забору. (с) Эцелоп

например Краснодар ул Красная 180 будет иметь вот такие теги

бывает ещё адресация диапазонами (Карсруэ), но мы пока её пропустим так как для тех кто её делает, сий мануал не актуален

4. Далее (районы)

в Краснодаре есть районы addr:suburb (Пашковский\Юбилейный\Комсомольский\Северный и пр.)
если улица имеет одинаковую нумерацию в двух районах Краснодара, то:
улица проходящая по микрорайону должна иметь тег addr:suburb например addr:suburb=Пашковский
живой пример: имеем ул. Комсомольская дом 1 , она есть и в Пашковке, и в Городе
в Городе будет вот так:
а в Пашковке добавляется только 1 лишняя ВАЖНАЯ строчка:

Обращаю внимание на то, что тег addr:suburb вешается только на те улицы которые имеют задвоение в пределах одного города
если улица уникальна и больше нигде не встречается - с тегом addr:suburb можно не заморачиваться,
(если всётаки повсеили тег - будет отмечено в скобках что улица живёт именно в микрорайоне, иначе просто классическая улица города...)
Если улица проходит по через несколько микрорайонов и имеет продолжающуюся адресацию - то так же не заморачиваемся с тегами.
Если две одинаковые улицы находятся в двух разных микрорайонах одного города тогда: тег addr:suburb вешается на КАЖДУЮ улицу и дом с адресом в каждом микрорайоне

Если улица проходит через два микрорайона и есть улица с таким же названием в третьем микрорайоне :
- если в каждом микрорайоне эта улица начинается с номер дома 1 - смело вешаем на каждый кусок свой suburb
- если нумерация в этих двух продолжающаяся - ничего с такой улицей не делаем, она идёт как обычная улица города, а ту которая проходит по трерьему микрорайону тегируем suburb'ом микрорайона (у нас получися две улицы первая сквозная, вторая с добавкой микрорайона в скобочках)


5. ДАЧИ (садовые товарищества, и иже с ними), хутора, посёлки

Есть дачи входящие в состав города, и находящиеся за пределам города на территории МО город Краснодар (краснодарского района),
первые - по хорошему обозначаются микрорайонами
вторые - как отдельные населённые пункты

как тегируем:
1) обрисовывается полигон всего Дачного товарищества (кооператива)
2) рисуются контуры домов, по хорошему каджый участок ласкутным способом обрисовывать не нужно
3) можно обозначить заборы (barrier=fence), если уж совсем хочется
адресация вешается или на дом (полигон с тегом building=yes), или на точку с таким же тегом (building=yes) если здания на участке нету, а очень хочется чтоб он участвовал в адресном поиске.


обращаем внимание: "с/т" "нст" и всякие хвостики ставми в конце для удобства чтения и для единообразия

Первые:(Микрорайоны)


Полигон
Точка административного центра (и для рендера тоже)
обычно центральная площадь или здание администрации
Улица
соответственно дом

при поиске в Краснодаре например улицы Малиновой будет вываливаться список из улиц МАЛИНОВЫХ, и в скобках микрорайоны в которых есть эти улицы
Дачи в составе города - это своего рода микрорайоны (ибо там есть куча фруктовых улиц, а на каждой из них есть участок с номером 1)

Вторые: (отдельные населённые пункты)

Дачи НЕ ВХОДЯЩИЕ в состав города, но находящиеся на территории "МО город Краснодар"
по сути дела это хутора (или посёлки) единственное чем отличающиеся от оных - это тегом landuse=allotments + place=allotments
Полигон населённог ункта:
Отмечаем центр дач (на данный момент не рендерится на мапнике, но это не повод не отмечать)
теги на улице
теги на доме

5.1 Ещё пример тегирования дач

Дачи находятся за территорией станицы Новотитаровской, в Динском районе (ссылка), но по кадастру принадлежат ей
Отмечаем полигон как микрорайон станицы (addr:city)
Улица
Дом

При поиске будет отображаться Новотитаровская -> ул. Садовая (Ягодка с\т)

Ньюансы:


Бывает такое дело на стыке двух дачных товариществ, когда по одной стороне одних дач идёт улица Восточная, а с другой Вольная.
здесь нужно определиться что нам нужно рендерить, и как отмечать ..
вот пример - улица является пограничной
вот здесь мы имеем вообще стык трёх разных садовых товариществ
соответственно улица начинается как Калиновая, затем с одной стороны начинается Восточная и ниже - Вольная,
и напротив каждого дома по одной прямой стоит дом имеющий в почтовом адресе разную улицу :)
Наша задача весь это зоопарк упорядочить и сделать красивым.

1) Отмечаем улицу
Почему name = Вольная улица а не Восточная - тут уже на любителя, что подставим в name то и отобразится на рендере. в принципе можно вообще не обозначать улицу.

почему без addr:city ? - потому что лепить улицу к одному из дачных сообществ - не есть хорошо. у нас получается половина улицы там, половина здесь.
addr:city будет браться из точки или полигона дома с адресной информацией.
и на каждой стороне улицы addr:city будет разный , так же как и addr:street

На одной стороне имеем На противоположной : рядом вот такое
addr:country = RU addr:country = RU addr:country = RU
addr:region = Краснодарский край addr:region = Краснодарский край addr:region = Краснодарский край
addr:district = МО город Краснодар addr:district = МО город Краснодар addr:district = МО город Краснодар
addr:city = Компрессорщик с/т addr:city = Нектар с/т addr:city = Подсолнечник снт
addr:street = Восточная улица addr:street = Вольная улица addr:street = Калиновая улица
addr:housenumber = 131а addr:housenumber = 1 addr:housenumber = 17
building = yes building = yes building = yes
source = Bing source = Bing source = Bing

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


Итак какие ещё есть варианты:
1) нарисовать две улицы
2) придумать что-то ещё?
если есть готовое решение пишите в личку на форуме osm.org - поправим этот пункт


5.2 Хутора, Посёлки, Деревни, Станицы, Аулы и т.д. и т.п.

немного теории:
Населённый пункт это дома , он начинается таблички с названием населённого пункта в начале и заканчивается табличкой с перечёркнутым названием - это в идеале, и на транзитных дорогах и в большинстве случаев найти чёткие границы населённого пункта не представляется возмодным - поэтому мы их рисуем примерно по воображаемым границам, или просто обводим домики входящие в населённый пункт
Для чего всё это нужно с полигонами? почему нельзя сделать просто точку и обозначить наименование?
просто точку поставить можно, но тогда мы не получим адресный поиск и улицами с домами.
Поиск будет осуществляться только по населённому пункту, и прокладка маршрута только до указанной точки.
итак: решили делать правильный адресный поиск:
полигон населённого пункта - по хорошему всё что попадает в этот полигон автоматически привязывается к полигону (деревне\хутору)
но это по хорошему, а если это полигон микрорайон города, или как в примере выше посёлок принадлежащий городу, но териториально стоящий отдельно - то придётся задавать полную адресацию (тоесть непосредственно для каждого адреса полностью задавать страну регион район город улицу номер дома)
Приступаем:
Полигон населённого пункта ссылка как вариант можно ещё добавить
отмечаем точку административного центра (туда куда нас приведёт навигатор если мы не хотим выбирать ничего кроме населённого пункта)
напоминаю: мы отмечаем только необходимый минимум тегов для того чтобы у нас корректно работала адресация и поиск по ней, тегов на самом деле привеликое множество.
Если у нас жилой посёлок - то улицы в нём однозначно должны быть highway=residential и выше, даже если не известно название этих улиц.
Если мы оставим дороги highway=track или highway=service - то не все программы смогут по ним проложить маршрут до указанного дома!
для уточнения покрытия дороги в природе существует тег surface
теперь непосредственно к улицам и домам:
улица: Ленина
по минимуму достаточно все остальное Страну + Регион + Район конвертер схватит из полигона станицы, в который входит улица
никто не запрещает использовать полную адресацию: с номерами домов та же история: или краткая адресация или полная:



6. Угловые дома \ Таунхаусы \ Дома на два входа

Если здание имеет два адреса у нас несколько вариантов как это замапить:
6.1 (оба тега на здании)
6.2 (тег на здании и адресная точка внутри здания)
на полигоне здания ставится первый адрес
внутрь здания ставится точка и на неё вешается второй адрес
6.3 (здание и две адресные точки внутри)
на полигоне здания вешается только building=yes, а внутри полигона ставится 2 точки
первая:
вторая:

7. Номер дома без улицы

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

Иначе если всётаки не удалось определить улицу, и адрес звучит как "Краснодарский край, посёлок Берёзовый дом номер 51" .
по минимуму достаточно всего номера дома, остальное конвертеры возьмут из полигона в который входит точка, (естественно если на полигоне есть соответствующие теги) адресный поиск будет выглядеть:
Страна -> Город -> Улица -> Дом
Russia -> Березовый (МО город Краснодар) -> Берёзовый -> 51


В навителах адрес состоит из 5 полей:
* страна - Россия, может браться с полигона страны, из addr:country полигона города, или явно задаваться при конвертации; тут третий случай
* регион - "Краснодарский край, МО Краснодар", собирается из полей addr:region + addr:district, каждый из которых может быть задан тегом или границей, в данном случае из тегов полигона города
* город - Берёзовый, в данном случае возьмётся из addr:city полигона города (addr:city приоритетнее, чем name).
* улица - Берёзовый, оттуда же; навител всегда хочет улицу, поэтому когда она не задана, вместо неё используется псевдо-улица с названием нп. Хотя можно было бы и по-другому назвать, например, "Без улицы".
* дом - 51, из addr:housenumber

Если нам нужно указать полную адресацию, то мы используем полный набор:
addr:city = не заполняем !!! (оно заполнится автоматом из полигона города)

На остальных адресах посёлка, там где есть adds:street всё будет по старинке.

Q:4. Как тегить номера домов?
A: Как всегда, addr:housenumber=* + addr:street=* либо addr:housenumber=* + addr:place=*

Почему навител? Зачем заточка под навигаторы? - а если это не противоречит стандартным тегам - почему бы и нет?

подробности по теме http://forum.openstreetmap.org/viewtopic.php?id=20174


продолжение будет по мере накопления вопросов, опыта и разбра ошибок

1) улица проходящая между двумя СТ и принадлежащая обоим ... (с одной стороны дома в одном ст с другой - второго)
2) СНТ находится на территории микрорайона ссылка - смело мапим его как отдельный микрорайон
3) если у полигона населённого пункта стоит addr:city , то обязательно должно стоять addr:suburb, а ни в коем случае не place=city\hamlet, это ж всётаки район города а не отдельный город
если всётаки это отдельнфый город - то надо убрирать addr:city




last update 19-02-2013 21:49:04