Mkgmap

Гремучая это смесь — стили под гармин. В целом понял, что за подписи, которые должны браться именно из тега name, отвечают строки в файлах стиля (lines, points, polygons и т. д., можно и самому придумывать и добавлять в обработку через include). Как подпись будет отображаться — зависит от настройки внутри TYP (размер шрифта, невидимая надпись, некое присвоенное слово «по умолчанию» и т. д.) Большая часть проблем решилась тупым удалением «set» и «=».
Почитал руководство mkgmap, не смог применить if then else условие (конвертер выдаёт ошибку). Там какие-то «хитрости» со скобками (или чем-то другим). Вообще, легко запороть всё дело, забыв поставить скобку или пробел, или кавычку, или ещё что (конвертер ругается, но не всегда понятно, где копать). Так что желательно иметь вариант «до изменений» (чтобы откатиться).
Тоже скачал «немецкие» TYP-ы, да только они бесполезны без остальных файлов стиля. Откуда их брать? (ведь, вся эта чехарда с типами, правилами отрисовки и проч. строго индивидуальная).
Где-то видел ссылку на Maptourist-а слиль, но потерял.
P. S. Ещё интересно попробовать опцию «использовать значок из другого стиля» (чтобы «доукомплектовать» недостающие)

Не внимательный ты… Я давал ссылку http://www.freizeitkarte-osm.de/garmin/en/development.html а там в самом низу Download.
Скачиваешь архив и в нем 2 стиля найдешь. Для них 6 TYPфайлов и того 12 вариантов.

Точно невнимательный. Маптурист сообщение на 13ой странице под номером 324
И обнови MKGMAP и SPLITTER до крайней версии.

Ага, всё нашлось :slight_smile: Забыл самое главное спросить: есть способ быстрого тестирования результата ковыряний без заливки карты в прибор? (а то слегка напрягает, благо, что файлик меньше 200 Мб)
Файлы, по идее, mkgmap все необходимые создаёт. Но в Basecamp запихнуть их просто так нельзя, вроде бы…

Удивляюсь я твоей невнимательности :smiley:
Сообщение 331 черный квадрат ползунок вниз.
Читаем
“rem Создаем карту gmap (для BaseCamp и MapSource) с помощью MKGMAP”

а дальше
просто скопировать папку “*.gmap” по указанному ниже пути (в зависимости от ОС компьютера):
для WinXP путь C:\Documents and Settings\All Users\Application Data\GARMIN\Maps
для Win7/8/10 путь C:\ProgramData\Garmin\Maps

От жеж :smiley: А у меня оправдалка: много инфы, закопался чутка.
Всё получилось, дас ыст фантастыш!
Странно, что в options.txt про –gmapi сказано «Create a directory in the “gmapi” format required by Mac applications.»
Приятно, что кто-то подскажет, ёлки-палки.
UPD Позже мне подсказали, что можно создать ярлыки (файлы *.lnk) на соотв. папки и закинуть их по указанным выше директориям в завис. от версии Windows, тогда BaseCamp также подхватит эти карты.

Начинаю проводить эксперименты с плагином https://forum.openstreetmap.org/viewtopic.php?id=58978
Может что интересное получится.

В таких случаях принято говорить: «Экий Вы, однако, затейник» :smiley: Sergey Astakhov — в помощь.
С названиями и значками по большей части разобрался, сделал свой вариант stranger-а. Вот не знаю, можно ли как-то прикрутить отображение адресных точек с номерами домов и подъездов с номерами квартир средствами mkgmap.

А как их мапят? Прикручивать думаю надо в поинтах и в имя загонять нужную инфу.

Это, соответственно:
Отдельно стоящая точка или часть линии (addr:housenumber=)+(addr:street=)
Точка на контуре дома (addr:flats=диапазон номеров)+(entrance=staircase/yes)+(ref=номер подъезда)
P. S. Оказалось всё просто, сделал.

