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

Обязательно будут делать неправильно. Хотя не все, разумеется, но этого никто и не утверждал.

Адресация с помощью релейшенов - это имхо утопия.
Во всяком случае, пока.
Слишком уж ненадёжная это штука.

В чём именно проявляется их ненадёжность?

В том, что рушатся от любого чиха.
И чем больше их будет, тем чаще будут рушиться.

Вопрос то в том, что cladr:code еще более ненадёжен и неустойчив. И решение вопросов адресации с помощью средств для этого не предназначенных еще большая утопия.

Ну это ты зря, cladr:code гораздо надёжнее релейшенов.
Хотя проблем у него полно: неуниверсально и привязано к внешней базе

Хм.
При отрисовке зданий я часто копирую теги или дублирую все здание целиком. Представим, что скопировали теги со здания, привязанного по кладр-коду к соседней улице. Отвлеклись, а потом забыли поправить адресную информацию. Первая проблема - здание оказалось привязано к соседней улице и эта ситуация не валидируется! Только ручная проверка соответствия кладр-кода!
Вариант второй - в аналогичной ситуации (копирование тегов) исправили addr:street и addr:housenumber, но забыли исправить cladr:code. И это опять ничем не валидируется! Опять вручную проверять код.

В случае релейшенов такой фигни не будет. При копировании тегов или дублировании здание не попадет ни в один релейшен улицы и при простом клике на нем уже будет видно, включено ли оно в какой-либо адресный релейшен. А при выборе релейшена подсветятся здания включенные в него и будут прекрасно видны пропущенные и посторонние полигоны.

Моя мечта – это отношение street с названием улицы и прочими кладрами (на отношении), сборка безымянных ways в нём с ролью street, и сборка всех домов с ролью address. А на доме только номер.
И главная получается улица, уровень А6. Я даже выше сейчас не смотрю (по белорусской схеме), нам тут бы к согласию прийти!
На самом деле такая схема нижнего уровня достаточно вандало-устойчива. Да и поправить какие вновь-прибывшие дома – не большая проблема.
Довести логику до конечных исполнителей очень просто: есть ящик, спереди написано: “ул. Мира”, выдвигаешь его, там лежат дома (точнее, бумажки со ссылкой на реальный дом), берёшь дом, там его номер. И да, is_in тут пригодится, если не считать обратной связью вверх само участие дома в отношении. (хотя мне не очень нравиться и is_in, как вручную проставляемый тег и дублирующий участие в отношении – потенциальны коллизии вида: дом в отношении, is_in’а нет; и наоборот). И всё.
Если сообщество придёт к некоему соглашению, то навязывать эту схему всем.))
У меня хоть и мало домов нарисовано (зато свои, родные, гпсом все собранные), дак никакого желания особого объединять их во что-то нет – не мотивируется как-то из-за как раз раздрая с “единственным и неповторимым” способом их объединения. А еще есть collection для улиц и для многих он лучший и почти все им пользуются. А у меня вот street – ну куда это годится? Разнообразие это всё… И на каждом отрезке название улицы… и ОНО же! на доме еще до кучи. Что бы не забыть, если что))))
Так что, это хорошо, что старая проблема в очередной раз вскрылась. Давайте продолжать?))

Лично мне белорусская схема не понравилась - слишком уж заумно и неестественно. a3, a6…
Если уж браться за адресацию, надо сначала вообще с уровнями определиться, а потом пытаться привязывать эти уровни друг к другу.

В почтовом адресе шесть уровней: страна, регион, район, НП, улица, дом+квартира. Индекс не рассматриваю, поскольку у одной улицы может быть несколько индексов и у нескольких улиц может быть один индекс. Индекс это, фактически, код почтового отделения.

На начальном этапе достаточно определиться с уровнем объединяющим улицы с домами. Следующие этапы проще.

Я тоже за адресацию с помощью отношений. Предлагаю обсудить схему им. Котяры (вернее, им. Michael_D).

Ну, для начала, я не согласен, что уровней шесть - на мой взгляд их три :slight_smile:

