Mkgmap

Граждане. А как обрабатывать значение у ключа, которое содержит в себе точку с запятой?
Пример:

whitewater=put_in;egress

; - перечисление
т.е whitewater=put_in;egress равноцено одновременному присутствию на объекте и whitewater=put_in и whitewater=egress

Нет. И Overpass это недвусмысленно подтверждает.

; - перечисление
Но оно не приветствуется и не всеми и не везде поддерживается.

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

не мапьте под рендер. автор оверпаса мог вполне решить что не будет поддерживать “;” :slight_smile:
но применения в данном случае такое, что на объекте два тега, как я и написал.

Как раз все строго наоборот: whitewater=put_in;egress находится. А вот whitewater=put_in & whitewater=egress - нет. Что вовсе не удивительно по причине отсутствия такой связки тегов в базе, ибо нет технической возможности иметь на одном объекте два ключа с одинаковым названием.

значит я вас не правильно понял.
потому и ввели перечисление. к примеру в shop очень часто попадаются.

Получилось через применение регулярного выражения.

whitewater ~ 'put_in\p{Punct}egress' [0x6516 resolution 24]

Умные люди подсказали еще боле простое и изящное решение - просто забрать значение ключа в одинарные кавычки. :smiley:

whitewater='put_in;egress' [0x6516 resolution 24] 

Доброго всем дня.
Пытаюсь создать этот файл по описанию, но выдает ошибку что не может скачать bounds.zip и sea.zip.
Подскажите так же если мне нужна объединенная карта Могилёвской области и Смоленской области то мне нужно скачивать карту России и Беларусь или карту всего мира.

Этот инструмент сейчас не работает, есть ли альтернатива?

http://www.mkgmap.org.uk/download/mkgmap.html
Вот здесь смотрите и найдете.
нужно скачивать карту России и Беларусь вырезать свои области, объеденить и обработать.
И вот это прочитай https://rutracker.org/forum/viewtopic.php?p=74969416#74969416
http://www.gps-forum.ru/forum/viewtopic.php?f=3&t=39189

Вот копирнул с рутрекера свой пост.

Описание создания карты.

  1. Для того чтобы сделать горизонтали с нужным шагом и для создания 3D карты надо скачать файлы покрывающие нужную территорию вот от сюда (возможно есть и другие места) http://viewfinderpanoramas.org/Coverage%20map%20viewfinderpanoramas_org3.htm
    Для обработки этих файлов можно использовать https://wiki.openstreetmap.org/wiki/Srtm2Osm или https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/Topographic_maps я использовал https://github.com/FSofTlpz/Hgt2Osm2 и получил файл данных горизонталей в формате osm.pbf (понадобится программа https://wiki.openstreetmap.org/wiki/Osmosis или https://wiki.openstreetmap.org/wiki/Osmconvert)) я пользовался Osmosis
  2. Данные OSM в формате osm.pbf для создания карты можно скачать http://download.geofabrik.de/ или http://gis-lab.info/projects/osm_dump/ сами выбирайте что вам подходит. Я качал http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf это территория бывшего СССР. Обратите внимание на Poly-файлы: http://data.gis-lab.info/osm_dump/poly/ и на http://download.geofabrik.de/ они нужны для вырезания из данных OSM необходимых территорий (на пример: я создав Poly-файл http://www.gps-forum.ru/forum/viewtopic.php?f=3&t=39189 вырезаю из СССР только перечисленные в первом сообщении области и республики).
  3. Соединяем в один файл данных данные OSM и данные горизонталей. Для этого (для соединения и вырезания) используем программы Osmosis или Osmconvert.
  4. Далее приступаем к созданию карты с помощью https://wiki.openstreetmap.org/wiki/Mkgmap я уже описывал процесс создания https://forum.openstreetmap.org/viewtopic.php?id=9249&p=14 здесь немного добавлю.
    Программа Mkgmap сама может создать карту 3D для Garmin.
    Если знаете английский можно писать разработчикам о проблемах http://gis.19327.n8.nabble.com/Mkgmap-Development-f5324443.html
    Примеры стилей для Mkgmap https://wiki.openstreetmap.org/wiki/User:Petrovsk/My_Garmin_map_styles
    Для правильного адресного поиска данные OSM необходимо обрабатывать, понадобится программа https://wiki.openstreetmap.org/wiki/Osmfilter
    Вот и все.
    P.S. Всем удачи в Ваших начинаниях.

Нашел вписал новые ссылки на файлы заработал 1_run_download.bat

заработал 2_run_cut_poly.bat (пока остановился на Смоленской обл.)

установил osmosi заработал 3_run_boundary.bat

установил GPSBabe для 4_run_splitting.bat заработало.

Возникла ошибка при выполнении 5_run_create.bat
Пишет
1 - maptourist - стиль карт с http://maptourist.org/file/category/3-garmin/
2 - stranger - стиль карт с http://velo100.ru/gps/download
3 - My-style - стиль карт Mkgmap default + J-Typ-v161.typ
.
Enter NAME Style - 1
NAME Style is - 1
.
. Cleaning the target directory for Creating.
.
Не удается найти указанный файл.
.
. Create a map using MKGMAP…
.
Error occurred during initialization of VM
Could not reserve enough space for 3145728KB object heap

Подскажите как исправить?
выполняется команда при выборе 1 пункта
:style1
set MYSTYLE=p-map
set MYFID=480
set MYTYP=p-map
goto pusk

Стили скачал в папку styles\p-map
брал из https://wiki.openstreetmap.org/wiki/User:Petrovsk/My_Garmin_map_styles#P-Map

1 - maptourist - стиль карт с https://maptourist.org/osm-garmin/CurrentConfigs/
Остальные не помню так как не пользуюсь

Смотри https://forum.openstreetmap.org/viewtopic.php?id=9249&p=14 разбирайся в батфайлах, редактируй команды, пути
Jawa установлена? jawa.com

Там выделяется 3 гига памяти
java -Xmx3G -jar “%BASEDIR%\mkgmap\mkgmap.jar” ^
Если у тебя столько нет, то пробуй 1 гиг
java -Xmx1024m -jar “%BASEDIR%\mkgmap\mkgmap.jar” ^
Только тут надо не раскоментировать/закоментировать, а поменять местами

Jawa стоит JavaSetup8u191.exe брал https://www.java.com/ru/download/win10.jsp
еще раз проверю пути и перезапущю все bat файлы по очереди завтра отпишусь о результате.
Спасибо за поддержку.

Может у меня где то ошибка до процесса компиляции карты.
запускаю 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

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