Я для себя написал скриптик: http://kibergus.su/node/44
Он парсит выгруженный osm файл и по релейшенам прописывает Карлсруэ. Соответсвенно я прописываю удобные мне релейшены, а затем автоматически добавляю теги, которые поймут всякие конвертеры.
Неудобство - субъективное понятие. Бесполезность - ещё более субъективное.
Пока я вижу, что карты для Навитела на основе ОСМ работают адекватно в вопросе поиска по адресу на основе релейшна (не исключаю, конечно, что это заслуга добрых людей, занимающихся конвертацией). Поэтому считаю relation:type=street вполне поддерживаемым “усложнением”
Вот когда обнаружишь, что улицу переименовали, а половина домов имеет в тэге addr:street какой-нить бардак или вообще не имеет этого или половины других тэгов - передумаешь.
Зато неподдерживаемость - объективное, а из него остальное и следует. Объясняю:
OSM как база удобна как раз использованием примитивных элементов, а это полигоны и точки с тэгами. Relation’ы нужны только чтобы отметить то, что обычными тэгами принципиально нельзя. При этом они ненаглядны, их неудобно редактировать (а где-то нельзя) и сложно обрабатывать.
Насчет переименований улиц - во-первых, называйте их сразу нормально без сокращений, не надо будет ничего переименовывать. В Москве эта схема вроде победила наконец. Во-вторых, к вашим услугам OSM Inspector, который показывает все дома с ненайденными улицами.
Ни от чего они не спасают, зато добавляют проблем. Очень немного людей будут добавлять дома в эти отношения, а значит всё равно надо смотреть в OSM Inspector. Зато не зная о relation’ах кто-то исправит тэги на домах и помойка поболе получится вплоть до разных улиц в relation и на доме. Большой вопрос, ругнется ли на это inspector, будут ли с этим одинаково работать все клиенты и не выстрелит ли это когда кто-нибудь удалит relation, нечаянно, например. Итого, наличие информации в двух местах не позволяет верить ни одному.
Если актуальные адреса будут в relation’е, более нельзя вытащить нужные дома одним запросом, нельзя даже банально в josm подсветить дом без улицы другим цветом.
Выход - робот, который запихивает дома с addr:street в соответствующие relation’ы и переносит addr:street на члены relation’а для непротиворечивости информации (а заодно херит все исправления улиц, сделанные людьми которым побоку эти ваши отношения), а также показывает список всех домов, не входящих в отношения, чтобы их можно было починить.
А теперь главный вопрос - зачем вся эта сложность, когда достаточно только последнего (статистики по ненайденным домам), и это уже есть в виде как минимум OSM Inspector и кладро-окатовской статистики. KISS, короче.
Неподдерживаемость - не проблема схемы. Карлсруэ тоже сначала никем не поддерживалась, да.
Насчет переименований улиц - во-первых, называйте их сразу нормально без сокращений, не надо будет ничего переименовывать.
Это вы будете сотне леммингов рассказывать. А вот хранить в базе сотни дублей строки “проспект Ленина” - плохо.
Если ты у OSM спросишь addr:street=“Центральная”, то получишь такие улицы во всей нашей стране, а то и в какой-нибудь соседней. Даже если ты будешь запрашивать такое в moscow.osm - найдёшь две улицы. Тебе тоже не хватит одного запроса.
API OSM не предназначено для уменьшения числа запросов для извлечения информации. Не нужно под него подстраиваться из-за разовых операций.
Отнюдь нет. Она сложна в поддерживании текущими инструментами, что действительно серьёзная проблема. Но в остальных отношениях по меньшей мере на уровне улиц она более чем правильна.