Стиль MapTourist файл polygons:

(building=* | bridge=yes & area=yes) { name 'д.${addr:housenumber} (${name}) ${addr:street}' | 'д.${addr:housenumber} ${addr:street}' | 'д.${addr:housenumber}'} [0x13 resolution 24]

На экране видим (если в TYP 0x13 разрешено показывать) д.1 Ленина проспект. У MapTourist в TYP 0x13 стоит “невидимая надпись” и видно только при наведении курсора. У бери из строки “д.” и будет просто 1 Ленина проспект. Это все на зданиях building
Стиль Stranger файл polygons:

building=* { name '${addr:housenumber} (${name}, ${name:full})' | '${addr:housenumber} (${name})' | '${name} (${name:full})' | '${name}' | '${name:full}' | '${addr:housenumber}' } [0x13 resolution 24]

тут номер дома без улицы.
Я сделал так как MapTourist (но без “д.”) в конец строки добавил “продолжить” по ангельски.
и в файл points добавил строку как в полигонах Stranger. Теперь я вижу номера домов, а наведя курсор номер дома и название улицы.
Точка или полигон с номером дома и именем улицы это building
А как называется точка с номером квартир и подъезда. ref ведь тоже в имя добавить можно. Может и addr:flats можно добавить, пробуй.

Но это сработает только на точках, имеющих *building=**, в то время как адресные точки не имеют этого тега (только адреска).

Не понял…

Тоже хотел подобного эффекта добиться (особенно для подъездов). А как получается, что присвоив один и тот же TYP (0x13) по двум разным условиям — подписи (разные!) одновременно и видимые и невидимые? Видимость (шрифт и всё такое) выставляется галкой для TYP, насколько знаю. Но, если TYP один и тот же, то не важно, по какому условию он был присвоен — всё равно его название может быть либо видимым, либо невидимым.
Иными словами, не въехал, как получилось одному и тому же TYP (который 0x13) прикрутить одновременно (невидимые улица+номер) и (видимый только номер)???
Для подъездов сделал так (0x1151f картинку переделал на свой лад):

entrance=staircase | entrance=yes { name '${ref} (${addr:flats})' | '${addr:flats}' | '${ref}' } [0x1151f resolution 24]

А хотел добиться, чтобы всегда были видны только номера ref, а наведя курсор — получить addr:flats.
Для адресных точек сделал пока так (но посмотрю, что получится по твоему варианту):

addr:housenumber=* & addr:street=* & building!=* & entrance!=* { name '${addr:housenumber}' } [0x1161a resolution 24]

0x1161a тоже сам намалевал.
Всё — только для points.

В опциях mkgmap поставь add-pois-to-areas
Points

# Точки созданные из полигонов mkgmap с опцией add-pois-to-areas
# Здания - для отображения номеров домов
(building=* | bridge=yes & area=yes) & mkgmap:area2poi=true { name '${addr:housenumber} (${name})' | '${addr:housenumber}'} [0x6402 resolution 24 continue with_actions default_name 'здание']

# Удалить точки созданные из полигонов mkgmap с опцией add-pois-to-areas
mkgmap:area2poi=true {deletealltags}

То есть автоматически ставить точки только на полигоны зданий, а с других полигонов автоматически поставленные удалить. Если нужны автоматические точки на еще каком нибудь полигоне, впиши эти точки в пустую строку (строки) выше правила Удалить…
Polygons

(building=* | bridge=yes & area=yes) { name '${addr:street} ${addr:housenumber} (${name})' | '${addr:street} ${addr:housenumber}' | '${addr:housenumber}'} [0x13 resolution 24]

Я не мапер и не программист, что такое точка только с адреской? Вход в подъезд даже по моему свой тэг имеет. Ну да имеет, ты же пишешь. А что за адреска такая нее пойму.
0x6402 - 1 прозрачный пиксел с подписью.

Осваиваю mkgmap. Пробую использовать свой стиль. Mkgmap мой стиль видит, но применять не хочет.

