Mkgmap

не получается. все тоже самое. В меню “СИСТЕМА”-“О ПРИБОРЕ”-“ПОДРОБНЫЕ КАРТЫ” карта присутствует.

В последних версиях mkgmap появился адресный поиск по номерам домов в выходном файле .img
Только не торопитесь обновляться. Также в последних версиях похерили индекс в кодировках, отличных от CP-1252, и он не работает во всех версиях которые сейчас на сайте разработчиков. Так что опробовать можно, только если собирать карту в транслите с этой кодировкой. Сообщение разработчикам уже послал.
Для включения поиска служит опция --housenumbers. Сам поиск по номерам домов работает несколько необычно: итоговая точка поиска указывет не на дом, а на пространство между домом и улицей, к которой относится дом.

После перехода на mkgmap-r3262 пропали наименования населённых пунктов (точки присутствуют) - не подскажите где копать?

Larry0ua, не могли бы вы актуализировать свой пост #308?
Получилось найти и скачать стиль с github.
Файлы границ - нет.
И .cfg сейчас, видимо, иначе выглядеть должен.
Заранее премного благодарен.

Так, я бы, честно говоря, не заметил, что меня тут упомянули :slight_smile:

cfg как сейчас выглядеть должен, я не уверен, свою сборку я передал на поддержку другим участникам проекта, но вроде как там не было каких-то глобальных изменений.

Без границ картинка показываться будет, не будет работать поиск. Границы можно собрать самостоятельно, либо забрать тут: http://www.mkgmap.org.uk/download/mkgmap.html

Larry0ua, спасибо за ссылку, пригодилось. Картинку получил, но есть нюансы.
Работает поиск по адресам, по имени, по категориям. Маршруты строятся. Но возникла проблема с подписями объектов (точечных и площадных). Не все названия показываются даже при наведении курсора. Например, озёра, населённые пункты, разные категории магазинов, школы, детсады. При этом, те же банки и банкоматы подписываются, кафе и рестораны, улицы - тоже.
В проблемных объектах обычно показывается тип (магазин, школа и т. д.) или просто надпись «безымянный». Всплывает название также у объектов, только что выбранных из результатов поиска.
Сопоставлял, так сказать, с эталоном (оригинальной сборкой, скачанной на сайте чепецк.net) - там всё нормально.
cfg выглядит так:

gmapsupp
description="OSM Belarus 02.09.2015"
country-name="Belarus"
country-abbr="BY"
copyright-message="OpenStreetMap contributors, ODbL"
remove-short-arcs
name-tag-list=name,name:ru,name:be,int_name
make-poi-index
add-pois-to-areas
location-autofill=nearest
index
housenumbers
route
drive-on-right
check-roundabouts
code-page=1251
lower-case
style-file=stranger/stranger
family-id=43
output-dir=g:\Garmin maps
read-config=f:\Install\Navigation\Garmin\mkgmap\template.args

Замечу, что без name-tag-list=name,name:ru,name:be,int_name и lower-case ничего не менялось. Явно проблема со стилем, но что и как там править? Эх, автора бы сюда :expressionless:

Проблема может быть как в стиле, так и в сборке mkgmap. Даже не знаю, чем еще можно помочь.

А кто может подсказать строку запуска mkgmap для создания карты из файлов в польском формате MP?

Здравствуйте! Собрал mp-файл в Global Mapper’е, пытаюсь теперь его загнать в img этой прогой (mkgmap). Стоит xubuntu 16.04. На мои многочисленные попытки попытки прога выдаёт лишь кучу java-error’ов

SEVERE (PolishMapDataSource): /files/documents/ГИС/Garmin/osmexp.mp: error decoding label
java.nio.charset.MalformedInputException: Input length = 1
	at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:816)
	at uk.me.parabola.mkgmap.reader.polish.PolishMapDataSource.recode(PolishMapDataSource.java:586)
	at uk.me.parabola.mkgmap.reader.polish.PolishMapDataSource.isCommonValue(PolishMapDataSource.java:486)
	at uk.me.parabola.mkgmap.reader.polish.PolishMapDataSource.processLine(PolishMapDataSource.java:323)
	at uk.me.parabola.mkgmap.reader.polish.PolishMapDataSource.load(PolishMapDataSource.java:142)
	at uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:154)
	at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:52)
	at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:255)
	at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:251)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

В mp стоит Codepage=1252 по дефолту, пробовал: менять 1251 на 1252 и в команде и в файле, также пробовал методику с закомменчиванием Codepage’а и перекодировкой в utf-8. Не помогло. Что можно сделать, чтобы всё заработало? Так же пробовал загнать в img cgpsmapper’ом, там ошибок не вылетело, но в навигаторе (Garmin ETrex 30) русские названия отображались некорректно (типа Òèï êîìïüþòåðà).

Возьмите здесь образец mp-файла http://gis-lab.info/data/mp/ , откройте в текстовом редакторе и сравните отличие в шапке и в кодировке

