Mkgmap

Ага, всё нашлось :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, который зашит внутри.

А как же в моих батфайлах с выбором разных стилей все работает? Значит Ваш Вывод не правильный. Попробуй папку со стилем обозвать по другому и повторить эксперимент. Мне кажется что в путях проблема. И я во внутрь mkgmap.jar не лазил, но все работает.

Посмотри мои батфайлы на предыдущей странице.
Я их создавал в текстовом редакторе в DOS-кодировке 866, тогда на экране русский текст отображается нормально, а не кракозябрами.
В сообщении 326 есть ссылка на набор прог установи ее, потом можно обновит проги. Но будет видно все пути, что и где лежит.