Конвертер OSM -> MP

А переименование регионов не поломалось?
При запуске osm2mp 1.03-713 выдается:

Invalid rename table key: rename_region at C:/Perl/lib/Getopt/Long.pm line 583

Командная строка такая:

osm2mp.pl --config=cfg-navitel\navitel-ru.cfg --osmbbox --target_lang=ru --defaultcountry=RU --defaultregion=RU-SVE --rename-table=cfg-navitel\rename-region.yml --output=\Work\maps\test.osm\test.mp \Work\maps\test.osm\test.osm

Пофиксил. Но вообще теперь его можно в конфиг прописать.

liosha
Что-то у меня не работает автоматическая привязка населённых пунктов к районам области. Что там конкретно надо указывать?
Вроде и поли-файл обрезки свежий. И --load-settings c:\Perl\site\osm2mp\cfg\addressing-ru.yml указывал.
И вроде даже 9 из 27 районов находит (если я правильно понял сообщения конвертера).

Initialising bounds from file c:\osm\UA-KHR.poly...
  3445 segments

Loading search areas...
  151 cities
  9 districts
  1 restricted areas
  154 settlement areas

А всё равно если --defaultregion не указать, то никаких областей и районов в адресном поиске нет. А если указать, то появляются только те районы, которые прописаны в addr:district на некоторых деревнях.

Раз такое есть, значит, районы он подхватывает.
Сам регион в дефолтном конфиге не прописан, поэтому нужно указать (или прописать в конфиге).

А вот это уже странно. Давай исходный osm и полную командную строку, проверю.

Я догадываюсь, что часть районов (кроме тех, которые не граничат с другими областями) не подхватилась из-за кривой обрезки (в получившемся mp-файле граница области порезана на куски. Часть кусков границы отсутствует).
Но почему тогда для районов с целыми границами не сработала автопривязка?

Вот ( http://sendfile.su/751107 ) тут bat-файлы для организации скачивания, нарезки и конвертации. А также вырезанная осмозисом Харьковская область. И использованный конвертер с доп. файлами. И поли-файл границ области (использовался при нарезке и конвертации).

Скорее всего.

Сработала.
Если в исходнике отфильтровать все теги addr:district, район к адресу всё равно приписывается:

grep -v district UA-KHR.osm | ./osm2mp.pl -tl=uk --load-settings cfg/addressing-ru.yml --default-region=KHR -o khr.mp -

Так, значит, проблема в обрезке? Ну, то есть, если нет замкнутого полигона области (а его в в обрезанном куске нет) - нет привязки к области. Нет замкнутого полигона района - нет привязки к району. Гм. Логично.

Писал уже в соседней теме: запускайте osmosis --bp с ключом completeWays и/или completeRelations
У osmconvert, который кстати работает быстрее osmosis’a, тоже есть такой ключ
У pbfToOsm тоже есть

Если вырезать Харьковскую область из выгрузки UA.osm, то параметр completeRelations потянет за собой куски границы России, всей Украины и соседних с Харьковской областей.
А вот completeWays надо будет попробовать. Но тогда надо, чтобы все дороги, реки, ЛЭП, а также полигоны лесов, рек и др. Были порезаны по границе области. Иначе потянутся куски дорог из соседних областей. Или нет?
И если потом из нарезанных карт областей делать атлас Украины, то получим дублирующиеся дороги.

можно тогда попробовать отдельно отфильтровать boundary-relations с ключом completeRelations, пусть тянет границы соседних областей, в mp-файл они ведь никак не транслируются?
–tf accept-relations admin_level=4,6 --used-way --used-node --bp file=“poly.file” completeRelations
отдельно отфильтровать всё остальное, как сейчас
объединить два полученных файла osmosis’ом
–merge
запустить osm2mp

Если обрезать по точной границе, то completeWays ставить обязательно.

У меня такое ощущение, что если резать по точной границе (completeWays ), то части почему-то все равно вылетают. Видимо осмозис произвольно трактует нахождение точки ровно на границе полигона.

Ну дык самое правильное - резать как на гислабе, с буфером в 10-20 км.

Где бы скрипт надыбать (питон не предлагать) чтобы он делал заданный буфер от *.poly?

Если есть готовая либа, которая это может из перла, то добавить несложно.

С ходу приходит в голову разве что прогнать через postgis.

PS
Хе, а такая даже и есть: Math::Geometry::Planar::Offset :smiley:
Не ахти, конечно, но сойдёт. Можно будет добавить в getbound

А я сейчас сделал обрезку осмозисом с параметром completeWays=yes. Теперь автопривязка к области и районам заработала. Хотя граница области осталась поломанной, и границы районов вроде тоже. Что-то я уже ничего не понимаю :roll_eyes:

И ещё одна противная мелочь: GPSmapEdit ругается на пробел в начале названия на автоматом расставляемые лейблы " (Карьер)“, " АГНКС”, " (гар.)".

Сейчас это можно устранить так

Может, и можно, но, если я правильно понял, если я уберу пробел, то тогда те гаражи, карьеры и заправки, у которых задано имя, будут назваться типа “Лукойл(АГНКС)”, то есть, без пробела между названием и приписочкой в скобках.

Cделай пожалуйста. Очень всем поможет.