Я не просто сравнил, а даже попробовал скомпилировать mp-файл с картой Калмыкии, выложенной на гис-лабе, в img этой прогой, причём пробовал делать это как с помощью mkgmap’а, установленного через репозитории, так и с помощью кроссплатформенной java-версии, в обоих случаях получил уже другую ошибку

Time started: Wed Dec 14 15:13:51 MSK 2016
java.lang.NullPointerException
	at uk.me.parabola.imgfmt.app.net.RoadNetwork.addRestriction(RoadNetwork.java:320)
	at uk.me.parabola.mkgmap.general.MapDetails.addRestriction(MapDetails.java:131)
	at uk.me.parabola.mkgmap.reader.polish.RestrictionHelper.processAndAddRestrictions(RestrictionHelper.java:54)
	at uk.me.parabola.mkgmap.reader.polish.PolishMapDataSource.load(PolishMapDataSource.java:149)
	at uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:154)
	at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:52)
	at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:256)
	at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:252)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Exiting - if you want to carry on regardless, use the --keep-going option
Number of ExitExceptions: 1
Time finished: Wed Dec 14 15:13:54 MSK 2016
Total time taken: 3188ms

Я, признаться, с mkgmap не много возился, но у меня осталось впечатление, что он работает с данными формата OSM , а не с MP

