Обсуждаем способы задать адресацию

Вну́ково — эксклавный район Москвы к юго-западу от МКАД. Территория района создана на основе посёлка при аэропорте. В состав Москвы входит с 1950 года. На территории района расположен крупный аэропорт Внуково. Входит в состав Западного администативного округа. Состоит из двух частей, разделённых территорией Московской области: посёлка Внуково и посёлка Толстопальцево.

Ezhick, “входит в состав” - это НЕ адресация, это административное деление!
Адресации оно касается немного боком.

Alexandr Zeinalov, сейчас эта задача геометрически сама собой решается. Проблема обратная: не бить улицы по “обычным” районам Москвы. С костылями проблем конечно же нет. Можно придумать тэг для границ районов что-то вроде addr:street=no, который подскажет конвертеру не делить улицы по этим районам. Т.е. задача административного подчинения решается геометрически + admin_level + этот незаменимый костыль :slight_smile: почти что без отношений/кладра. Но с ними как-то все становится проще и быстрее.

мды. стоило уехать на недельку в отпуск и все сразу на схему накинулись :slight_smile:
liosha, по сельсоветам/районам города и т.д. - ничто не мешает внести приозвольный уровень в схему (примеры - http://www.openstreetmap.org/browse/relation/79852 http://www.openstreetmap.org/browse/relation/411864))
по названию тегов - по русски же написано - черновик. т.к. долгое время со схемой работал только я - мне эти названия не мешали. потом в процессе создания рендерера для name:be подключились Котяра и jek. им это тоже никак не мешало. если схема будет расширяться - естественно надо причёсывать теги.

physiocrat,
там существует ещё море заморочек. Просто извлекать адресацию из попадания в АДМИНИСТРАТИВНЫЕ границы неправильно. Те же административные округа Москвы включать в адрес не надо (кроме Зеленограда). Как и не всякие районы и посёлки. Особых случаев слишком много, и нужно уметь их обслуживать.

liosha,
ты по-моему не видишь, что “не административное деление” ещё не означает, что это строго тройки “нп-улица-дом”. Жители Внуково не поймут, если ты скажешь, что их адреса начинаются не с “Россия, Москва”, а с “Внуково” или даже “Россия, МО, Внуково”. Они ж не дураки, они уже давно знают, что живут в Москве, получают московские пенсии, школы у них имеют московские номера, выбирают они депутатов в Мосгордуму, а не в Мособлдуму. В качестве своего адреса они указывают “Москва, пос. Внуково, улица такая-то, дом такой-то”. И мы тоже должны исходить из необходимости создавать адресацию так, чтобы соответствующие адреса естественно появлялись из нашей адресации, а не костылями.

Когда говорят, что адресация не равна административному делению, имеют в виду другое. Приведу банальный пример безо всякого Внуково:
Административное подчинение: “Москва”->“ЮЗАО”->“Обручевский”->“Ленинский проспект, дом 99”
Адрес: “Москва”->“Ленинский проспект”->“дом 99”

Вернёмся к нашему бедному Внуково. Если ты посмотришь на административное деление Москвы, то посёлок Толстопальцево у тебя попадёт в район Внуково. Но посёлок Толстопальцево при этом не входит в посёлок Внуково.

Адресация на отношениях с достаточным запасом уровней адресации имеет неслабый запас для описания очень нетривиальных случаев. Я привёл пример с Внуково и Толстопальцево, который в уже существующем варианте легко решается (помещением на уровень a4), а есть ещё пример Старбеево-Клязьмы (см. http://forum.openstreetmap.org/viewtopic.php?pid=28843#p28843):slight_smile::)), где приходится задействовать уровень a5.

Система “только улицы” имеет кучу ограничений, мы бесконечно будем упираться в глюки, будем вынуждены отмечать неучаствующие в адресации уровни очередными тэгами-костылями, и тд и тп. Не надо так делать.

Лишняя сущность в данном случае — геометрические вычисления.

Пример задачи: по координатам дома или улицы собрать её полный адрес. Хотя бы прикинуть объём вычислений и трафика.

Зачем вообще уровням номера? Какой они несут смысл и где используются?

Alexandr Zeinalov,
никто не призывает вытягивать адресацию из административных границ. Границы н/п и административные границы - это разные границы. Другой вопрос, что пока границы н/п никто не задал, временно используются административные.

Ответ на вопрос, что же является н/п в случае Внуково, кстати, я так и не получил. А он тут ключевой.
Разницу между районом Внуково и посёлком Внуково объяснять, думаю, не надо?
Итак, ещё раз: что является в случае Внуково населённым пунктом - а) Внуково или б) Москва? :slight_smile:
А или Б? И не надо кричать о “костылях”, которые пока ещё никто не предложил.

