Можно сделать умный, но умный будет ошибаться.
А можно сделать достаточно простым, и давать ему четкие указания. Тогда ошибок индексатора не будет. Будут только ошибки пользователей индексатора.
Ну и какой умный индексатор занесет дома по Березовой аллее в микрорайон? А если и занесет, то не в четвертый а во второй, куда они всю жизнь входили?
В любом случае, даже для самого суперумного индексатора надо иметь возможность делать подсказки.
Ибо разделить 5-й микрорайон и микрорайон 5а никакая винда не поможет. Ибо там нет мировой константы 522 - номер первого корпуса микрорайона 5а.
Поскольку для нормального использования (например выгрузки в навигатор с адресным поиском) надо иметь эту информацию внутри ОСМ, имеет смысл придумать а как эту информацию в ОСМ хранить.
Я вот предложил вариант addr:house_by. Для него, разумеется, надо еще придумывать все схемы прочтения (например как читать если есть addr:suburb, при addr:house_by=town), но это тема для обсуждения.
“Считать все валидными, а неполноту проверяем как хотим, например сбоку” - это не выход. Потому что эти докрутки придется таскать с собой по всем возможным применениям адресации.
Scondo, для выгрузок, которым необходима улица, вполне достаточно будет
$street ||= first {defined} ($quarter, $suburb, $city)
И никаких house_by не нужно.
И опять, не надо путать правильный адрес с правильно записанным адресом.
Если в осм внесли адрес “Новосибирск, дом 5”, то он неправильный не потому, что забыли улицу, а потому, что такого адреса не существует.
А проверить реальное существование адреса только по осмовским данным всё равно невозможно.
Кстати о индексаторах, уже есть же для них подсказка: sorting_name. Можно и что-то типа grouping_string иметь или, что правильнее, специальный тип replation’ов.
Кстати, подумалось, что используя хитрые sorting_name, можно наладить не только правильные сортировки, но и правильные группировки, если в эту строку включать в виде подстроки название из верхнего уровня иерархии.
“sorting_name”=“5-й микрорайон/корп 521”
“sorting_name”=“микрорайон 5а/корп 522”
Товарищи, а вы уверены, что стоит считать валидатор последней инстанцией? http://addresses.amdmi3.ru/ зело полезная штука, недавно по ней прошелся с пользой для дела и левого берега Н-ска, но мне кажется это всего лишь помошник для пользователя и его задача дать пользователю знать, что там что-то не так.
Я согласен с liosha, пусть в выгрузки попадает первый определённый из улицы/квартала/микрорайона/города. А окончательную правильность обозначений в конкретном месте должен определять человек там живущий, который воспользовался валидатором и заметил, что там всё правильно/исправил и ткнул в валидаторе «отметить как исправленное».
Если же проблема именно в том, что людей раздражает, что валидатор постоянно ругается на правильную по сути адресацию подумайте, можно ли реализовать там рядом с кнопкой «отметить как исправленное» кнопку «считать правильным», при нажатии на которую эти отметки не будут пропадать со временем как исправленные, а будут скрываться специальной галочкой в настройках у пользователя. Так и сайтом можно будет пользоваться для нахождения несоответствий, и базу оно будет набирать того, что «считать привильным», и глаза мозолить не будет, и будет полная уверенность, что местный картограф подтвердил правильность не совсем привычных обозначений.
возможно, что то не так понял, но разве нельзя:
1.
addr:street=улица
addr:housenumber=1
отс. addr:street проверяем в валидаторе addr:city
2.
addr:city=пос. Кольцово
addr:housenumber=1
зачем addr:house_by, addr:no_street
лёша по моему об этом и говорил
А как обозначить адрес типа “Город Балашиха, Шоссе энтузиастов, северная промзона дом 6”? (что-то в этом духе лично видел, буду там еще раз - сфоткаю)
И опять же вопрос насколько распространена адресация без улиц чтобы считать адрес с домом и городом без улицы полным при отсутствии дополнительной информации…
Ага, а улицы не будем подписывать словом улица раз не написано слово улица, значит улица. Я вот давеча кучу таких правок делал - кто-то подписал дома типа addr:street=Советская, addr:street=Ленина но addr:street=проспект Победы Слово street уже есть в теге
Так вот, если бы мы точно знали что бОльшая часть улиц отсутствуют законно, а пропущеных процентов 5-10, я бы действительно сказал что ради этих копеек не стоит докручивать базу.
У нас, простите, ситуация другая.
Дописывание слова “улица” тоже не от хорошей жизни появилось.