Что делал.

Скачал Mkgmap r3991.
В JOSM v.12542 создал линию из пяти точек, назначил ей highway=path и сохранил в Map.osm:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-38989' action='modify' lat='51.74690727846' lon='86.43364897728' />
  <node id='-38990' action='modify' lat='51.74882031029' lon='86.44248953819' />
  <node id='-38991' action='modify' lat='51.74924541747' lon='86.45090094566' />
  <node id='-38992' action='modify' lat='51.75222105571' lon='86.45914069176' />
  <node id='-38993' action='modify' lat='51.75253986247' lon='86.47055617332' />
  <way id='-38988' action='modify'>
    <nd ref='-38989' />
    <nd ref='-38990' />
    <nd ref='-38991' />
    <nd ref='-38992' />
    <nd ref='-38993' />
    <tag k='highway' v='path' />
  </way>
</osm>

Создал минимальный стиль в папке style - файлы version, options и lines.
Файлы version и options взял из examples\styles\default
Файл lines содержит строку:

highway=path [0x13 road_class=0 road_speed=1 level 3]

Создал файл с опциями mkgmap.args:

input-file=Map.osm
style-file=style
check-styles
list-styles
verbose
transparent
family-id=6324
product-id=1

Запустил mkgmap:

java -Xmx256M -jar mkgmap.jar -c mkgmap.args

Сгенерённый файл 63240001.img открыл GPSMapEdit и сохранил в формате .mp
Моя линия в 63240001.mp выглядит так:

[POLYLINE]
Type=0x16
Data0=(51.74691,86.43365),(51.74882,86.44249),(51.74925,86.45090),(51.75221,86.45914),(51.75254,86.47056)
[END]

Я ожидал, что Type будет 0x13. Подскажите, пожалуйста, что я делаю не так?

Скорей всего MkgMap не видит твой стиль, а берет из стиля по умолчанию (default) из файла lines строку

highway=footway|highway=path|highway=steps [0x16 road_class=0 road_speed=0 resolution 23]

И версия 3991 еще я бы сказал экспериментальная, возьми стабильную 3980

style-file=style — тут должен быть путь к папке (а не просто её название) с файлами options, lines, polygons и т. п.
Также необходимо наличие файла TYP, который должен содержать все эти 0x13.

Нет можно и без TYP только тогда отображение будет так как зашито в прошивке прибора или в программе (BaseCamp или MapSource).

Да, но речь шла о своём стиле. А как его создать вслепую? Ведь результат будет виден только через те самые зашитые стили.

В опциях у меня указано check-styles, list-styles и verbose
Судя по выводу в консоли, наличие стиля mkgmap распознаёт:

Found one style in style
finished check-styles
The following styles are available:
style                1: No summary available
Number of MapFailedExceptions: 0
Number of ExitExceptions: 0

Версию 3980 я пробовал - всё то же самое.

Из описания опций: “The directory path must be absolute or relative to the current working directory when mkgmap is invoked.”
По выводу в консоли видно, что как минимум присутствие моего стиля mkgmap понимает. TYP файл необязателен.

Про файлы стиля цитата из руководства: “The only one of these files that is actually required is the version file, as that is
used to recognise the style. At least one of the points, lines or polygons files must be present or else
the resulting maps will be empty.” У меня в папке стиля version, options и lines.

Я пока тестю. Понятно, в реальном применении я буду подключать кастомный typ. А пока результат видно с помощью GPSMapEdit, которым я конверчу получившийся img в mp. И результат такой, что mkgmap папку моего стиля видит, но стиль не применяет.

В общем, залез я в mkgmap.jar и внутри него заменил в папке styles\default файлы lines и options на мои. После этого всё заработало.

Вывод - последние версии mkgmap опознают присутствие кастомного стиля в отдельной папке, указанной в опции style-file, но применяют всё-равно стиль default, который зашит внутри.