С адресацией проблем очень много.
Во-первых, в OSM до сих пор нет общепринятой схемы адресации. Пока что для построения адресной иерархии используется тег is_in, но это совешенно не выход. Какой она должна быть - вопрос пока открыт.
Во-вторых, у гарминов своя собственная схема адресации. Там адресуются не объекты (дома), а участки улиц. Сегменту улицы приписывается, какой диапазон номеров домов находятся справа, какой слева. Получить из одной схемы другую довольно непросто.
Ну и в-третьих, у cgpsmapper-а адресация пока не до конца отлажена, из-за чего постоянно лезут ошибки. Вдобавок последние его версии у меня сейчас вообще не запускаются: комп не поддерживает SSE2, а маппер без них теперь не работает.
Технически не сложно добавить каждому дому имя улицы (ближайшей по расстоянию), района , города и тд.
по крайней мере в СПб и Выборгском районе области.
Но сначала хотелось бы закончить добавлять имена улиц.
Опять же геморрой будет, если делать точно по этой схеме, в работе с рилейшнами - тут опять вложенные рилейшны, плюс каждый рилейшн надо привязывать к какому-нибудь физическому объекту, а то потом ты его больше никогда не достанешь автоматом - только руками. Плюс этой схеме не хватает наглядности - попробуй вспомни, что означают эти a0, a1 и т.д. Надо делать пресеты и дорабатывать жосм, а потом уже обсуждать ее повсеместное использование. Хотя потенциал в ней большой, это без сомнения. Но вот “дуракоустойчивость”…
Я могу эту схему добавить в своего бота cladr2osm, там где кладры присвоились будут созданы и эти релейшены.
И вообще, я не уверен что эта схема для ручного редактирования, лучше это все роботу скармливать.
меня ранее испугало в схеме с релейшенами не это.
сейчас по судя по Id всего на карте около 70 тыр релейшенов
если добавть например РБ+области+районы+наспункты+улицы минска получится ещё тысяч 40
не говоря уже о том что по этой схеме надо создать отдельный релейшен для каждого здания
Кто-нибудь задумывался “как это будет по-русски”?
Я вижу примерно так:
a1 Регион: Москва (7700000000000)
a2 Район: Москва (7700000000000)
a3 Город: Зеленоград город (7700000200000)
a4 Населенный пункт: Алабушево поселок (7700000200700)
a5 Район: Не используется (нет доступного источника информации по России)
a6 Улица: Колхозная (77000002007151200)
sts Статусная часть улицы: улица
hno Номер дома, числовая часть: 5
hns Номер дома, буквенная часть: к2
Один из недостаткой данной схемы - это то, что потребуется многопроходность (скорее всего хватит двух проходов). Но это же вылезет для почти всех других схем адресации. BTW, тут можно “сжульничать” примерно так, как это делает TeX: писать в конце прохода уточненную информацию в файл, а при очередном прогоне предзагружать ее оттуда - тогда программе не понадобится разного поведения при разных проходах, можно будет использовать несколько устаревшую информацию от предыдущего конвертирования… плюс (что может оказаться иногда очень полезно - можно разделять эту информацию между фрагментами карты, если она делается из нескольких кусков).
Кстати можно и модифицировать эту идею - вместо (а скорее в дополнение к) релейшина использовать физический объект (area, way, node) более высокого уровня.
Так не понадобится плодить миллионов отношений (да еще и взаимозависимых) и появится привязка к физическому объекту (и к координатам).
Дуракоустройчивость тем выше, чем проще метод или инструмент. Не зря же АК (Автомат Калашникова) по миру разбежался…
Автоматизировать то можно, но только как автоматизируешь определение номеров домов на карте? Перед этим придется использовать какую то промежуточную схему нумерации, которую потом после робота куда-нибудь девать…
После последней оптимизации он по всей России с учетом полной перепроверки всех улиц за полтора часа пробегает
Кста, Самару еще рисовать и рисовать - смотри на osm.tesoro-shop.ru список ненайденых (несопоставленых) улиц.
ИМХО вложенные рилейшны создают собственную реляционную БД поверх уже
существующей, при том что у нее самой и при более простой структуре много проблем.
Так скоро без валидатора и многопроходного анализа вообще будет ничего не
поправить…
Рисовать то конечно надо, но с уличной сетью у меня все в должно быть норме. Я как раз спросить хотел - почемуто робот не схватил большинство улиц… По какому критерию они сличаются?