Что касается адресации, то с ней имеется хорошее недопонимание, что же такое адресация :slight_smile:
Адресация - это способ однозначно определить объект среди других подобных объектов, только и всего.
По структуре она ПОХОЖА на иерархию, но она НЕ ЯВЛЯЕТСЯ иерархией (в отличие о того же админ. деления).
Поэтому все попытки привести адресацию к иерархии обречены, если у тебя нет властных рычагов заставить.
(Как пример - КЛАДР, который не особо хорош, но во многих документах обязателен к использованию).

А с введением адресов в ОСМ вообще весело: откуда взялась идея, что там должна быть адресная иерархия??
Там должны быть данные, из которых МОЖНО ПОСТРОИТЬ адресацию!
Причём эти данные должны быть в форме, наиболее простой для редактирования и поддержки.

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

Если бы…
Во-первых, надо договориться - о каких подобных объектах идёт речь…
Коллеги, адресуем-то ЧТО? Места проживания человеков? Тогда нужен ещё и номер квартиры. Места регистрации ЮрЛиц? Опять-таки одного номера дома мало…
А, если вспомнить, что ЮрЛицо может рассовать свои магазины, мастерские, офисы по всему городу/области/стране/ЗемШарику?
У телефонов - свои АДРЕСА, у компьютеров - свои…
Я мн-о-о-ого раз уже говорил, что на КАРТЕ адресовать надо ОБЪЕКТЫ НЕДВИЖИМОСТИ…

Во-вторых, я согласен, что в административном делении столько наблудили, что попытки строить на нём иерархию адресации обречены на провал, ибо те, кто писали и принимали 131-ФЗ о системе и иерархии представления не имели…
А вот без ИЕРАРХИИ и УРОВНЕЙ ни нам (адресация ОМСУ) ни Вам (адресация OSM) не обойтись. Если, конечно, КАРТУ должен ПРОЧИТАТЬ не только ЧЕЛОВЕК ГЛАЗАМИ, но и ПРОГРАММА - ЛОГИКОЙ.
*Диалог чукчи с пограничником:

  • Американская подводная лодка ушла на северо-северо-запад.
  • Ты не умничай, ты покажи рукой…*

В-третьих, “прогнуть весь мир под нас” можно и без властных рычагов.
Надо сделать ХО-РО-ШО. Так ХО-РО-ШО, чтобы этим было УДОБНО ПОЛЬЗОВАТЬСЯ.
Не надо будет ЗАСТАВЛЯТЬ…

Ах, да - речь-то ведь о “способах задать адресацию”…

Надо, Alexandr. НА-ДО!
Только, почему “только улицы”?
Вводить надо такое понятие как Элемент адресной структуры
Это может быть и Улица и Квартал и Микрорайон и Промзона и Садовый массив (задумайтесь над вероятными последствиями “садовой амнистии” и переводом садовых домиков в жильё).

На верхних уровнях ИЕРАРХИИ АДРЕСА ОБЪЕКТА НЕДВИЖИМОСТИ: страна, область, район, населённый пункт.

На нижних уровнях иерархии: НОМЕР ДОМА (свободного ЗУ/хозкомплекса…), НОМЕР КОРПУСА (строения/цеха…) и НОМЕР ПОМЕЩЕНИЯ (квартиры/кабинета/номера/палаты…)

А на вот на среднем уровне иерархической структуры адреса (от НП до ДОМА), полагаю, одним уровнем (Уровнем улицы) в крупном городе не обойтись…
Но, никаких ужасов от применения ЧЁТКОЙ и ОДИНАКОВОЙ для ВСЕХ городов СТРУКТУРЫ адреса я не вижу.
В, городе Рыбинске (210 тысяч жителей), например, одного уровня хватает, но в базе адресов есть факультативный уровень - РАЙОН ГОРОДА. (На вырост сделали :slight_smile: )

Provincial, я уже попытался выделить ЧЁТКУЮ структуру в адресации.
Получилось: страна → нас. пункт → дом/участок
Всё остальное никакой чёткостью не пахнет.

