Карты OSM для Garmin (osm2mp+cgpsmapper)

Вот установка автоматом для твоих


@Echo off
:: =============================================================
 Set BASEDIR=%CD%
 Set WORK=%BASEDIR%\Work
   Mkdir "%WORK%\input" 
   Cd "%WORK%\input"

:: =============================================================
:: Секция - Обработка карт для BaseCamp или MapSource в формате *.gmapi

:: =============================================================
Rem Скачиваем архив с картой OSM для BaseCamp или MapSource в формате *.gmapi
Echo .   Download OSM_MapTourist-gmapi-RU.zip file
   wget "https://maptourist.org/osm-garmin/OSM-MapTourist-gmapi-RU.zip" -N
:: -----------------------------------
Rem Извлекаем файлы карт OSM из архива
Echo .   Extract OSM data files from OSM_MapTourist-gmapi-RU.zip
   Mkdir "%WORK%\output" 
   "%WORK%\7-Zip\7z.exe" x OSM-MapTourist-gmapi-RU.zip -o"%WORK%\output" -y -r
:: -----------------------------------
Rem Устанавливаем карты OSM 
   Rmdir /q /s "%ALLUSERSPROFILE%\Garmin\Maps\OSM_MapTourist-RU.gmap"
   Mkdir "%ALLUSERSPROFILE%\Garmin\Maps\OSM_MapTourist-RU.gmap"
   set "name_f=OSM-2018.typ"
   for /f "delims=" %%a in ('dir /a-d/b/s "%WORK%\output\%name_f%"') do xCopy /e /y "%%~dpa"*.* "%ALLUSERSPROFILE%\Garmin\Maps\OSM_MapTourist-RU.gmap"
:: -----------------------------------
Rem Заменяем файл TYP на свой 
   Copy /y "%WORK%\OSM-2018.typ" "%ALLUSERSPROFILE%\Garmin\Maps\OSM_MapTourist-RU.gmap"
:: -----------------------------------
Rem Удаляем временную папку 
   Rmdir /q /s "%WORK%\output" 

:: =============================================================
Rem Удаляем TileCache файлы
Echo .   Clear TileCache files
   Del /q /s %LOCALAPPDATA%\Garmin\BaseCamp\TileCache\*.*
   Del /q /s %LOCALAPPDATA%\Garmin\MapInstall\TileCache\*.*
   Del /q /s %LOCALAPPDATA%\Garmin\HomePort\TileCache\*.*
   Del /q /s %APPDATA%\Garmin\MapSource\TileCache\*.*


А вот пример автоустановки центрального фед.округа для GisLab


@Echo off
:: =============================================================
 Set BASEDIR=%CD%
 Set WORK=%BASEDIR%\Work
   Mkdir "%WORK%\input" 
   Cd "%WORK%\input"

:: =============================================================
:: Секция - Обработка карт для BaseCamp или MapSource в формате *.gmapi

:: =============================================================
Rem Скачиваем архив с картой OSM для BaseCamp или MapSource в формате *.gmapi
Echo .   Download ru.cfo.gmapi.7z file
    wget "http://garmin.gis-lab.info/files/ru.cfo.gmapi.7z" -N
:: -----------------------------------
Rem Извлекаем файлы карт OSM из архива
Echo .   Extract OSM data files from ru.cfo.gmapi.7z
   Mkdir "%WORK%\output" 
  "%WORK%\7-Zip\7z.exe" x ru.cfo.gmapi.7z -o"%WORK%\output" -y -r
:: -----------------------------------
Rem Устанавливаем карты OSM 
   Rmdir /q /s "%ALLUSERSPROFILE%\Garmin\Maps\FAMILY_501.gmap"
   Mkdir "%ALLUSERSPROFILE%\Garmin\Maps\FAMILY_501.gmap"
   set "name_f=osm_501.typ"
   for /f "delims=" %%a in ('dir /a-d/b/s "%WORK%\output\%name_f%"') do xCopy /e /y "%%~dpa"*.* "%ALLUSERSPROFILE%\Garmin\Maps\FAMILY_501.gmap"
:: -----------------------------------
Rem Заменяем файл TYP на свой 
  Rem Copy /y "%WORK%\osm_501.typ" "%ALLUSERSPROFILE%\Garmin\Maps\FAMILY_501.gmap"
