валидатор не считает ошибкой незаполненную улицу, как вариант, может выдавать предупреждение или же ошибку, но по настройкам пользователя.
валидатор должен знать в лицо все места, где улица в адресе отсутствует законно, то есть имеет свою базу таких мест.
валидатор берет информацию о законности из ОСМ. Информацию можно занести или в каждый дом (что-то вроде addr:street=no / addr:emptystreet=yes) или куда-нибудь в район/населенный пункт.
Первый вариант вообще ничему не мешает. Тот, кто работает с Зеленоградом - может в любой момент отключить эту проверку, если она мешает.
Второй вариант тоже ничему не мешает. Только добавлять в базу придется через какой-то специальный механизм (веб-интерфейс или письмо автору).
Третий вариант позволяет любому править информацию о допустимости таких адресов в конкретном месте, но будет замусоривать ОСМ.
Первый вариант должен работать по-любому - пункты 2)/3) ведь могут и не сработать где-то из-за отсутствии для них информации.
Для указанных тегов нет случаев, когда они предполагаются, но отсутствуют. В отличии от addr:street.
Причем, если вы обратите внимание на предложенный мной вариант, то я как раз не считаю, что надо говорить есть улица или нет. Я считаю, что надо смотреть к чему привязан дом.
Подниму связанную тему.
Не адресация, но группировка.
Обычно при поиске (в нафигаторах) дома группируются по улицам, но если улицы нет, то не всегда получается удобно и/или общепринято.
Пример: Зеленоградские адреса без улицы, но дома по ним при поиске принято группировать по микрорайонам (которые в адресации никоим образом не участвуют). Иначе получаем длинный список в тысячу с гаком элементов.
Больше того, даже адреса с улицами зачастую люди ожидают увидеть тоже сгруппированными по микрорайонам/районам и т.п., хотя в адрес эти понятия вовсе не входят.
addr:street - необязательный элемент и никто не должен предполагать его наличие. Я это вам, как зеленоградец, точно говорю!
В отечественной адресации вообще ничего заранее предполагать нельзя ! В адресе, как мне кажется, нет ни одного обязательного элемента
Действительно можно, действительно не требуется, но не удобно. Опять же, алгоритм определения какие подстроки брать для группировки надо зашивать в конвертор/навигатор?
Видал я такое, так часть первого микрорайона и десятого сваливают в одну кучу, а другую часть первого и одиннадцатый сваливают в другую и т.п.
При отстутствии “информации о законности” проблема не решается. Поэтому это решение, наверное, будет работать, если второе предложение будет начинаться так: “Информацию нужно занести…”. Будет ли внесена эта информация?..
Однозначно нет!
Это просто способ убрать ругань валидатора, если она кого-то достала в конкретном месте. Больше в этой информации смысла нет.
А вообще-то нефиг мапить под валидатор ! И чего бы ему не жить со своей базой?
Это не чушь, это другая концепция:) Там имелось ввиду, что addr:street - это название того объекта, к которому относится номер. Улицы, квартала, района, НП. Номер же так или иначе должен к чему-то относиться. По-моему, это вполне имеющий право на существование подход к схеме адресации.
Вот очень плохо, что не предназначена. Наличие избыточности, позволяющей находить и исправлять ошибки - благо, а не зло.
А если никакой проблемы нет, то и менять ничего не нужно.
?! Номер относится к зданию/строению/сооружению.
А расширение-размывание смысла addr:street - плохая практика. Соотв. концепция вряд ли имеет право на существование.
Ага, говорим “партия” - подразумеваем “ленин”.
Не надо было тогда использовать слово “улица”.
Да, только это совсем-совсем другая схема. У белорусов такая была: a2, a4, a6 и связи между ними через релейшены.
А в нашей схеме addr:* развёрнуто прописываются элементы, а связи явно не указываются.
Можно сделать умный, но умный будет ошибаться.
А можно сделать достаточно простым, и давать ему четкие указания. Тогда ошибок индексатора не будет. Будут только ошибки пользователей индексатора.
Ну и какой умный индексатор занесет дома по Березовой аллее в микрорайон? А если и занесет, то не в четвертый а во второй, куда они всю жизнь входили?
В любом случае, даже для самого суперумного индексатора надо иметь возможность делать подсказки.
Ибо разделить 5-й микрорайон и микрорайон 5а никакая винда не поможет. Ибо там нет мировой константы 522 - номер первого корпуса микрорайона 5а.
Поскольку для нормального использования (например выгрузки в навигатор с адресным поиском) надо иметь эту информацию внутри ОСМ, имеет смысл придумать а как эту информацию в ОСМ хранить.
Я вот предложил вариант addr:house_by. Для него, разумеется, надо еще придумывать все схемы прочтения (например как читать если есть addr:suburb, при addr:house_by=town), но это тема для обсуждения.
“Считать все валидными, а неполноту проверяем как хотим, например сбоку” - это не выход. Потому что эти докрутки придется таскать с собой по всем возможным применениям адресации.
Scondo, для выгрузок, которым необходима улица, вполне достаточно будет
$street ||= first {defined} ($quarter, $suburb, $city)
И никаких house_by не нужно.
И опять, не надо путать правильный адрес с правильно записанным адресом.
Если в осм внесли адрес “Новосибирск, дом 5”, то он неправильный не потому, что забыли улицу, а потому, что такого адреса не существует.
А проверить реальное существование адреса только по осмовским данным всё равно невозможно.