dimuzz
3201
А переименование регионов не поломалось?
При запуске 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
(liosha)
3202
Пофиксил. Но вообще теперь его можно в конфиг прописать.
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 на некоторых деревнях.
liosha
(liosha)
3204
Раз такое есть, значит, районы он подхватывает.
Сам регион в дефолтном конфиге не прописан, поэтому нужно указать (или прописать в конфиге).
А вот это уже странно. Давай исходный osm и полную командную строку, проверю.
Я догадываюсь, что часть районов (кроме тех, которые не граничат с другими областями) не подхватилась из-за кривой обрезки (в получившемся mp-файле граница области порезана на куски. Часть кусков границы отсутствует).
Но почему тогда для районов с целыми границами не сработала автопривязка?
Вот ( http://sendfile.su/751107 ) тут bat-файлы для организации скачивания, нарезки и конвертации. А также вырезанная осмозисом Харьковская область. И использованный конвертер с доп. файлами. И поли-файл границ области (использовался при нарезке и конвертации).
liosha
(liosha)
3206
Скорее всего.
Сработала.
Если в исходнике отфильтровать все теги addr:district, район к адресу всё равно приписывается:
grep -v district UA-KHR.osm | ./osm2mp.pl -tl=uk --load-settings cfg/addressing-ru.yml --default-region=KHR -o khr.mp -
Так, значит, проблема в обрезке? Ну, то есть, если нет замкнутого полигона области (а его в в обрезанном куске нет) - нет привязки к области. Нет замкнутого полигона района - нет привязки к району. Гм. Логично.
dudka
3208
Писал уже в соседней теме: запускайте osmosis --bp с ключом completeWays и/или completeRelations
У osmconvert, который кстати работает быстрее osmosis’a, тоже есть такой ключ
У pbfToOsm тоже есть
Если вырезать Харьковскую область из выгрузки UA.osm, то параметр completeRelations потянет за собой куски границы России, всей Украины и соседних с Харьковской областей.
А вот completeWays надо будет попробовать. Но тогда надо, чтобы все дороги, реки, ЛЭП, а также полигоны лесов, рек и др. Были порезаны по границе области. Иначе потянутся куски дорог из соседних областей. Или нет?
И если потом из нарезанных карт областей делать атлас Украины, то получим дублирующиеся дороги.
dudka
3210
можно тогда попробовать отдельно отфильтровать boundary-relations с ключом completeRelations, пусть тянет границы соседних областей, в mp-файл они ведь никак не транслируются?
–tf accept-relations admin_level=4,6 --used-way --used-node --bp file=“poly.file” completeRelations
отдельно отфильтровать всё остальное, как сейчас
объединить два полученных файла osmosis’ом
–merge
запустить osm2mp
liosha
(liosha)
3211
Если обрезать по точной границе, то completeWays ставить обязательно.
Zkir
(Kirill Bon )
3212
У меня такое ощущение, что если резать по точной границе (completeWays ), то части почему-то все равно вылетают. Видимо осмозис произвольно трактует нахождение точки ровно на границе полигона.
liosha
(liosha)
3213
Ну дык самое правильное - резать как на гислабе, с буфером в 10-20 км.
Zkir
(Kirill Bon )
3214
Где бы скрипт надыбать (питон не предлагать) чтобы он делал заданный буфер от *.poly?
liosha
(liosha)
3215
Если есть готовая либа, которая это может из перла, то добавить несложно.
С ходу приходит в голову разве что прогнать через postgis.
PS
Хе, а такая даже и есть: Math::Geometry::Planar::Offset 
Не ахти, конечно, но сойдёт. Можно будет добавить в getbound
А я сейчас сделал обрезку осмозисом с параметром completeWays=yes. Теперь автопривязка к области и районам заработала. Хотя граница области осталась поломанной, и границы районов вроде тоже. Что-то я уже ничего не понимаю 
И ещё одна противная мелочь: GPSmapEdit ругается на пробел в начале названия на автоматом расставляемые лейблы " (Карьер)“, " АГНКС”, " (гар.)".
igitov
3218
Сейчас это можно устранить так
Может, и можно, но, если я правильно понял, если я уберу пробел, то тогда те гаражи, карьеры и заправки, у которых задано имя, будут назваться типа “Лукойл(АГНКС)”, то есть, без пробела между названием и приписочкой в скобках.
Zkir
(Kirill Bon )
3220
Cделай пожалуйста. Очень всем поможет.