IMHO, вообще не надо заморачиваться, сколько уровней существует. Нужна гибкая система, которая позволит создавать вложенность любой глубины. Нужна система группировки адресных едениц. И на определенных уровнях эти группы совпадут со страной, НП, домом/участком. Но между этими уровнями может быть любое, в том числе и нулевое, кол-во групп.

Некоторые группы могут быть неадресуемыми, т.е. физически группировка существует, но в адресе не упоминается (для примера - группировка челнинских домов в комплекса - сам комплекс в адресе не участвует). А некоторые группы могут быть виртуальными, т.е. физически такого деления не существует, но оно присутствует в адресе (опять же пример на Челнах - комплекса группируются в Новый город, поселок ЗЯБ и поселок ГЭС - такого административного деления не существует, но эти группы присутствуют в адресе). Адресная группировка может и будет отличаться от административной - 32, 62 комплекса Челнов по адресу относятся к Новому городу, а по адм.делению - к Комсомольскому району, которого в адресной схеме Челнов вообще не существует.

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

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

У меня получается примерно такая схема отношения:
type=addresselement
address=house/street/locality/hamlet/village/suburb/town/city/district/region/country - список не фиксирован, могут использоваться любые необходимые типы;
name=… - имя адресного элемента, которое будет вставлено в полную адресную строку
В отношение могут включаться дома (в роли house или building), улицы (роль street), границы адресуемых элементов (роль border), другие адресные отношения (в роли записанной в address=)
Дополнительные теги:
nameused=yes/no - должно ли имя отношения использоваться в полной адресной строке. По умолчанию yes.
number=xxx - в каком теге находятся номера домов. По умолчанию addr:housenumber.

Пример использования:
building=apartments
addr:streetnumber=87
включен в роли house в
type=addresselement
address=street
name=“Московский проспект”
number=addr:streetnumber
включен в роли street в
type=addresselement
address=city
name=“Набережные Челны”
включен в роли city в
type=addresselement
address=region
name=“РТ”
включен в роли region в
type=addresselement
address=country
name=“Россия”.

ikz, такая схема всех бы устроила.
Одно тольно НО: она вряд ли приживётся :slight_smile:

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

Насчет длинности addresselement согласен. Может быть и просто address.
Названия ролей выдумывать не придется. В большинстве случаев эти названия уже есть и совпадают со типом адресуемого элемента. Зато эта пара address=xxx и роль xxx дают верифицируемость и проверку цепочки на выпадения.

liosha, а что мешает ей прижиться?

Пример два (челнинская адресация) с тем же самым домом:
building=apartments
addr:housenumber=7/06
включен в роли house в
type=address
address=locality
name=“7ой комплекс”
nameused=no
включен в роли locality в
type=address
address=locality
name=“Новый город”
включен в роли locality в
type=address
address=city
name=“Набережные Челны”
включен в роли city в
type=address
address=region
name=“РТ”
включен в роли region в
type=address
address=country
name=“Россия”.

мды. а никто не подумал что is_in не от хорошей жизни? или никто не слышал про ограничение количества мемберов у релейшена? одно дело 100500 улиц у релейшена города, другое дело один город у 100500 улиц

ответ на вопрос почему цифры - потомучто уица/авеню/переулок/проезд - это один уровень адресации
как и город/посёлок/деревня/хутор
давать им разные имена в рамках схемы - значит надо ещё и подобие admin_level вводить. что неинтересно. это раз.
если читали http://wiki.openstreetmap.org/wiki/Relations/Proposed/Postal_Addresses#Address_Elements (с которого списывалась текущая схема), то там есть ссылка на http://www.ietf.org/rfc/rfc4119.txt игнорировать который целиком не вижу смысла. какой никакой, а RFC

да слышали. А мы тут костыль забьём, ради такого случая. Сделаем промежуточное отношение, а в него еще “100499” )) членов натолкаем.
Система ikz’а мне определённо нравится. Чисто программистская система, двунаправленные деревья с полным отсутствием избыточности. Ну небольшие костылики… для меня они очень логичные.

так понимаю, тема закрыта)) идеал достигнут, практически. Помечтали… реализации не ждать.

Я за этот вариант.

Идеала пока не ждать, но улицы в street собирать надо! :slight_smile:
Причём советую в сложных случаях, если name не совпадает с полным адресом улицы внутри н/п,
у релейшена street прописывать этот адрес в тег addr:street.
( Да-да, это именно костыль, но прописывать всё равно советую )

Ну держитесь! Ща я вам насобираю :))) ушел рисовать бота под Street