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

Мне кажется, это мало кому надо. Какие там преимущества? 26-битная точность координат, псевдо-3D здания и развязки, больше контактной информации у POI - как-то это неуникально. Кому это нужно - юзают что-то другое.

Меня старый гарминовский в целом формат устраивает и возможности cgpsmappera бы устраивали, если б он не сдох. Пусть бы и не развивался, но лишь бы техподдержка была и найденные баги правились.

Да, хотелось бы более гибких настроек стиля карты, как в джосме или маперитиве, но такого в гарминовском формате можно не ждать.

Вот что реально могли бы решить с кастомными стилями - масштабирование полилиний (а может и POI) с изменением зума, задаваемый порядок отрисовки полилиний. А то сейчас дороги понад усе, а остальное - хрен поймёшь как, никакой системы. Чтобы число цветов полилинии и полигона не ограничивалось двумя, а то иногда приходится вместо одного полигона рисовать два, а то и три один поверх другого. Чтобы можно было задавать обводку полигонов, аналогично линиям.

Ну так… Предупреждать же надо было!!!
Всё заработало. Теперь буду пробовать разбираться дальше.


…действительно, “удовольствие то ещё”… Три попытки установки разных версий PERLа - пока получилась работающая. Потом экспериментальный подбор размера скачиваемой области, не приводящий к out of memory, Установка PITHON для реализации докачки недоскачанных мультиполигонов. Собственно разбирательство с устройством конфигов…
Но теперь имею хотя бы общее представление как это работает.

Попутно выяснилось, что наравне с “natural”,“landuse” и “waterway” недокачанным может оказаться и например полигон “place = city” - а это еще хуже: не поддается докачке скриптом, так как не мульти, а без него поломается очень много чего, завязанного на “condition: inside_city” - например, лестница за городом маршрутизируется, а в городе - нет (так и не понял зачем так сделано).
Да и собственно в данном случае докачка , как я понимаю, не помогла бы - это было бы “махать руками после драки”, то есть пристроить полигон туда, где уже все посчитано без его участия.

Как сделано дублирование дорог разобрался, но необходимость в этом понять так и не могу.
Проблема невидимости какого-либо типа прекрасно решается TYP-файлом, тем более что практически всегда он с картой применяется. А иначе даже зданий не видно.
Можно принять это как попытку разрешить заложенное в OSM противоречие между ролью дороги (primary, secondary…) и ее физическим состоянием (шоссе, грунтовка…) - то есть, изображать согласно роли, но маршрутизировать согласно состоянию. Ну не знаю…

Насчет автоматической постройки графа в МапЭдите - соглашаюсь, что это плохая идея. Можно получить множество неожиданностей, и даже не узнать об них.
Вот.

Надо вам было новое сообщение создавать, а не редактировать предыдущее. Я сразу и не увидел.

Недокачанный полигон place - это странно. Если вы вырезаете .osm точно по границам, таких быть вовсе не должно. Если с запасом - ну да и пусть, они всё за пределами целевой территории.

Пеший и вело-роутинг внутри нп убит по двум причинам: 1) из-за кучи тротуаров вдоль дорог плохо джипиэсмапперу (много близких узлов) и вообще из-за обилия пешеходных дорожек и троп пухнет дорожный граф, ограничивая тем самым размеры покрытой одной картой области; 2) велика вероятность, что гармин заведёт в определённых обстоятельствах на тротуар или лестницу автомобиль, даже если на этих отрезках имеются все ограничения. Как я говорю по этому поводу, в гарминовском роутинге есть правило: “если нельзя, но очень хочется, то можно”:slight_smile: В альтернативных сборках эти проблемы не так критичны. Сборка осуществляется программой mkgmap, а целевая аудитория - туристы и велосипедисты.

Про двойные линии дорог - гадать тут нечего, я уже всё подробно описал, повторяться не хочу. Если считаете, что есть решение лучше - предлагайте что-то конкретное, желательно, подкрепляя предложение исправленным кодом.

Если выкачать квадрат, из которого потом можно было бы вырезать например Хабаровский край по границе - у меня гарантированно получается 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’ ]”, то всё работает ОК