Из того, что мне однозначно не нравится - распиленные по диагонали дома.
Теперь про точки vs addrN vs street1, street2
Из приемуществ, у точек, мне видится простота импорта когда нужны просто координаты (геокодер например). Недостатки описал AMDmi3 и имхо они перевешивают все достоинства.
addrN vs addr:housenuber=h1/h2 + street + street2
Тут придти к общему мнению с жителями того-же Питера, я боюсь нам не удастся никогда. Я понимаю что вариант через дробь проще рендерить и проще искать если запрос сразу с дробью, я понимаю что для жителей городов где дробь – это всегда адрес по второй улице – самый простой и наглядный вариант.
Но он не однозначен! Не везде число после дроби – это номер дома по другой улице (иногда дробь – это просто дробь ) Однозначно определить чем является число после дроби (номером по второй улице с забытым street2 или у здания один адрес с доробью) невозможно.
Почему еще мне нравится addrN – он гибче: сквозная нумерация + нумерация по улице – пожалуйста. Нумерация по нескольким улицам + еще невесть бог что – тоже организуемо, в streetN – нет.
Ну и наконец, у жителей городов где нет традиции писать через дробь адреса угловых домов, схема с перечислением через дробь и расшифровкой в доп тегах вызывает взрыв мозга.
ну я так глубоко не знаком с данной проблемой, но плюсов у точечной системы столько не будет.
а по addrN нужен порядок и как можно меньше вариантов (и людям и программам проще).
по поводу дробей, вопрос жителям СПб: как записывается почтовый адрес (паспорт, почта и т.п.) улица, дом
согласен что 5/6 100% не заменит адресацию по точкам, но addr:housenumber=5 и addr1:housenumber=6 вполне еще тут же вопрос: можно еще адрес гне нет дроби записывать addr1: addr2:, без addr: но я в этом варианте уверен не на 100%, глупость
В современных официальных бумагах встречается только один основной адрес и номер дома через дробь. То, что второй номер - это номер дома по второй улице видно по продолжению нумерации домов, а так же в старых документах (где часто фигурировало два адреса, без дроби).
Мне кажется, не столь существенно как оно рендерится, сколько как оно будет искаться.
Я уже писал что это не преимущество, потому что мы всё равно парсим “первые” адреса из полигонов и отношений, а если мы это делаем, то обработка остальных адресов бесплатна, потому что точка у нас уже есть.
Я не понимаю в чём проблема с дробями. Схема позволяет писать и addr:housenumber=5 и addr:housenumber=5/6 и addr:housenumber=5 + addr:housenumber2=5/6. Вариант выбирается в зависимости от того, какие номера вообще используются и какой из них (более) официальный. Если речь идёт о том чтобы что-то вычислять из строки housenumber то это однозначно НЕТ, потому что дробь значит разное в разных городах, где-то для угловых домов исппользуется не дробь, дробей может быть много (варианты a/b/c я видел, не исключено что бывают и a/b/c/d), и здесь наблюдается комбинаторный взрыв, потом как b и c могут произвольно меняться местами и опускаться в любых комбинациях. Поддерживать из синхронизацию с streetN тоже невозможно (т.е. кто-то увидел табличку, заменил 1/6/8 на 1/8/6, улицы не поменял, всё сломалось). streetN - однозначно не вариант.
Проблема тут в привычке,причем не в привычке осмеров а в привычке жителей города. Люди живущие в доме первая 17/2 могут вообще Ес не знать что это первая 17 / вторая 2 и на вопрос: “Куда едем?” ответят первая 17/2. Естественно осмеров живущих в городах с такой традицией адресации устроит лишь тот вариант при котором адрес “первая 17/2” для описываемого дома будет основным и будет вводиться как основной.
Можно еще как вариант
addr:hn=17/2
1addr:street=первая/вторая
Плюс опционально addr2:hn=17 addr2:street=первая + addr3:hn=2 addr3:street=вторая
В таком виде две схемы конфликтуют чуть меньше (благодаря тому что нету street2 который бы при такой записи сбивал бы с толку) но появляется разделитель в записи улицы и не очень понятно что делать с уже введенными street2, ну и старик Оккам будет не рад
В общем выхода нет, давайте удалим к чертям все угловые дома, нет адресов - нет проблем >:)
alt_addr=Вторая 2;Первая 17/2;Вторая 2/17 и есть та самая привычка. поиск и по привычкам можно организовать.
а сколько вообще домов с адресами Первая/вторая/третья/четвёртая х/у/z/ф. для них канешна вариантов написать придётся:mad:
Какими бы они не были, есть возможность такими их и записать, все. Причём компактно, консистентно и с возможностью выбрать потом что обрабатывать, а что нет.
Проблема как обычно - в поддержке этой схемы в редакторах/рендерерах/конвертерах.
Все эти костыли возникают из-за отсутствия списков в качестве атрибутов. Если на API мы влиять не в силах - есть смысл попробовать повлиять на поддержку в редакторах & etc. А как именно потом это в базу разложится - вопрос больше технический.
В стандартах обычно используют слова MAY, SHOULD и MUST для описания частей, для которых допустима частичная реализация. Не вижу проблемы постулировать необходимость поддержки фиксированного набора дополнительных адресов, а именно addr2, addr3, addr4 (хватит всем). Ограниченные средства смогут просто продублировать правила/запросы для адресов ещё 3 раза и успокоиться. Более умный софт сможет перебрать все addrN и для каждого из них все housenumberN.
На самом деле главный вопрос, на мой взгляд звучит так: есть ли у дома основной адрес и ряд дополнительной информации или несколько равноправных адресов.
Я считаю что есть основной, чему отлично соответствует схема с addr{n}:
Одно можно сказать точно: должна быть возможность воспроизвести (отрендерить) адрес в том виде, в котором он известен жителям города. Если на табличке дома и в паспортах жителей стоит адрес “Улица1 17/2”, то по адресу “Улица2 2/17” тот же самый дом вы никогда в жизни не найдете. Т.е. варианты с разбиением дома пополам или добавлением адреса в виде двух точек ущербны изначально.
Если уж не устраивает просто запись через дробь, то должно быть что-то вроде:
addr:street=Улица1
addr:housenumber=17/2
addr:street1=Улица1
addr:housenumber1=17
addr:street2=Улица2
addr:housenumber2=2
В Воронеже крайне редко встречается угловая нумерация, возможно её даже и нет.
Единственный раз когда видел такую нумерацию - был в Сочи. И согласен, что проще ставить addr и addr2 без деления дома (особенно если он сложэной формы и не понятно где что).
Но, если дом простой формы (хрущевки и т.п.) и человек его разделил, то ничего страшного в этом не вижу
значит других аншлагов не бывает (в гугле я тоже не нашел).
Тогда предлагаю следующее:
для записи двойных/тройных/четверных адресов официально (на сколько это возможно в ОСМ) использовать addrN:
начальные теги (addr:street, addr:housenumber) использовать для официального адреса или наиболее употребляемого жителями (если таковой есть), в противном случае любой (можно например по часовой стрелке или просто любой)
для адресов ул. Первая, д. 5/6 записывать: addr:street=Первая улица, addr:housenumber=5/6, addr1:street=Первая улица, addr1:housenumber=5, addr2:street=Вторая улица, addr2:housenumber=6
для адресов ул. Первая, д. 5 и ул. Вторая, д.6: addr:street=Первая улица, addr:housenumber=5, addr1:street=Вторая улица, addr1:housenumber=6
теги addr:streetN и addr:housenumberN не использовать
сомнения:
возможна война правок по определению официального адреса или наиболее употребляемого
не ясно надо ли записывать адрес с обратной дробью ул. Вторая, д. 6/5
Во-первых, совершенно необязательно. Если дом нигде (ни на табличках, ни в адресах) не значится как 5, но не надо ничего придумывать, писать только 5/6. Кроме того:
addr:streetN не использовать, а addr:housenumberN нужен для записи разных написаний номера дома. Во-первых, это всевозможные варианты дробей, во-вторых, разные написание из разных источников. В КЛАДР “3-5 с1Б”, на табличке “3/5 сВ”, и хоть ты повесься. Кроме того, если улица одна, нет смысла дублировать addr:street.
Вы не читаете меня совсем, похоже.
Моё предложение формулируется так:
для записи двойных/тройных/четверных адресов официально (на сколько это возможно в ОСМ) использовать addrN:
начальные теги (addr:street, addr:housenumber) использовать для официального адреса или наиболее употребляемого жителями (если таковой есть), в противном случае любой (можно например по часовой стрелке или просто любой)
при наличии адресов по разным улицам используются тэги addrN
при наличии разных вариантов написания номера дома по одной улице, в соответствующем addr или addrN используются addr:housenumberN
как для адресов по другим улица, там и для альтернативных номеров домов заносить только те, что реально используются
addr:streetN не использовать
Таким образом:
Первая улица, д.5/6
addr:street=Первая улица
addr:housenumber=5/6
Первая улица, д.5/6, Вторая улица, д.6/5
addr:street=Первая улица
addr:housenumber=5/6
addr2:street=Вторая улица
addr2:housenumber=6/5
Первая улица, д.5/6 (и табличка со стороны Первой улица с номером 1), Вторая улица, д.6/5 (и табличка со стороны Второй улицы с номером 6)
addr:street=Первая улица
addr:housenumber=5/6
addr:housenumber2=5
addr2:street=Вторая улица
addr2:housenumber=6/5
addr2:housenumber2=6