Есть иерархическая цепочка для составления адреса. Примерно такая. Если не такая - поправте меня.
addr:country
addr:region
addr:district
addr:city
addr:suburb
addr:street
addr:housenumber/addr:housename
Все непустые элементы склеиваем через запятую - получаем адрес, не забыв сдобрить результат с помощью addr:postcode.
Легальность пустоты какого-то элемента - вопрос совсем другой!
Вот только если такая цепочка неоднозначна, то тогда понадобится указания на то, что надо переставить местами или еще чего.
Мне посоветовали отписаться здесь о том, какая схема адресации у нас в Набережных Челнах и о проблемах с ней связанных. Попробую описать.
Официально в городе 3 района: Автозаводский, Центральный и Комсомольский. Официально практически все здания имеют 2 адреса: по комплексу и по улице. В редких исключениях дома имеют только один или другой адрес. Официальными названиями районов и адресами по улице люди не пользуются.
Неофициально город делится такие основные районы, которые легко видно на карте: Новый город (вся северо-восточная часть города от ул. Нариманова до ул. Яшьлек), ЗЯБ (район между реками Челна и Мелекеска), ГЭС (район между Мелекеской и Камой). Люди пользуются только адресацией по комплексу. На ГЭС и ЗЯБ нумерация комплексов идёт с 1 до 19. В Новом городе опять же нумерация начинается с 1 до ~70. Таким образом многие дома в старом городе (ГЭС и ЗЯБ) имеют такие же адреса по комплексу, как в Новом городе. Для обозначения адреса говорят например вот так: “ГЭС, 6/9”, “ЗЯБ, 18/35”, “Новый город, 7/10”.
Теперь о том, как мы прописываем адреса в OSM:
В addr:housenumber пишем адрес по комплексу, например “23/12”. addr:street оставляем пустым. Все дома Нового города добавляются в отношение “Новый город” (id1206554), дома ЗЯБ в отношение “ЗЯБ” (id1206555), дома ГЭС в отношение “ГЭС” (id1206553).
Для прописывания адреса по улице используем addr2:housenumber и addr2:street.
Кроме очевидных недостатков по валидации, у нас нормально не работает поиск по домам.
Я б переименовал комплексы в «N**-й** комплекс» и добавил бы всем ref=N. Добавил бы всем домам тэги адреса с номером названием или номером комплекса и названием района. Что-то вроде addr:complex=4 + addr:suburb=ЗЯБ.
Я бы посоветовал ничего не менять. Имхо это лучшее что можно придумать. (Хотя правды ради: отношение street это в принципе тоже самое что и addr:street на доме)
Научить валидатор понимать, что адрес вида Набережные Челны ГЭС X/Y - валидный, на самом деле не так уж сложно. Я свой научу. А в чем проблема с поиском по домам? 23/12 - должно искаться.
Upd:
Да, и что такое Набережные Челны, Сидоровка ? Тоже район?
Т.е. если известны границы микрорайона, (рассматриваю любые НП с подобной адресацией) создаём отношение с названием микрорайона, чертим его границы (если известны) и добавляем туда дома?
А как обозначить сами границы микрорайона? addr:suburb?
Где должно искаться? Ни на openstreetmap.org, ни на openstreetmap.ru по запросу “Набережные Челны, Новый город, 23/12” не ищется. Это нормально?
Сидоровка - тоже район. Есть ещё и другие мелкие районы, которые я не упоминал: “Суар”, “БСИ”, “Замелекесье” и др. Кстати, в Сидоровке тоже своеобразная нумерация. Адрес похож на адрес по комплексу, но через дефис и впереди идёт буква С или римская цифра, например С-6, I-1, III-2.
а к субурб это отнести нельзя и можно ли выделить границу между Новый город, ЗЯБ, ГЭС и т.д.? Тогда можно было бы прочертить границу (как другие, граница города, граница районов) и избавится от мега отношений
называй вещи своими именами, бага это когда сайт не открывается, или поиск не работает, или маркер не ставится. А это отсутсвие поддержки, или неподдерживаемая функция/формат
В садоводствах (большинство из которых сейчас больше походят на коттеджные посёлки) часто такая нумерация: есть улицы, но номера домов (участков) идут сразу по всему населённому пункту, например, на 10-ти улицах с оригинальными названиями 1000 домов с номерами от 1 до 1000. Как тут быть?
Если в addr:street указать улицу - не найдётся дом по запросу “посёлок X дом #” (допустим, названия улицы ищущий не знает, и ведь он и не нужен!). А другой - будет тот же дом искать с названием улицы.
Наверное, в таком случае всё же надо “вбивать” это всё по очереди, например addr:street=“название посёлка” и addr:street2=“улица” ?
Вот еще одна живая иллюстрация к тому что языки у людей и программистов разные
Называть можно как угодно, но relation street довольно популярная вещь, конверторами и валидаторами поддерживается, и нехудо бы ее поддержать и в поисковике с человеческим лицом тоже.
Я так понимаю, все странности систем адресации обсуждаются здесь?
Тогда опишу одну особенность Саранска: у нас есть дорога, у которой западная сторона адресуется по улице Володарского (и на ней есть такая табличка), а восточная - по Вокзальной. Как её отмечать? Отношениями?
SarRus вот кстати, а как вы саму улицу называете? Т.е. обясняя дорогу вы скажете проедь по Володарского или по Вокзальной? Самим то домикам понятно как адреса задавать (только что валидаторы ругаться будут) а вот с самой улицей - вопрос.