Mkgmap

Может у меня где то ошибка до процесса компиляции карты.
запускаю 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/central-fed-district-latest.osm.pbf” –N

rem Скачиваем файлы данных границ и береговых линий
rem брал на странице http://www.mkgmap.org.uk/download/mkgmap.html
“%BASEDIR%\wget\bin\wget.exe” “http://osm.thkukuk.de/data/bounds-latest.zip” -N
“%BASEDIR%\wget\bin\wget.exe” “http://osm.thkukuk.de/data/sea-latest.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

pause

Скачивается в папку \input следующие файлы
central-fed-district-latest.osm.pbf
bounds-latest.zip
sea-latest.zip
cities1000.zip
cities5000.zip
cities15000.zip
RU.zip

Запускаю 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=RU-SMO.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\central-fed-district-latest.osm.pbf ^
–bounding-polygon file=%BASEDIR%\poly%MYPOLY% completeWays=yes ^
–write-pbf file=%BASEDIR%\input\MAP.osm.pbf

нажимаю 1 enter
RU-SMO.poly находится в папке poly
файл брал отсюда http://be.gis-lab.info/data/osm_dump/poly/

получаю \input\MAP.osm.pbf размер 28мб

Запускаю 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

pause
получаю \boundary\local-boundaries.osm.pbf размер файла 3мб
boundary\local\bounds_2450000_1500000.bnd - bounds_2600000_1600000.bnd итого 17 файлов общий вес 9,5 мб

запускаю 4_run_splitting.bat
@echo off
set BASEDIR=%CD%
:: =============================================================
rem Очистка целевых каталогов
echo .
echo . Cleaning the target directory
echo .
rem del /q /s %BASEDIR%\output*.*
rem del /q /s %BASEDIR%\tiles*.*
:: =============================================================
rem Разбиваем файл данных OSM на плитки Splitter-ом.
echo .
echo . Splitting a file OSM data
echo .

java -Xmx1024m -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 ^
–geonames-file=%BASEDIR%\input\cities15000.zip ^
%BASEDIR%\input\MAP.osm.pbf > %BASEDIR%\splitter\logs\splitter.log
pause

“%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
pause

получаю \tiles tiles.gdb tiles.gpx tiles.kml tiles.osm общий вес 5кб
\output 63240003.osm.pbf 63240002.osm.pbf 63240001.osm.pbf areas.list areas.poly template.args densities-out.txt общий вес 27,5 мб

запускаю 5_run_create.bat

@echo off
set BASEDIR=%CD%
:: =============================================================
echo .
echo .
echo Введите номер - соответствующего выбранного стиля
echo создоваемой карты
echo 1 - p-map - стиль карт с https://wiki.openstreetmap.org/wiki/User:Petrovsk/My_Garmin_map_styles#P-Map
echo 2 - Osma11 - стиль карт с https://wiki.openstreetmap.org/wiki/User:Petrovsk/My_Garmin_map_styles#Osma11
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=p-map
set MYFID=433
set MYTYP=p-map
goto pusk

:style2
set MYSTYLE=Osma11
set MYFID=444
set MYTYP=Osma11
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"

java -Xmx1024m -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

**Толи глаз замылился, немогу найти ошибку **

содержимое optionsfile.args
country-name=Российская Федерация
country-abbr=RUS
mapname=63240001
code-page=1251
lower-case
index
split-name-index
bounds=…..\boundary\local
location-autofill=bounds
housenumbers
remove-ovm-work-files

style-file=…....\styles\osma11

name-tag-list=name:ru,name,name:en,int_name
family-id=6324
product-id=1
product-version=1701
series-name=RUS-Test
route
drive-on=right
preserve-element-order
add-pois-to-areas
precomp-sea=…....\work\input\sea-latest.zip
generate-sea=land-tag=natural=land
make-poi-index
link-pois-to-ways

process-destination

process-exits

tdbfile
show-profiles=1

draw-priority=25

transparent

hide-gmapsupp-on-pc

no-poi-address

verbose

Я примерно понял где ошибка.
Запускаю 3_run_boundary.bat
Вот в этой и похожей строке --read-pbf file=%BASEDIR%\input\MAP.osm.pbf outPipe.0=1 ^
Надо указывать другой файл, содержащий или всю Россию или бывший СССР, а так как сейчас границы не создаются.

источник выгрузок ОСМ
local локальное покрытие http://osm.sbin.ru/osm_dump/local.osm.pbf
RU Российская Федерация http://osm.sbin.ru/osm_dump/RU.osm.pbf
RU Российская Федерация http://download.geofabrik.de/russia-latest.osm.pbf
RU Российская Федерация http://osmosis.svimik.com/latest/RU.osm.pbf
RU Российская Федерация http://needgeo.com/data/current/country/RU.pbf

ИЛИ пользоваться готовыми границами bounds-latest.zip
Но тогда содержимое optionsfile.args
bounds=…..\boundary\local
поменять на
bounds=…....\work\input\bounds-latest.zip

Теперь разберемся с путями.
Предположим что все это мы собираем на диске С в папке OSM, тогда у нас получается %BASEDIR%=C:\OSM
И все папки и файлы должны находиться в этой (C:\OSM) папке и все пути в файлах должны идти от нее.
Соответственно
bounds=…....\work\input\bounds-latest.zip должно принять вид
bounds=%BASEDIR%\work\input\bounds-latest.zip
Замени везде по этому принципу.

Если пользоваться готовым файлом границ bounds-latest.zip
То Запускаю 3_run_boundary.bat это делать не надо, этот файл тогда не нужен. Сразу переходи к запускаю 4_run_splitting.bat