:: -----------------------------------
Rem Удаляем временную папку 
   Rmdir /q /s "%WORK%\output" 

:: =============================================================
Rem Удаляем TileCache файлы
Echo .   Clear TileCache files
   Del /q /s %LOCALAPPDATA%\Garmin\BaseCamp\TileCache\*.*
   Del /q /s %LOCALAPPDATA%\Garmin\MapInstall\TileCache\*.*
   Del /q /s %LOCALAPPDATA%\Garmin\HomePort\TileCache\*.*
   Del /q /s %APPDATA%\Garmin\MapSource\TileCache\*.*

:: =============================================================
Rem Удаляем временную папку 
   Cd "%WORK%"
   Rmdir /q /s "%WORK%\input" 

Echo =============================================================
Echo End
Echo =============================================================
Rem Pause


Всем спасибо. Получилось

Подскажите есть ли смысл собирать карты по областям, возможно есть смысл собирать карты только по федеральным округам и “Вся Россия”, тогда актуальность карты возрастет.
Или хотя бы обьединить Москву с МО и обьединить Санкт-Петербург с Ленинградской областью.

Принцип сборки немного другой: федеральный округ не собирается с нуля из сырых данных, а берутся уже готовые карты областей, и для них строится общий индекс. Т.е. по времени выигрыша большого не будет. А отдельные области вполне востребованы.

Чем плох вариант взять федеральный округ целиком и при заливке в прибор выбрать нужные регионы?

Неплохой вариант.

Также обнаружил проблему разрывов отбражения крупных дорог.
Скрин пример.

Это связано с тем, что на уровень отображения дороги влияет не только её статус, но и проходит ли она по населенному пункту.
Скорее всего, это было сделано специально. Но я уже не помню зачем (полагаю, если повысить уровень отображения в городе, в центре многих городов мы получим кашу вместо дорожной сетки).

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

тот же участок на том же масштабе и детализации с “правильным отображение крупных дорог”

Если рисовать городские дороги на том же уровне, что и загородные, получим кашу и тормоза. Не лучший вариант.

Попробуем по-другому. Я добавил еще одно условие, и теперь дороги внутри города будут отрисовываться как и загородные, если у них есть идентификационный номер (тег ref)

P.S. Вот пробничек https://yadi.sk/d/AXa-PKSAuZvp-A
P.P.S igitov, а у тебя есть идеи, как лучше решить эту проблему? ref выглядит слегка спорным вариантом.

Отличный пробник.

Мне думается, полностью эту проблему не решить, не применяя костылей. Всё равно с чем-то придётся мириться.

ref, я так понял, спорный потому, что 1) не всякая сквозная дорога его имеет, 2) возможно, его могут иметь какие-то нецелевые для нас дороги и улицы?

Какие идеи у меня. Я бы ввёл, например, новый тег для транзитных дорог внутри НП.

Ковырянием конфигов ничего принципиально нового не добиться.

Можно порассуждать, а вот если бы osm2mp научился проверять улицы на наличие примыкания к дорогам того же класса… При условии, что это неветвящаяся последовательность в пределах одного класса. Результат не был бы на 100% удовлетворительным, но я б поэкспериментировал.

Просто надо type ставить независимо от inside_city, а вот уже routeparams дифференцировать.
Тогда отображение будет одинаковым в городе/не городе и будет понятно, каким маршрутом лучше проезжать через НП.

Проверять включение дороги в региональный/международный маршрут?

Новые станции Солнцевской линии московского метро уже 100 лет как открылись, но на картах выходы до сих пор упорно обозначаются как Безымянные. Обидно, Вань…

Да вообще. Позорище. Столица нашей Родины, один из крупнейших городов, а как метро правильно нанести на карту, так нет никого.
Может вы займетесь?

Уважаемый gryphon. Спасибо за Крым Российский!
Надеюсь в следующем обновлении и Севастополь так же будет Российским.

Это не я. Я так и не собрался это чинить.
Вероятно, из-за войны правок в регионе. Так что, в любой момент все может поменяться.

Проблему с Крымом я решил препроцессингом данных.
Читать вокруг https://forum.openstreetmap.org/viewtopic.php?pid=702109#p702109

Спасибо. Правда, очень не хотелось вкручивать в скрипты еще один костыль. С другой стороны… одним больше, одним меньше…

Да весь процесс конвертации состоит из костылей :slight_smile: