Угловые дома, снова

Помоему нам нужно структурировать то что наобсуждали.

  1. Что адресуется? Здания, участки, что еще?
  2. Что мапим? Аншлаги, Адреса по прописке, почтовые адреса, как выбираем если они конфликтуют?
  3. Дальше табличка с различными случаями зданий по столбцам:
    Одно здание с одним адресом. Здание с пристроем. Здание с секциями (делить не делить на части). Здание угловое с несколькими адресами по разным улицам. Здание учавствующее в нескольких видах адресации: жилой комплекс/здание + улица дом – к примеру. Что еще я забыл?
    И способы задания адреса по строкам: точками, streetN, addrN, с распиливанием. Ну и выбрать какой способ для какого случая удобнее - и как его лучше применять. К примеру ставить ли точки с адресом внутрь пристроев и т.д. Ну или хотябы ранжировать какой способ рекомендован для какого из вариантов, какой нет и почему.
  4. Как будет обрабатываться: Пои по адресу, адреса для пои, пои по зданию, адреса для здания, конвертация, геокодинг.

Просто мне кажется что обсуждение “поплыло”.
Я могу нарисовать в вики. только обычно в пылу дискуссии на форуме в вики не особо смотрят.

Согласен. Но дискуссия кончится, а вики-то останется! Вики - дело благородное.
Постараюсь цивилизованно попридираться, когда что-нибудь будет готово (у самого с точными формулировками не очень, так что не лезу).

dkiselev, если оформишь черновик в вики - обещаю заэнхансить часть, в которой будет рассказано про точки.

Покушал - можно и оформлением занятся :slight_smile:
Жить будет тут http://wiki.openstreetmap.org/wiki/RU:%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F как напишу черновик, напишу на форум.

Уже вырисовывается, начало неплохое. Я бы addrN и одиночный addr (carlsrue) всё же бы в разные строки поместил - чтобы люди не путались.

Накатал болванку.

Если адрес 1 то addrN вырождается в обыкновенный carlsrue

Я планирую табличку добить примерам и т.п. Или просто вынести некоторые клеточки в отдельные пункты с примерами и блэкджеком. Просто пока некогда.

Да, об этом и речь. Просто к carlsrue никто придираться не будет, поэтому её можно было бы выделить отдельно (и пометить как неприменимую к сложным случаям). Но это на усмотрение автора.

Понял, да пожалуй можно. Только почему же на мое усмотрение. Правьте смело.

Закончил навешивать стили и т.п. красивости. Можно править, если кто боялся что правки наложатся.

Давайте вернемся к обсуждению. Я конечно могу сделать как чуваки с lanes general extension: голосуем, раз, два, три – кто не успел возразить - тот опоздал, но толку не будет.
Табличку я всетаки заводил как иллюстрацию к обсуждению а не как ответ на все вопросы.

Итак, что я думаю по теме:

A (Земельные участки) - если участок отмечен полигоном - отмечать через карлсруе простовляя тэги на полигон. Если внутри есть строения с отличным адресом - то их так же адресовать через атрибуты на контуре здания. Если полигона нет - адрес задавать точкой, (а лучше добавить полигон). Если адресов у участка несколько - AddrN

B - карлсруэ

С (здание с пристроем / из секций с 1 адресом) - копируем тэги на все секции.

D (угловое без пристроек) - AddrN (продолжаем спор с Питером :slight_smile: )

E (угловое с пристройками) -AddrN, тэги с адресами копируем на все куски здания.

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

G - не знаю что будет лучше распилить или 2 точки внурь воткнуть (если в здании будут пои - то за распилить).

H - AddrN, кто бы сомневался что я его выберу.

I - Атрибуты ставим на сам релейшен. За полигоны с накладывающимися/сопрягающимися аутерами - я бы ругался, хотя вроде никому это проблем особых не создает. Но всеравно бяка.

