Mkgmap

Eugeny_B, спасибо! Получил письмо, но предлагаю продолжить общение тут. Может кто еще подтянется из заинтересованных.
Я так понял, что ваш метод заключается в принудительном назначении РФ всему, что попадает в карту. Мне такой метод не подходит, т.к. одновременно в сборке присутствует территории нескольких разных государств. Так что адресные настройки должны быть с учетом этой специфики.
С автоматизацией у меня проблем нет - все отлажено и работает уже много лет автоматически в ежедневном режиме. Сейчас же просто перехожу на актуальную версию Mkgmap. А для этого нужно полностью переписать все конфиги (их логика несколько изменилась за 8 лет). Много всего уже поменял, многое еще предстоит. Но весь имевшийся функционал уже переехал. Временно и не регулярно новые сборки пока появляются тут:
https://maptourist.org/tmp/
Теперь же хочу побороть адресный поиск. Но никак не вникну в логику этого дела - как происходит присвоение объектам адресной информации. У меня пока половина точек даже не может подхватить admin_level=2 (страну). Вторая половина вообще - кто в лес, кто по дрова. А части точек населенных пунктов, дорог и POI не присваивается никакой адрески. И как это исправить я пока не придумал. Видимо в каких-то случаях данные о границах из сгенерированных заранее bnd-файлов не срабатывают как надо. Пытаюсь разобраться. Может я не понимаю сути механизма location-autofill=bounds? Как и в каком месте должны присваиваться объекту данные о стране, области и прочим почтовом индексе? Начнем с простого. Допустим, есть тестовая карта Псковской области с частью прилегающих территорий Беларуси и Латвии. И на российской территории есть точка с такими тегами внутри одноименного полигона и более ни чем:
place=hamlet
name=какая-то-деревня
Она расположена в границах РФ (admin_level=2), Псковской области (admin_level=4) Но начнем со страны. Для этого в заранее очищенный файл inc/address добавляем строчку:

 mkgmap:country!=* & mkgmap:admin_level2=* { set mkgmap:country='${mkgmap:admin_level2}' } 

Я ее понимаю так, что во все индексируемые объекты должна упасть информация от границы с тегом admin_level=2 из прекомпилированного набора bnd-файлов. Но нет, адресная информация о стране РФ в нашу точку не добавляется. Собственно как и во всё остальное в границах РФ. Запускаем Gpsmapedit и смотрим, чего там получилось. Наблюдаем печальную картину: всем индексируемым объектам за пределами РФ правильно присвоился код страны и название государства (Беларусь BLR, Латвия LVA). Все, что российское значится как COUNTRY ABC.
Добавляем строчку:

 mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country|country-ISO:}' }

Теперь находящаяся рядом деревня с заботливо прописанным country= RU получила в адрес такую информацию. Первая по-прежнему ее не имеет. Но такой способ я не хочу вообще использовать, т.к. вполне вероятны ошибки при заполнении адресных тегов на разных объектах и унификации наверняка не получится. Так что строчку эту убираем. Метод is_in так же для этого не рассматриваем.
Теперь пробуем добавить сведения о области:

mkgmap:country=RUS & mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' } 

Разумеется, ничего не происходит, ибо выше было зафиксировано неработающее присвоение в границах РФ адресной информации о стране. Попробуем без привязки к государственной принадлежности:

 mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' } 

Названия областей прекрасно присваиваются. Но в случае с РФ без привязки к стране.

В связи с этим у меня вопрос: это я как-то не верно размышляю и вообще все не правильно делаю, или в ОСМ какие-то проблемы с границей России?

ЗЫ:
Кстати у меня налажено еженедельное обновление этих файлов с границами при помощи Osmconvert и Osmfilter. Работает заметно быстрее, чем Osmosis. Взято из Вики по Mkgmap. На FreeBSD это происходит примерно так:


OC?=		../osmfilter/osmconvert
OF?=		../osmfilter/osmfilter
MKG?=		/usr/local/bin/java -cp ./mkgmap4107.jar
RM?=		/bin/rm -f --

mkgbnd:
	${RM} local-boundaries.osm.gz
	${OC} local.osm.pbf --out-o5m >local.o5m
	${OF} local.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code="  >local-boundaries.osm
	${RM} local.o5m
	gzip local-boundaries.osm
	${RM} ./boundary/local/*
	${MKG} uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor \
	./local-boundaries.osm.gz ./boundary/local/