Если у вас есть готовый MP, используйте cgpsmapper (проблема с кодировкой должна решиться конвертацией mp-файла в cp1251, и установкой опции Codepage=1251 в заголовке MP, в секции <img src=" )
Если же вы хотите собрать карту “с нуля”, используйте mkgmap, но данные берите в формате osm/osm.bz2/osm.pbf . Например, тут http://gis-lab.info/projects/osm_dump/"/>

P.S. забудьте про репозитории, они устаревают очень быстро, mkgmap находится в активной разработке

Уважаемые форумчане, я пытаюсь сделать карту для своего прибора Garmin GPSMap 78S с помощью программы MkgMap (версии 3706), используя следующие три стиля:
1 - стиль (default MkgMap) в самой программе
2 - стиль Maptourist (https://github.com/pankdm/mkgmap-maptourist-style) https://forum.openstreetmap.org/viewtopic.php?id=13875
3 - стиль velo100.ru (https://github.com/MaksVasilev/stranger-garmin) https://forum.openstreetmap.org/viewtopic.php?id=15613&p=1

В файл address default стиля я поместил следующие строки:

# Russia
mkgmap:country=RUS & mkgmap:city!=* & (mkgmap:admin_level4='Санкт-Петербург' | mkgmap:admin_level4='Москва') { set mkgmap:city='${mkgmap:admin_level4}' }
mkgmap:country=RUS & mkgmap:city!=* & mkgmap:admin_level8=* { set mkgmap:city='${mkgmap:admin_level8}' }
mkgmap:country=RUS & mkgmap:city!=* & mkgmap:admin_level6=* { set mkgmap:city='${mkgmap:admin_level6}' }

Карты получаются, но вот поиск по адресу работает только на компьютере. На приборе им пользоваться не возможно.
Пробовал искать следующие два адреса:
город Сергиев Посад, улица Бероунская, дом 8
город Осташков, Октябрьская улица, дом 47
Так вот, в программах BaseCamp и MapSource, а также в приборе при использовании 1го и 2го стиля вообще невозможно набрать название города.
При использовании 3го стиля, при наборе города выскакивает выбор района (Осташковского или Сегиево Посадского)
А найти можно только если набирать “городское поселение Осташков” или “городское поселение Сергиев Посад”.
Но такую длинную строку набрать можно только на компьютере, в навигаторе ее набрать не возможно (умещается только “городское поселе”). И потом надо гадать городское или сельское поселение, или городской округ, или волость.

Поделитесь пожалуйста правильным файлом address, или какие строки в нем должны быть, а какие нет. А может еще какой секрет есть, что бы поиск работал.
Поиск нужен только по России.

Eugeny_B, удалось ли добиться успеха? У меня (когда делал попытку самосборки), вроде бы, проблем с поиском не было (собирал Беларусь), а были другие, выше описанные.
К великому сожалению, нигде нет (или мы об этом не знаем) достаточно подробного алгоритма, пользуясь которым любой желающий (в принципе) мог бы в любой момент произвести на свет необходимые карты интересного ему региона (такие же красивые и рабочие, как у сборщиков, выкладывающих для скачивания). В идеале — с несколькими вариантами стилей. Хотя инструменты и данные все имеются.
Поднимал тут отдельную тему по данному вопросу (о децентрализации процесса получения готовых карт, чтобы это мог «каждый дурак» при желании), но она, естественным образом «умерла в зачатке». Так что по-прежнему зависим буквально от нескольких энтузиастов (которые, в свою очередь, зависят ещё от кучи всяких проблем, своих).

LLlypuk82, я наткнулся на эту тему около полутора лет назад. А сейчас (когда Garmin 1,5 года не обновляет карт) она становится актуальной. Какие-то успехи есть и поиск работает иногда лучше чем у velo100 и MapTourist. Но я не программист и не владею английским (ну яндекс или гугл переводчики это мы могем). Мне бы перевод руководства по стилям…размечтался.
Ну про алгоритм, я могу рассказать. И поделиться именно для тех в ком чай заваривают :slight_smile:

  1. Это надо создать структуру папок - чтобы все по полочкам лежало и легко можно было работать. Создаем корневую (основную) папку OSM. В ней создаем шесть папок: _Maps, elevation, poly, styles, tools, work. Если Вы не хотите создавать ТОРО карты то папка содержащая данные высот elevation Вам не нужна. Папка tools содержит шесть папок с программами mkgmap, osmconvert, osmfilter, osmosis, splitter, wget. Все для создания карт больше программ кроме текстового редактора Notepad++ (или подобного) ничего не надо.
  2. Сам алгоритм:
    2.1. Загрузка данных OSM и сопутствующих файлов с помощью программы wget.
    2.2. Вырезание из данных высот необходимой области с помощью программы osmosis.
    2.3. Вырезание из данных OSM этой-же области с помощью программы osmosis.
    2.4. Соединение вырезанных данных высот и OSM с помощью программы osmosis.
    2.5. Создание файлов границ с помощью программ osmconvert, osmfilter, osmosis и mkgmap (я еще не понял, что лучше самому границы создавать или пользоваться готовыми)
    2.6. Разрезание данных OSM нашей области на части с помощью программы splitter.
    2.7. Непосредственно создание карты имя.gmap для MapSource и BaseCamp, а также gmapsupp.img для прибора с помощью программы mkgmap.
    2.8. Забрать готовые карты из папки _Maps.
    Это алгоритм в кратце.
    А вот его исполнение (займет здесь много места), первоначально у меня было так https://www.gpspower.net/creating-maps/295981-mkgmap-tutorials-mkgmap-wiki-links.html увидишь там мое сообщение, в нем файлик OSM.rar
    Сейчас по другому, но понять и изменить что нужно, можно. Я писал себе батники для выполнения программ.
    Не знаю как тут прицепить архив к сообщению, может каждый файл в отдельном сообщении расписать.

Папка styles содержит папки с разными стилями, я их по интернету собирал.

Это второй Вариант (папки с описанными не совпадают)

Создание карты Garmin из данных OSM с помощью Mkgmap
Создание карты Garmin из данных OSM с помощью Mkgmap происходит в 5 этапов:
1.	Загрузка данных OSM и сопутствующих файлов.
2.	Вырезание из данных OSM необходимой области.
3.	Создание файлов границ.
4.	Разрезание данных OSM необходимой области на части.
5.	Непосредственно создание карты.
Некоторые этапы (2, 3, 4) могут быть пропущены или заменены специальными файлами.
Я буду описывать как я создаю карты под системой Windows 7, 10 64-разрядной. Разница с 32-разрядной заключается в количестве выделяемой памяти и соответственно разрядности приложения JAVA.


Загрузка данных OSM и сопутствующих файлов.
Загрузку я осуществляю с помощью программы wget запуская 1_run_download.bat файл.
Ссылку на весь комплект программ я приведу ниже или можете самостоятельно поискать в интернете.
@echo off
set BASEDIR=%CD%
:: =============================================================
echo .
echo .   OSM data download files
echo .
cd %BASEDIR%\input
rem Скачиваем файл данных OSM с http://download.geofabrik.de/index.html
 "%BASEDIR%\wget\bin\wget.exe" "http://download.geofabrik.de/russia-latest.osm.pbf" –N

rem Скачиваем файл данных OSM с http://gis-lab.info/projects/osm_dump/
 "%BASEDIR%\wget\bin\wget.exe" "http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf" –N

rem Скачиваем файлы данных границ и береговых линий
 "%BASEDIR%\wget\bin\wget.exe" "http://osm2.pleiades.uni-wuppertal.de/bounds/latest/bounds.zip" -N
 "%BASEDIR%\wget\bin\wget.exe" "http://osm2.pleiades.uni-wuppertal.de/sea/latest/sea.zip" –N
 
rem Скачиваем файлы данных географических имен (нужен какой-нибудь один, а можно и никакой)
 "%BASEDIR%\wget\bin\wget.exe" "http://download.geonames.org/export/dump/cities1000.zip" -N
 "%BASEDIR%\wget\bin\wget.exe" "http://download.geonames.org/export/dump/cities5000.zip" -N
 "%BASEDIR%\wget\bin\wget.exe" "http://download.geonames.org/export/dump/cities15000.zip" -N
 "%BASEDIR%\wget\bin\wget.exe" "http://download.geonames.org/export/dump/RU.zip" –N

Вы можете закоментировать строки с ненужными файлами или добавить по данному шаблону свои регионы. Я скачиваю всю Россию, а потом вырезаю из нее то что мне надо (два федеральных округа или набор областей). Вы вольны выбирать то что Вам надо зайдя на сайты gis-lab.info или download.geofabrik.de и затем изменив названия файлов в 1_run_download.bat скачивать только то что надо


Вырезание из данных OSM необходимой области.
С помощью программы osmosis запуская файл 2_run_cut_poly.bat вырезаем нужную нам область (территорию).
@echo off
set BASEDIR=%CD%
:: =============================================================
cls
echo .
echo .
echo Введите номер - соответствующей выбранной территории
echo 1 - Северо-Западный Федеральный округ и Тверская область
echo 2 - Северо-Западный и Центральный Федеральные округа
echo 3 - области: Ленинградская, Псковская, Новгородская, Тверская и Карелия
echo 4 - 8 областей - 5 областей + Вологодская, Ярославская и Московская
echo 5 - 11 областей - 8 областей + Костромская, Ивановская и Владимирская
echo 0 - Exit -
echo .
set /p pset="Enter № My-Poly - "
echo My-Poly is - %pset%
if %pset%==1 set MYPOLY=szfo_tve.poly
if %pset%==2 set MYPOLY=szfo_cfo.poly
if %pset%==3 set MYPOLY=5-obl-buf20.poly
if %pset%==4 set MYPOLY=8-obl-buf20.poly
if %pset%==5 set MYPOLY=11-obl-buf20.poly
if %pset%==0 goto EOS
:: =============================================================
rem Вырезаем из файла OSM данных нужную площадь
echo .
echo .   cut out the desired data file OSM area
echo .
 call %BASEDIR%\osmosis\bin\osmosis ^
   --read-pbf file=%BASEDIR%\input\local.osm.pbf ^
   --bounding-polygon file=%BASEDIR%\poly\%MYPOLY% completeWays=yes ^
   --write-pbf file=%BASEDIR%\input\MAP.osm.pbf

Обратите внимание на строку    --read-pbf file=%BASEDIR%\input\local.osm.pbf ^
Здесь вместо local.osm.pbf надо указать то имя файла которое Вам надо. 
Например russia-latest.osm.pbf
Poly файлы можно скачать с http://be.gis-lab.info/data/osm_dump/poly/ или сделать самостоятельно.
Чтобы создать самостоятельно, надо в навигаторе или программах BaseCamp или MapSource создать маршрут по границе территории которая Вам нужна и сохранить в формате GPX. Затем зайти на сайт по ссылке http://www.geocaching-dresden.de/tools/gpx-to-poly/index.php и преобразовать маршрут в poly файл. Маршрут должен быть кольцевым (замкнутым, первая точка, она-же и последняя)


Создание файлов границ.
Я создаю файлы границ с помощью программ osmosis и mkgmap запуская файл 3_run_boundary.bat,
@echo off
 set BASEDIR=%CD%
:: =============================================================
rem Очистка целевых каталогов
echo .
echo .   Cleaning the target directory
echo .
 del /q /s %BASEDIR%\boundary\*.*
:: =============================================================
rem Создаём файлы границ из данных OSM Osmosis.
echo .
echo .   Osmosis create boundary out of file OSM data
echo .

call %BASEDIR%\osmosis\bin\osmosis ^
   --read-pbf file=%BASEDIR%\input\MAP.osm.pbf outPipe.0=1 ^
   --buffer inPipe.0=1 outPipe.0=2 ^
   --tag-filter reject-relations inPipe.0=2 outPipe.0=3 ^
   --tag-filter accept-ways boundary=administrative,postal_code inPipe.0=3 outPipe.0=4 ^
   --used-node inPipe.0=4 outPipe.0=5 ^
   ^
   --read-pbf file=%BASEDIR%\input\MAP.osm.pbf outPipe.0=6 ^
   --buffer inPipe.0=6 outPipe.0=7 ^
   --tag-filter accept-relations boundary=administrative,postal_code inPipe.0=7 outPipe.0=8 ^
   --used-way inPipe.0=8 outPipe.0=9 ^
   --used-node inPipe.0=9 outPipe.0=10 ^
   ^
   --merge inPipe.0=5 inPipe.1=10 outPipe.0=11 ^
   --write-pbf file=%BASEDIR%\boundary\local-boundaries.osm.pbf omitmetadata=true compress=deflate inPipe.0=11 

 java -cp %BASEDIR%\mkgmap\mkgmap.jar ^
     uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor ^
     %BASEDIR%\boundary\local-boundaries.osm.pbf %BASEDIR%\boundary\local

 но можно и воспользоваться уже готовым файлом bounds.zip и переименовав в папке styles файл optionsfile3.args или optionsfile4.args в optionsfile.args


Разрезание данных OSM необходимой области на части.
Бывают довольно большие osm-файлы, mkgmap на них будет ругаться, с сообщением:
There is not enough room in a single garmin map for all the input data
   The .osm file should be split into smaller pieces first.
Такие файлы предварительно надо нарезать splitter-ом
Я это делаю запустив 4_run_splitting.bat.
@echo off
set BASEDIR=%CD%
:: =============================================================
rem Очистка целевых каталогов
echo .
echo .   Cleaning the target directory
echo .
 del /q /s %BASEDIR%\output\*.*
 del /q /s %BASEDIR%\tiles\*.*
:: =============================================================
rem Разбиваем файл данных OSM на плитки Splitter-ом.
echo .
echo .   Splitting a file OSM data
echo .
rem java -Xmx512m -jar %BASEDIR%\splitter\splitter.jar ^
 java -Xmx3G -jar %BASEDIR%\splitter\splitter.jar ^
  --max-nodes=1600000 ^
  --overlap=0 ^
  --output-dir=%BASEDIR%\output ^
  --write-kml=%BASEDIR%\tiles\tiles.kml ^
  --output=pbf ^
  --keep-complete=true ^
  --no-trim ^
  %BASEDIR%\input\MAP.osm.pbf > %BASEDIR%\splitter\logs\splitter.log

 "%PROGRAMFILES(x86)%\GPSBabel\gpsbabel" -i kml -o osm -f %BASEDIR%\tiles\tiles.kml -F %BASEDIR%\tiles\tiles.osm
 "%PROGRAMFILES(x86)%\GPSBabel\gpsbabel" -i kml -o gpx -f %BASEDIR%\tiles\tiles.kml -F %BASEDIR%\tiles\tiles.gpx
 "%PROGRAMFILES(x86)%\GPSBabel\gpsbabel" -i kml -o gdb -f %BASEDIR%\tiles\tiles.kml -F %BASEDIR%\tiles\tiles.gdb

Если Вам не нужны (для исследования) файлы tiles.* то надо удалить последние строки начинающиеся с  "%PROGRAMFILES(x86)%\GPSBabel\gpsbabel"….,
 а также строку   --write-kml=%BASEDIR%\tiles\tiles.kml ^ 
Для использования геоданных надо добавить в параметры следующую строку
--geonames-file=%BASEDIR%\input\cities15000.zip ^
Или cities1000.zip, или cities5000.zip, или RU.zip – кому что нравится

Создание карты.
Запускаем 5_run_create.bat.
@echo off
 set BASEDIR=%CD%
:: =============================================================
echo .
echo .
echo Введите номер - соответствующего выбранного стиля
echo создоваемой карты
echo 1 - maptourist - стиль карт с http://maptourist.org/file/category/3-garmin/
echo 2 - stranger - стиль карт с http://velo100.ru/gps/download
echo 3 - My-style - стиль карт Mkgmap default + J-Typ-v161.typ
echo .
set /p NAME="Enter NAME Style - "
echo NAME Style is - %NAME%
if %NAME%==1 goto style1
if %NAME%==2 goto style2
if %NAME%==3 goto style3

goto EOS

rem set MYSTYLE=      - Имя папки со стилем, имя стиля
rem set MYFID=        - FID карты
rem set MYTYP=        - Имя TYP файла без расширения

:style1
 set MYSTYLE=maptourist
 set MYFID=480
 set MYTYP=M00001e0
goto pusk

:style2
 set MYSTYLE=stranger
 set MYFID=43
 set MYTYP=M000002b
goto pusk

:style3
 set MYSTYLE=My-style
 set MYFID=1000
 set MYTYP=J-Typ-v161
goto pusk


:default
 set MYSTYLE=%MYSTYLE%
 set MYFID=%MYFID%
 set MYTYP=%MYTYP%

:pusk
:: =============================================================
rem Очистка целевых каталогов
echo .
echo .    Cleaning the target directory for Creating.
echo .
 del /q /s %BASEDIR%\_Garmin\%MYSTYLE%.img
 del /q /s %BASEDIR%\_MapSource\%MYSTYLE%\*.*
 rmdir /q %BASEDIR%\_MapSource\%MYSTYLE%\
 mkdir %BASEDIR%\_MapSource\%MYSTYLE%
:: =============================================================
rem Создаем карту с помощью MKGMAP
echo .
echo .    Create a map using MKGMAP...
echo .
 cd "%BASEDIR%\output\"
rem java -Xmx1024m -jar "%BASEDIR%\mkgmap\mkgmap.jar" ^
 java -Xmx3G -jar "%BASEDIR%\mkgmap\mkgmap.jar" ^
 --output-dir=%BASEDIR%\_MapSource\%MYSTYLE% ^
 --description="OSM %MYSTYLE% v. %DATE%" ^
 --family-name="OpenStreetMap + %MYSTYLE%" ^
 --series-name="Russia" ^
 --overview-mapname="OSM_%MYSTYLE%" ^
 --area-name="OSM %DATE%" ^
 --copyright-message="OpenStreetMap CC-BY-SA 2.0, ST-GIS CC-BY-SA 3.0, %MYSTYLE%" ^
 --family-id=%MYFID% ^
 --keep-going ^
 --read-config=%BASEDIR%\styles\optionsfile.args ^
 --style-file=%BASEDIR%\styles\%MYSTYLE% ^
 -c %BASEDIR%\output\template.args %BASEDIR%\styles\%MYSTYLE%\%MYTYP%.typ 
pause
:: =============================================================
rem Копирование карт в выходные каталоги
echo .
echo .    Copying gmapsupp.img into output...
echo .
 cd "%BASEDIR%"
 move /y %BASEDIR%\_MapSource\%MYSTYLE%\gmapsupp.img %BASEDIR%\_Garmin
 rename %BASEDIR%\_Garmin\gmapsupp.img %MYSTYLE%.img

Вы можете изменить опции в файле %BASEDIR%\styles\optionsfile.args


Не забывам забирать готовые карты в папках:
	_Garmin		Для прибора
	_MapSource	Для программ MapSource и BaseCamp

Теперь надо поблагодарить создателей программ, скриптов и всех создавших и поддерживающих проект OpenStreetMap.

Stranger (by Max Vasilev: http://forum.openstreetmap.org/viewtopic.php?id=15613 ) за предоставленный Стиль карт для Garmin сайта velo100.ru https://github.com/MaksVasilev/stranger-garmin 
На счет вопросов распостранения карт, сгенерированных с этим стилем - обязательно консультируйтесь с автором.

Maptourist (by ValentinAK: http://forum.openstreetmap.org/viewtopic.php?id=13875  ) за предоставленный Стиль карт для Garmin сайта http://maptourist.org/file/category/3-garmin 
На счет вопросов распостранения карт, сгенерированных с этим стилем - обязательно консультируйтесь с автором.

Коллектив ( http://forum.openstreetmap.org/viewtopic.php?id=13884 )  за предоставленный Стиль карт для Garmin сайта http://freizeitkarte-osm.de/

Программа mkgmap http://www.mkgmap.org.uk/download/mkgmap.html 
Программа splitter http://www.mkgmap.org.uk/download/splitter.html 
Программа osmosis http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.zip 
Программа wget http://www.gnu.org/software/wget/ 
Проект OSM https://ru.wikipedia.org/wiki/OpenStreetMap 
Русскоязычный форум http://forum.openstreetmap.org/viewforum.php?id=21 


Дальше продолжу позже.

Вот батфайл для вырезания прямоугольных областей из данных OSM (пригодится тем у кого в приборах маленький объем памяти. например Etrex-10)


@echo off

 set BASEDIR=%CD%

:: =============================================================
cls
echo .
echo .   Select name data download files
echo .   Выбор OSM данных для обработки
echo .
echo Введите номер - соответствующей выбранной территории
echo 1 - Данные с Gis-Lab
echo 2 - Данные с Geofabrik
echo 0 - Exit -
echo .
set /p sour="Enter source from - "
echo Enter source is - %sour%
if %sour%==1 set MYFILE=local.osm.pbf
if %sour%==2 set MYFILE=russia-latest.osm.pbf
if %sour%==0 goto EOS


:: =============================================================
cls
echo .
echo .
echo Для вырезания прямоугольной области
echo Введите координаты в формате гг.гггг
echo Северной границы территории
echo Западной границы территории
echo Южной границы территории
echo Восточной границы территории
echo .
set /p top="координаты Северной границы гг.гггг - "
echo Северная граница - %top%
set /p left="координаты Западной границы гг.гггг - "
echo Западная граница - %left%
set /p bottom="координаты Южной границы гг.гггг - "
echo Южная граница - %bottom%
set /p right="координаты Восточной границы гг.гггг - "
echo Восточная граница - %right%

pause
:: =============================================================
rem Вырезаем из файла OSM данных нужную площадь
echo .
echo .   cut out the desired data file OSM area
echo .

 call %BASEDIR%\tools\osmosis\bin\osmosis ^
   --read-pbf file=%BASEDIR%\work\input\%MYFILE% ^
   --bounding-box top=%top% left=%left% bottom=%bottom% right=%right% completeWays=yes ^
   --write-pbf file=%BASEDIR%\work\input\MAP.osm.pbf

Благодарю, буду пробовать/тренироваться, а вдруг прокатит :smiley:

Сейчас я создаю для своих нужд две карты в двух вариантах (ТОРО с высотами и простую, на территорию северо-запада и западной части России). На этом примере можно делать свои карты.

  1. Файл 01_cut_elevation_my_poly.bat запускается только один раз (так как данные высот не меняются) Осторожно! Подредактируйте файл, так как данные высот бывшего СССР с шагом 20м занимают 4Гб, а с шагом 10м - 8Гб.
    Скачиваются данные высот, и из них вырезается территория заданная файлами Russia_NW.poly и Russia_EU.poly одновременно (можно вместо них указать свои, добавить еще *.poly с изменением параметра --tee 2 ^ или убавить до одного и удалить этот параметр.
    Так же можно удалить одну из секций вырезания площади из данных высот с шагом 10 или 20 метров.

@echo off

 set START=%TIME%
 set BASEDIR=%CD%

 set WGET="%BASEDIR%"\tools\wget\bin\wget.exe
 set OSMCONVERT="%BASEDIR%"\tools\osmconvert\osmconvert64
 set OSMFILTER="%BASEDIR%"\tools\osmfilter\osmfilter
 set OSMOSIS="%BASEDIR%"\tools\osmosis\bin\osmosis
 set MKGMAP="%BASEDIR%"\tools\mkgmap\mkgmap.jar
 set SPLITTER="%BASEDIR%"\tools\splitter\splitter.jar
 set GPSBABEL="%PROGRAMFILES(x86)%"\GPSBabel\gpsbabel

:: =============================================================
rem Скачиваем файл данных OSM с http://develop.freizeitkarte-osm.de/
echo =============================================================
echo .
echo .   OSM data download files
echo .
echo . Скачиваем файл данных OSM с http://develop.freizeitkarte-osm.de/
echo .
 cd %BASEDIR%\elevation
 %WGET% -O ele_20_USSR.osm.pbf "http://develop.freizeitkarte-osm.de/ele_20_100_500/Hoehendaten_Freizeitkarte_USSR.osm.pbf"
 %WGET% -O ele_10_USSR.osm.pbf "http://develop.freizeitkarte-osm.de/ele_10_100_200/Hoehendaten_Freizeitkarte_USSR.osm.pbf"

:: =============================================================
rem Вырезаем из файла OSM данных нужную площадь
echo =============================================================
echo .
echo .   cut out the desired data file OSM area
echo .
echo . Вырезаем из файла OSM данных нужную площадь
echo .
 call %OSMOSIS% ^
   --read-pbf file=ele_10_USSR.osm.pbf ^
   --tee 2 ^
   --bounding-polygon file=..\poly\Russia_NW.poly completeWays=yes ^
   --write-pbf file=ele_10_Russia_NW.osm.pbf omitmetadata=true ^
   --bounding-polygon file=..\poly\Russia_EU.poly completeWays=yes ^
   --write-pbf file=ele_10_Russia_EU.osm.pbf omitmetadata=true


:: =============================================================
rem Вырезаем из файла OSM данных нужную площадь
echo =============================================================
echo .
echo .   cut out the desired data file OSM area
echo .
echo . Вырезаем из файла OSM данных нужную площадь
echo .
 call %OSMOSIS% ^
   --read-pbf file=ele_20_USSR.osm.pbf ^
   --tee 2 ^
   --bounding-polygon file=..\poly\Russia_NW.poly completeWays=yes ^
   --write-pbf file=ele_20_Russia_NW.osm.pbf omitmetadata=true ^
   --bounding-polygon file=..\poly\Russia_EU.poly completeWays=yes ^
   --write-pbf file=ele_20_Russia_EU.osm.pbf omitmetadata=true

echo Start:%START%, Ende:%TIME%
pause

  1. Скажем так, раз в неделю запускаем файл 02__download_osm_cut_All_poly_join_ele.bat Который скачивает свежие данные OSM (по этому можно запускать сколько хочешь, качает только обновленные файлы) Создает границы подменяя админ-левел для улучшения поиска, вырезает из данных нужную область и соединяет данные OSM с данными высот (если высоты не нужны, удалить последнюю секцию)

@echo off

 set START=%TIME%
 set BASEDIR=%CD%

 set WGET="%BASEDIR%"\tools\wget\bin\wget.exe
 set OSMCONVERT="%BASEDIR%"\tools\osmconvert\osmconvert64
 set OSMFILTER="%BASEDIR%"\tools\osmfilter\osmfilter
 set OSMOSIS="%BASEDIR%"\tools\osmosis\bin\osmosis
 set MKGMAP="%BASEDIR%"\tools\mkgmap\mkgmap.jar
 set SPLITTER="%BASEDIR%"\tools\splitter\splitter.jar
 set GPSBABEL="%PROGRAMFILES(x86)%"\GPSBabel\gpsbabel

:: =============================================================
rem cls
echo .
echo .
echo Введите номер - соответствующий шагу выбранных высот
echo 1 - ele_10_100_200
echo 2 - ele_20_100_500
echo 0 - Exit -
echo .
set /p hset="Enter № My-Ele - "
if %hset%==1 set MYELE=ele_10
if %hset%==2 set MYELE=ele_20
if %hset%==0 goto EOS
echo My-Ele is - %MYELE%

:: =============================================================

:: =============================================================
rem Скачиваем файл данных OSM с http://gis-lab.info/projects/osm_dump/
echo =============================================================
echo .
echo .   OSM data download files
echo .
echo . Скачиваем файл данных OSM с http://gis-lab.info/projects/osm_dump/
echo .
 cd "%BASEDIR%\work\input"
 %WGET% "http://osm2.pleiades.uni-wuppertal.de/bounds/latest/bounds.zip" -N
 %WGET% "http://osm2.pleiades.uni-wuppertal.de/sea/latest/sea.zip" -N
 %WGET% "http://download.geonames.org/export/dump/cities1000.zip" -N
rem %WGET% "http://download.geonames.org/export/dump/cities5000.zip" -N
rem %WGET% "http://download.geonames.org/export/dump/cities15000.zip" -N
 %WGET% "http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf" -N


:: =============================================================
rem Очистка целевых каталогов
echo .
echo .   Cleaning the target directory
echo .
 del /q /s "%BASEDIR%\work\boundary\*.*"

:: =============================================================
rem Создаём файлы границ из данных OSM Osmosis.
echo .
echo .   Osmosis create boundary out of file OSM data
echo .
 cd "%BASEDIR%\work\input"
 %OSMCONVERT% local.osm.pbf --out-o5m >..\output\USSR.o5m
 cd "%BASEDIR%\work\output"
 %OSMFILTER% USSR.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code= place=" --out-o5m >ru-boundaries.o5m
 %OSMCONVERT% ru-boundaries.o5m --out-pbf -o=ru-boundaries.pbf

rem TODO: --tee instead of reading twice
rem Задачи: --tee вместо того, чтобы читать дважды
call %OSMOSIS% ^
 --read-pbf file=ru-boundaries.pbf outPipe.0=data1 ^
 --read-pbf file=ru-boundaries.pbf outPipe.0=data2 ^
 --tag-transform file=..\..\tools\transform_places.xml inPipe.0=data1 outPipe.0=5 ^
 --tag-filter accept-relations boundary=administrative,postal_code inPipe.0=5 outPipe.0=6 ^
 --used-way inPipe.0=6 outPipe.0=7 ^
 --tag-transform file=..\..\tools\transform_places.xml inPipe.0=data2 outPipe.0=8.1 ^
 --tag-filter reject-relations inPipe.0=8.1 outPipe.0=8 ^
 --tag-filter accept-ways boundary=administrative,postal_code inPipe.0=8 outPipe.0=9 ^
 --used-node inPipe.0=9 outPipe.0=10 ^
 --used-node inPipe.0=7 outPipe.0=11 ^
 --merge inPipe.0=10 inPipe.1=11 outPipe.0=12 ^
 --write-pbf file=ru-boundaries.osm.pbf omitmetadata=false compress=deflate inPipe.0=12 

echo .
echo Making bounds with mkgmap...
echo .
 java -cp %MKGMAP% ^
     uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor ^
     ru-boundaries.osm.pbf ..\boundary
 del /q /s USSR.o5m
 del /q /s ru-boundaries.*


:: =============================================================
rem Добавляет поддельный тег admin_level для всех полигонов place Osmosis.
echo .
echo .   Osmosis 
echo .
echo . Adds fake admin_level tag for all place polygons.
echo . This is needed for better search generation after creating borders with mkgmap
echo .
echo . Добавляет поддельный тег admin_level для всех полигонов place.
echo . Это необходимо для лучшего поиска после создания границ с помощью mkgmap
echo .
 cd "%BASEDIR%\work\input"
call %OSMOSIS% ^
 --read-pbf file=local.osm.pbf  ^
 --tag-transform file=..\..\tools\transform_places.xml ^
 --write-pbf file=..\output\USSR.osm.pbf
rem --write-pbf file=..\output\USSR.pbf omitmetadata=true
rem --write-pbf file=..\output\USSR.pbf omitmetadata=false compress=deflate 


:: =============================================================
rem Вырезаем из файла OSM данных нужную площадь
echo =============================================================
echo .
echo .   cut out the desired data file OSM area
echo .
echo . Вырезаем из файла OSM данных нужную площадь
echo .
 cd "%BASEDIR%\work\output"
 call %OSMOSIS% ^
   --read-pbf file=USSR.osm.pbf ^
   --tee 2 ^
   --bounding-polygon file=..\..\poly\Russia_NW.poly completeWays=yes ^
   --write-pbf file=Russia_NW.osm.pbf omitmetadata=true ^
   --bounding-polygon file=..\..\poly\Russia_EU.poly completeWays=yes ^
   --write-pbf file=Russia_EU.osm.pbf omitmetadata=true


:: =============================================================
rem Joining map and elevation data ...
rem Cоединить данные OSM и данные рельефа
echo =============================================================
echo .
echo .   join OSM and elevation data
echo .
echo . Cоединить данные OSM и данные рельефа
echo .
 call %OSMOSIS% ^
   --read-pbf file=Russia_NW.osm.pbf ^
   --read-pbf file=..\..\elevation\%MYELE%_Russia_NW.osm.pbf ^
   --merge ^
   --write-pbf file=Topo_Ru_NW.osm.pbf omitmetadata=true

 call %OSMOSIS% ^
   --read-pbf file=Russia_EU.osm.pbf ^
   --read-pbf file=..\..\elevation\%MYELE%_Russia_EU.osm.pbf ^
   --merge ^
   --write-pbf file=Topo_Ru_EU.osm.pbf omitmetadata=true


echo .
echo .
echo Start:%START%, Ende:%TIME%
pause