Дальше проверь на задвоение (у тебя есть) запускаю 5_run_create.bat и содержимое optionsfile.args
Если в первом –family-id=%MYFID% ^ то во втором family-id=6324 не должно быть
ну и остальное

Во втором пути могут быть только полными C:\OSM\work\input\bounds-latest.zip или относительными …....\work\input\bounds-latest.zip
Пути с переменными %BASEDIR%\work\input\bounds-latest.zip надо перенести в первый , вот так
bounds=%BASEDIR%\work\input\bounds-latest.zip ^
и удалить или закоментировать во втором? вот так.

bounds=…....\work\input\bounds-latest.zip

Проверил все пути, проверил задвоения, все получилось.
Как сделать чтоб на выходе получался один *.img файл?
При запуске java максимально получилось выделить java -Xmx1600m а в наличии 16Gb из за чего это может быть?

java должна быть 64бита, а не 32.
Добавь параметр (а документацию на MKGMAP прочитать слабо?) gmapsupp

Спасибо.
Нашел документацию. https://wiki.openstreetmap.org/wiki/RU:Mkgmap

Когда же Вы (молодое поколение) научитесь читать? Давно все дано.
https://forum.openstreetmap.org/viewtopic.php?id=9249&p=14
Сообщение 326 черное листай в самый низ там ссылки найдешь стили от freizeitkarte
Вдруг не сможешь найти https://github.com/freizeitkarte/fzk-mde-garmin
Еще интересный стиль https://github.com/Jorisbo/Mkgmap-Mapnik-Style-Garmin
Еще интересный стиль https://speichenkarte.de/

Документация сообщение 332 вторая черная (файл optionsfile2.args я уже перевел для вас)
Еще документация в архиве MKGMAP в папке mkgmap\doc
Пример стиля по умолчанию в архиве MKGMAP в папке mkgmap\examples\styles\default
Еще документация http://www.mkgmap.org.uk/doc/index.html http://www.mkgmap.org.uk/doc/options http://www.mkgmap.org.uk/doc/typ-compiler http://www.mkgmap.org.uk/doc/pdf/style-manual.pdf http://www.mkgmap.org.uk/doc/splitter.html
А еще попробовать версию содержащую TYP http://www.mkgmap.org.uk/download/mkgmap-default-typ-r4258.zip

Ну и в каждой программе есть параметр help

Изучай, сравнивай, делай выводы. И все получится.

Спасибо за терпение.
Отличный стиль, очень понравился(название папки стиля нужно поменять для корректной работы) https://github.com/Jorisbo/Mkgmap-Mapnik-Style-Garmin
Пока писал данный текст вышла обнова на этот стиль

Со стилем https://speichenkarte.de/ тоже разобрался typ файлы брал из собранных там же карт

Нашел еще стили https://github.com/solitone/mtbmap
https://github.com/V0174/garminstyly
https://github.com/F462/OpenHikingMap

Установил стили с https://github.com/freizeitkarte/fzk-mde-garmin их там 2 fzk и swisspopo + 5 .typ файлов к каждому стилю
На выходе компиляция идет 10 сек и карта весит 50 кб. и она не работает, была ли у вас такая же проблема.

Внимательнее!!! Молодой человек. 6 TYPфайлов да на 2 стиля итого 12.
А у speichenkarte.de 3 TYPфайла в архиве присутствуют в текстовом формате.

Joris как раз делает TYPфайл который находится в сборке http://www.mkgmap.org.uk/download/mkgmap-default-typ-r4258.zip

Последнее предложение не понял, я уже говорил что я не экстрасенс. Про что это? Если про fzk-mde-garmin то там перл надо устанавливать. Вот https://www.freizeitkarte-osm.de/garmin/en/development.html здесь смотрим. А для своих карт еще и правильно редактировать mt.pl файл, ну и еще свои файлы добавлять, скопируй файл mt.pl поменяй ему расширение на txt и открой текстовым редактором и изучай.

Как поменять название карты которое отображается в Basecamp?
Я так понимаю что название карты дает splitter в файле template.args в разделе “description: RU-Kursk”
В 5_run_create.bat
–description=“%DESCRIPTION%-%MYSTYLE% v. %DATE%” ^
–family-name=“OpenStreetMap + %MYSTYLE%” ^
–series-name=“Russia” ^
–overview-mapname=“OSM_%MYSTYLE%” ^
–area-name=“OSM %DATE%” ^
неработают

Пробовал для splitter параметр --description=“OSM Map” но не помогло - подскажите как решить?

Для splitter не надо, надо для mkgmap

splitter формирует файл \output\template.args в котором прописан “description: RU-Kursk” на основе этой строки mkgmap формирует название карты в Basecamp “RU-Kursk”
как сделать чтоб splitter не прописывал description: “RU-Kursk” ?

За это отвечает ключ --geonames-file=
Документация по Splitter находится вот здесь:
http://www.mkgmap.org.uk/doc/splitter.html

С момента моего перевода кое что поменялось, посмотри оригинальную документацию.
Сплиттер прописывает каждому img файлу, а mkgmap прописывает всему набору. Только там надо правильно указывать description=text после -c template.args, а иначе прописывается от последней карты (квадрата) в наборе.

Спасибо все получилось.

Подскажите можно ли как нибудь ускорить процесс osmosis? (очень долго делает)
Есть ли возможность скачивать прямоугольную зону из OSM, а то скачивание “http://download.geofabrik.de/russia/central-fed-district-latest.osm.pbf” тоже по времени много занимает и трафик.