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

Если выкачать квадрат, из которого потом можно было бы вырезать например Хабаровский край по границе - у меня гарантированно получается out of memory при дальнейшей обработке (не супер же компъютер :frowning: ).
А при более мелких квадратах запросто может отрезаться кусок города (цепочка квадратиков вдоль Амура от Хабаровска через Комсомольск до Николаевска). Ну следить, конечно, надо…

Понятно, но режьте же по границам районов, у нас многие регионы и страны так и собираются.

Я скачал сегодня osm2mp (https://code.google.com/archive/p/osm2mp/source/default/source). Запустил с параметром --config=c:\Perl\site\osm2mp\cfg-navitel\navitel-ru.cfg
Программа ругается:
Loading configuration…
YAML Error: Stream does not end with newline character
Методом тыка выяснил, что в файл \osm2mp\cfg-navitel\polish-mp\nodes-navitel.yml нужно добавить пустую строчку в конце файла.

И ещё вопрос:
В программе упоминается список типов данных garmin-custom. Я так понял, что это дополнение к стандартному тайпсету Гармина. Где взять его описание?

osm2mp какое-то время назад переехал сюда https://github.com/liosha/osm2mp
кофиги под гармин тут же, рядом https://github.com/liosha/osm2mp-garmin-open

Спасибо. Скачал. Изучаю. Дело в том, что в первом сообщении темы указаны ссылка на google.code. Наверное, надо исправить.
Кстати, а куда делись навителовские конфиги? Раньше были папки с конфигами под навител и “Семь дорог”. А теперь только дефолтные и гарминовские.
Или их теперь здесь брать? https://github.com/dimuzz/osm2navitel/

навител похож на правильный, а про 7 дорог лучше в их в теме спрашивать

Не могу допетрить. Если конвертировать с переводом (скажем target_lang: ru - default_lang: uk) и задействованием --lt-yatr-key, то если попадается надпись на другом языке (скажем Английский) - не переводятся на “ru”? А если нет name:uk=, то берется имя из name= без перевода?

Есть settings-ххх.yml. В нем последовательность (приоритет) тегов. Если тянем без перевода вроде понятно - name, нет такого - следующий по списку. Но name то есть всегда?!
И как эти приоритеты сочетаются в случае с переводом. Задано жестко - вытянуть “ru”, если нет взять “uk” и перевести. А если нет “ru” или нет “uk”, скажем есть только “name”. Что должен делать переводчик?

Что же получается - если на объекте есть name:ru, то оно берется без перевода?! А если на соседнем name:ru нет, то оно пойдет из name:uk через перевод?! Появляется разночтение при наличии в имени “Ё”, перевод даёт только “Е”… Похоже есть проблема переводчика с понимаем “i” (Английское написание как то разнится с Украинским)?

Последнее - переводчик работает только с name=*? Если на объекте (точке) принудительно указан addr:street, то он не переводится или должен переводиться и в моём случае вмешалось пресловутое “i”?
Спасибо.

Когда-то разбирался, но многое уже позабыл.

default_lang определяет то, на каком языке name, если поставить туда какой-нибудь мусор, вроде default_lang=fake, он будет name использовать только в самом крайнем случае, заворачивая в транслит

переводить будет все языки, но что из этого будет потом использовать, и в каком порядке, не могу сказать (но там есть опция с приоритетами)

“перевод дает только Е” - надо полагать, это прикол Яперевода, osm2mp, вроде как, результат не правит

ну и в гарминосборке сделано так (перевод используется, если нет родных тегов)
-tl=ru -dl=uk --lt-yatr-key=@yatr.key --lt-yatr-cache-dir /data/garmin/cache/yatr --lt-priority yatr_uk_ru=2 --textfilter PrepareCP1251

/надеюсь не совсем фигню написал, а то я очень давно переводом не пользовался/

Еще прошу помощи в вопросе отладки mp-postprocess.pl.
Сокращения в целом были отстроены, что то добавил - работает.

Не могу справиться с задачей сокращения такой записи - Label=Князів Острозьких **вулиця **(Шелушкова вулиця)
Первая “вулиця” сокращается и встаёт в конец за текстом в скобках, а вот вторую “вулиця”, ту что в скобках, надо либо сократить тоже, либо вовсе убрать. Не понимаю как эту процедуру следует описать.
Первая сокращается так: [ ‘вул(?:|иця)’ => ‘вул.’ ],
Что бы удалить вторую не цепляя первой, пытаюсь её привязать к скобкам. Но для языка скобка имеет некий смысл. Обработка обрывается. Как удалить одну из двух, а оставшуюся сократить?
Спасибо!

Обычно чувствительные символы префексуют слешем → ‘(’

Буду пробовать. Спасибо!

Привет, друзья
Подскажите, пожалуйста, как сделать Label на нескольких языках.
В osm-файле есть name и name:en.
Попытка создать новую переменную в settings-navitel.yml, например, label1: [ ‘name:en’ ] приводит к ошибке.
Может у кого есть готовый конфиг для мультиязычной карты?

Pashka2017, вам надо чтобы в label попадали названия из языка отличного name (например из name:en) или чтобы name и name:en одновременно в label прописывались?

Marych73, желательно, чтобы name и name:en одновременно в label прописывались или добавить переменную Label1=name:en
В общем-то, интересен любой способ, чтобы сохранить в MP инфо на нескольких языках.

Нет никакой разницы какие тянуть данные для Label - https://forum.openstreetmap.org/viewtopic.php?pid=595927#p595927 - я так думаю.

Благодарю за ответ, но я уже читал это и по совету igitov создал переменную в settings-navitel.yml:
################################

Name selection priority

################################

— taglist

label: [ name, loc_name, brand, operator ]
label1: [ ‘name:en’ ]

Теперь работавший ранее батник, выдаёт ошибку:
YAML Error: Invalid element in map
Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT
LINE: 10
Document: 2
at YAML/Loader.pm line 352.

Если убрать строку “label1: [ ‘name:en’ ]”, то всё работает ОК

Попробуйте варианты, сажем:
oldname: [ ‘name:en’ ]
enname: [ ‘name:en’ ]
Вам же не важно как тег будет обзываться.

P.S. А это единственное что вы внесли в конфиги. Или ещё что то, в другие конфигурационные файлы вносили?

label1:        [ 'name:en' ]

Вообще в этой записи нет ошибки. Странно, что конвертер вылетает.

Да, переменную вы ввели, а где пример её использования? Может проблема не в settings-navitel.yml, а в настройках конкретных mp-типов.

Версия 0.90b иногда дает отрицательные значения в RouteParam при modify_road
Кусок кода:
# routeparams
if ( exists $action->{routeparams} ) {
my @rp = split q{,}, $road{ $objinfo{id} }->{rp};
my @mrp = split q{,}, $action->{routeparams};
for my $p ( @rp ) {
my $mp = shift @mrp;
$p = $mp if $mp =~ /^\d$/;
$p = 1-$p if $mp eq q{~};
$p = $p+$1 if $p < 4 && $mp =~ /^+(\d)$/;
$p = $p-$1 if $p > 0 && $mp =~ /^-(\d)$/;
}
$road{ $objinfo{id} }->{rp} = join q{,}, @rp;
}

Поскольку в perl я не сильно разбираюсь, то правильно ли будет добавить $p = 0 if $p < 0 после всех if ?

Доброго дня!
Подскажите пожалуйста, скомпилированной версии можно в качестве конфига давать .yml?
типа "osm2mp64.exe --config=cfg-my\my.yml
Или я многого хочу?
А то екзешник делает .mp, но не так как надо с дефолтным конфигом, а перловая версия - падает либо ругается на нехватку кучи модулей, которые где взять - хз.