(Еще раз ссылочка на вики http://wiki.openstreetmap.org/wiki/RU:Адресация )

Вот что я подумал на днях, как разработчик поисковика. addrN сложно поддерживать SQL-скриптами кроме addrN (1-4) еще есть всякие сочетания, которые надо учитывать и это не просто. Я понимаю что под рендеры/навигаторы/пр. мы не рисуем, но надо к ним тоже прислушиваться, если данными будет тяжело пользоваться, то и программ не будет. А кому нужны голые данные, которые нечем обработать/посмотреть?

** ErshKUS понял, что его поисковик не совсем правильно работает по addrN схеме, и научить будет не просто :frowning: *

P.S.
В “C” предлагаю отношения, они как бы для этого, чтоб не дублировать информацию и указании единой сущности. А так получаем дублирование адресов и не ясно ошибка это или так и надо

Мои соображения:

A (участки) - возможно ли что-то кроме Карлруэ? Участки с несколькими адресами мне неизвестны.

B (нормальные одиночные дома) - Карлруэ без вариантов, но стоит уточнить, что если форма неизвестна, надо ставить точку с адресом и building=yes.

С (дом из кусков с 1 адресом) - согласен, либо копируем теги (хотя адреса будут повторяться - для валидации не очень), либо поддерживаем адрес на неком отношении (building? multipart? multipolygon с несколькими outer?). С учётом 3D в среднесрочной перспективе без отношений всё рано никак.

D - если у углового дома два номера (первая 15 = вторая 22), то однозначно AddrN, а если номером (на табличке, в паспортах) является 15/22, то надо думать и обсуждать.

E - сначало с обычными угловыми решить надо

F - я за распил на секции, но в случае неизвестной формы секций (всякие дома-кресты-загогулины, замапенные без знания планирорвки) можно согласиться с точками внутри (точка = где-то здесь секция 100а).

G - принципиально не отличается от F, но расположение известно реже. Либо грубо делить, либо точки.

H - да, тут AddrN наиболее логичен (если в доме нет двух сущностей с разными адресами). Точки внутри только в случае POI.

I (мультиполигон) - теги на мультиполигон. Кусковые дома с разными адресами делим на мультиполигоны :slight_smile:

Ну, главное - чтобы первый адрес искал). А дальше - если поиск по тегам делать (названия магазинов, операторы АЗС, и. т. д.), то прочие теги всё равно обрабатывать… Можно OSM-препроцессор сделать для выдёргивания адресов.

Препроцессор полюбому нужен. Если следовать тому как AddrN задумывалась то доп адресов - один, в собо тяжких случаях - 2. Схема не задумывалась для случая F. (Это я к тому, что вариант, обрабатывать первые 4 - вполне годен).

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

Дом c адресом Улица1 д.1/2 может быть: Улица2 д.2/1, Улица1 д.1, Улица2 д.2.
addr:housenumber=1/2
addr:housenumber2=1
addr2:housenumber=2/1
addr:housenumber2=2

Не обязательно все на одном доме, но вариантов уже больше чем два и проверять придется все. Страшно подумать о домах 1/2/3. Вложенные циклы. Хорошо у нас ограничились 1/2 :).

Ну а какие альтернативы?

Если addr:housenumber=1/2 + addr:street2 + addr:street то дом по запросу Улица2 дом 2, улица 2 дом 2/1 не будет находиться. При поиске точного совпадения не будет находиться и Улица 1 дом 1. Чтобы получить остальные адреса понадобиться препроцессинг. Ну либо, 2 запроса: на первый адрес + запрос с функцией которая переставит 1/2 на 2/1 и присобачит улицу из street2, проверив, что она есть. И опять же вы таким запросом выдернете адреса вида Улица 1 дом 1/2 и Улица 2 дом 2/1 т.е. вы не получите адреса дом 1 и дом 2.

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

Воткните 2 запроса addr:housenumber=1/2 и addr2:housenumber=2/1 - так, при нестрогом совпадении, вы найдете дом по всем четырем запросам. Т.е. без поддержки addrN:streetN (собственно в первоначальном варианте ее и небыло да и необязательно эту фишку поддерживать).

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

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

Какие именно отношения? Иначе многие прочтут твою реплику как: “Собираем все на свете в мультиполигон, а то поиск работать не будет” :smiley:

Поддерживаю, отказ от addr:streetN. Только addrN:street.

http://forum.openstreetmap.org/viewtopic.php?pid=223569#p223569