Кроме того, объединить дома в релейшен улицы - это самое простое, что можно придумать.
Релейшены такие уже есть:
http://wiki.openstreetmap.org/wiki/Relations/Proposed/Street
http://wiki.openstreetmap.org/wiki/Relation:associatedStreet#Using_Relations_to_associate_house_and_street_.28optional.29
Так что тут особо и обсуждать нечего. А вот дальше-то что? :slight_smile:

Я хоть за какую-то единую схему адресации.

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

liosha, а какие три уровня? IMHO, даже если исключить страну, останется еще 5…
associatedStreet может включать только один вей в роли street, что не есть хорошо.

Основных уровня три:

  1. Страна
  2. Адрес населённого пункта внутри страны
  3. Адрес владения/дома внутри населённого пункта.
    можно добавить 4. Адрес внутри владения/дома, но это вроде уже не наш вопрос.

Все остальные “уровни” - это скорее группировки, их может и не быть, или у них может быть слишком много вариаций, чтобы их все учитывать в общей схеме.

релейшен address никем пока не забит, так что можно взять street за основу и расписать свои пожелания.

liosha, в принципе согласен. Можно обойтись и тремя уровнями. Хотя пять выглядело бы более естественно.
По пункту 4 я думал вписывать на точки подъездов тег rooms=xx-xxx. И если бы какой из конвертеров смог бы это использовать - указывал бы путь до подъезда. Но включать это в адресацию смысла нет никакого.

Мои пожелания к релейшену (дополнительно к тому, что есть в street):

  • возможность указать, в каком теге хранится адрес дома;
  • возможность указать, что тег name не должен использоваться для адресации.

Ну так я и призываю сначала определиться с уровнями и объектами адресации.
И только потом можно будет придумывать, как описывать и определять, например, принадлежность дома к нас. пункту и адрес дома внутри этого нас. пункта.

Мне кажется нет никакого смысла собирать прям все в релейшны а-ля РБ. Для площадных объектов вполне можно использовать попадание в этот площадной объект, нежели дублировать это попадание в бесполезных релейшнах. Ну а улицы, конечно надо собирать.

IMHO тремя уровнями иерархии не обойтись. Ведь надо, чтобы было все по человечески и легко проверяемо.
Возникают вопросы к “адрес НП внутри страны” - сколько НП будет в таком релейшене? Как его проверять? Как его поддерживать?
Аналогично и по “адрес владения/дома внутри НП” - сколько там домов внутри той же Москвы? Размер такого релейшена трудно представить…

Таки 5 уровней более приемлемо и контролируемо.
Дома собираются в улицы, улицы в НП, НП в районы/ГО, районы/ГО в регионы, регионы в страну. Объем одного релейшена на каждом уровне не сильно большой и вполне поддается проверке и модификации.
Разберу на своем доме (Челны - ГО, поэтому отнес к уровню 3):
(1) дом 2 по бульвару 60 лет Октября, (3) в г.Наб.Челны, (4) в РТ, (5) в России.
или
(1) дом 7/09 [в 7ом комплексе], (2) в Новом городе, (3) в г.Наб.Челны, (4) в РТ, (5) в России.
Такая схема позволит получать полный адрес объекта последовательным соединением полей name (кроме дома, где вместо name берется addr:housenumber/addr:streetnumber или еще какой number).

Во-первых, три уровня - это базовые уровни. Они есть всегда и без них не обойтись.
Иногда их достаточно трёх: Россия, г. Зеленоград, к100.
Иногда гораздо больше: в адрес могут при необходимости включаться и регион, и муниципальный район, и сельсовет, и городской район, и улицы, и микрорайоны, и ещё фиг знает что. Но всегда половина адреса будет описывать НП внутри страны, а другая половина - дом внутри НП.

Во-вторых, не надо смешивать адресацию (НП) с административным делением (ГО). Это совершенно разные и слабо связанные вещи.
И не надо упираться в релейшены, на них свет клином не сошёлся. Первична задача, а не средства. :slight_smile: