Ежедневная сборка OSM для Garmin с помощью Mkgmap

Уже несколько месяцев как я тоже занялся изготовлением ежедневных сборок карт для Гарминов из данных ОСМ. Просто стало интересно. А так как занимался я этим достаточно регулярно, то и пришла сама собой мысль сделать свою сборку публичной. А за одно и автоматизировать сей процесс. Вроде что-то получается. Да и дело на месте не стоит, при каждом удобном случае стараюсь что-нибудь добавить или исправить.
Основной задачей у меня была затея создания универсальной туристической карты с некоторыми не совсем стандартными возможностями, типа маршрутизации по водным путям и расширенного числа классов дорог. Грунтовки, грейдеры, гравийки и бетонки - все это отображается на карте отдельно друг от друга, с различными настройками параметров прокладки маршрутов. Маршрутизация так же доступна и по линиям не действующих железных дорог. Так же сделано и контрастное визуальное различие в основных типах автодорог для лучшего восприятия дорожной сети в целом. Это здорово помогает в оперативности выбора направления движения.
Из глобальных достижений - заработала поисковая индексация. Теперь для поиска доступны все точки населенных пунктов, существующих ныне и давно заброшенных урочищ. POI так же имеют адресную информацию. Но пока без указания номеров домов - это еще только предстоит сделать - сделано. Так же из больших, и пока неразрешенных проблем - дальняя маршрутизация. Сейчас при прокладке маршрута через две и более границ частей карты стабильно происходит ошибка расчета и такой маршрут кладется по прямой. Заинтересованные Java-программеры - вэлкам! - сделано.
Много чего еще есть возможность сделать своими силами, но в планах наладить какой-нибудь способ публикации конфигов и попытаться как-то придать этому всему какое-то коллективное развитие. Но я в этом пока мало чего понимаю. Так что пока буду просто принимать критику и реализовывать пожелания самостоятельным образом.
И так к делу:

Одновременно собирается три варианта карты:

  1. набор карт для установки в Garmin Mapsource
  2. готовый файл для загрузки в приборы Garmin
  3. набор для современных версий Garmin Mapsource, Basecamp и компьютеров под iOS
    Вариант в транслите больше не изготавливается.
    Мои стили и настройки для Mkgmap доступны здесь: https://maptourist.org/osm-garmin/CurrentConfigs/
    Как устанавливать написано тут: https://maptourist.org/osm-garmin/readme.txt
    Недельный архив всех перечисленных выше трех сборок лежит тут: https://maptourist.org/osm-garmin/archive/

Ссылки:
Mkgmap живеет здесь: http://www.mkgmap.org.uk/index.html
Тут веб-интерфейс мэйл-листа посвященного разработке Mkgmap: http://gis.19327.n8.nabble.com/Mkgmap-Development-f5324443.html
Mkgmap Wiki: http://wiki.openstreetmap.org/wiki/Mkgmap
Mkgmap/help/How to create a map: https://wiki.openstreetmap.org/wiki/Mkgmap/help/How_to_create_a_map
Тема на этом форуме, посвященная Mkgmap: http://forum.openstreetmap.org/viewtopic.php?id=9249

Теперь немного сухих цифр и фактов.
Карта охватывает территорию всего бывшего СССР
Для сборки используется файл local.osm.pbf из ежедневных выгрузок GIS-Lab’а.
После очередного отключения gis-lab.info все исходные OSM-данные ежедневно берутся с geofabrik.de

Обновление моих карт происходит ежедневно.
Запуск в 4:30, готово же все обычно к 11-и утра.
Каждую среду ночью собирается набор служебных файлов с данными о всех границах для нужд механизма построения поискового индекса.
Карта растет ежедневно в среднем на 1 мегабайт.
Архивный файл OSM_MapTourist.zip сейчас имеет размер 2 Гб. (30.01.2018)
Карта разбита на 271 часть (тайл). Размер их зависит от плотности данных.
Тайлы именованы по ближайшему самому крупному городу + код страны + цифровое имя файла карты такого тайла.

Работает все это дело на сервере под управлением FreeBSD 11.1 (Intel i5-3450, 3.1 гГц, 16 Гб памяти).
Сервер располагается в компании Навиком (официальный представитель Garmin в России).

Отлично!

Теперь вопросы.

Почему не отображаются названия улиц на крупных масштабах? Зато отображаются названия «грунтовка» и «узкоколейка», которые вообще не нужны в виде названий.

Странно. У меня названия улиц видны на всех масштабах. С грунтовками тоже не понятно. Я специально этот тип не выделял, и такая подпись должна появляться только при наведении курсора на дорогу. И вообще подписи такого типа постоянно присутствуют только для грейдеров, гравиек и бетонок. Применительно к какому навигатору идет речь?
Узкоколейка - да, есть такое, т.к. это важное различие с обычной ЖД. Подпись действительно постоянно присутствует. Сделано это по той причине, что сейчас уже подавляющее большинство УЖД разобрано и сдадено в чермет. Так что по оставшимся насыпям, зачастую, возможен проезд/проход заинтересованных в этом туристов. Кстати, по линиям недействующих ЖД и УЖД работает маршрутизация.

Да, и в сегодняшней сборке уже вынесены в отдельный тип точки ЖД-станций и видно их теперь издалека. :wink:

ValentinAK, а сам стиль конвертора mkgmap и стиль карты TYP, применяемый вами доступны в исходниках? Я тоже почти ежедневно собираю свою область и всю страну mkgmap-ом и хотелось бы иметь возможность обмениваться опытом. Вся моя сборочница доступна здесь: http://code.google.com/p/velo100mapper/source/browse/#svn/trunk

// Применительно к какому навигатору идет речь?

Орегон-300

Ещё заметил глюк, церковь отображается на самом крупном масштабе, потом пропадает на чуть более мелком, а потом опять отображается на ещё более мелком.

Хотелось бы дорогу hw=track; tracktype=grade1 обозначать так же, как hw=service. http://www.openstreetmap.org/?lat=56.80698&lon=60.67998&zoom=15&layers=M

Да, теперь доступны тут:
http://maptourist.org/files/myConfigs/

К сожалению у меня нет Орегона. Так что пока причина рисования лишних подписей мне не понятна. Будем разбираться.

Да, есть такое дело. На некоторых приборах так ведут себя точки, которые разведены по слоям без сквозного на них присутствия. Сейчас таким точками являются церкви, заправки, Ж/Д-станции и станции метро. Природа этого скорее всего кроется в логике софта и самих приборов. В принципе, решение для этой беды есть - оставить на нулевом слое все точки. Но это не красиво. Например, нафига на самом подробном уровне лишняя точка, стоящая посреди подземной станции метрополитена? Так же это не очень хорошо с точки зрения оптимизации размера карты и скорости ее прорисовки. Еще такие точки начинают задваиваться в поиске, но это решаемо - не все POI попадают в адресацию. Можно выбрать как раз такие, для объектов, которые хотелось бы видеть “свысока”.
Так что скорее всего придется прибегнуть к компромиссному варианту - метро оставить как есть, а остальное сделать с задвоением точек.

Да, хорошая мысль. Сделал. Отображаются теперь так же как и “сервисы”, тонкой сплошной линией. Но видны как и “треки” до 21-го уровня включительно. Так же для этих дорог повысил приоритеты роутинга.

О, круто! Сейчас, посмотрим :slight_smile:

Вообще, мне очень нравится оформление ваших карт.
Есть небольшие предложения по улучшению:

1. Пороги. Вот здесь не рекомендуется использовать waterway=rapids для обозначения порогов.
Но к сожалению на странице проекта whitewater нет нормальной рекомендации как мапить пороги. Там предполагается, что порог определяется наличием одного из тегов whitewater:{rapid_name, section_name, rapid_grade, section_grade} на элементе.
Лично мне такой подход кажется странным, поэтому я использую подсмотренный тег whitewater=rapid.
Предлагается этот тэг добавить в конвертацию.
В том числе и как точечное POI, например, вот с таким значком .
Также, хочется чтобы конвертировались теги whitewater={put_in, egress, put_in;egress, hazard}. (Описание и иконки можно брать со страницы проекта whitewater).

2. Добавить иконку для natural=cave_entrance (тип 0x6601).

3. Добавить иконку для водопадов (0x6508) (например, такую )

4. А вам действительно нравится значок звезда для маяка? Может использовать этот или этот ?

5. amenity=shelter сейчас конвертируется в кастомный тип 0x2b05. У меня в навигаторе это отображается значком гостиницы, что очень сбивает с толку. Предлагается тип оставить таким же, но поменять иконку. Например, на мапниковскую или вот эту .

6. tourism=alpine_hut сейчас конвертируется в 0x2b02, что в гарминовской терминологии означает “Bed & Breakfast Inn” и не соответствует действительности. Предлагается конвертировать в кастомный тип 0x2b06 c иконкой

7. Перевалы. Предлагается их конвертировать с именем “Название перевала (категория), высота”. Высоту берем из ele. Категорию, из pass:category. Пример в осм. Иконку, например, такую .

8. Непонятно, зачем, tourism=information конвертируется в 0x2f0c.
Это гарминовский нативный тип для туалета. У меня почему-то не срабатывает переопределение этой иконки в typ файле, из-за чего все информации отображаются значком туалета :).
Во-первых, можно использовать нативные типы для информации: 0x4c00 – 0x4cff.
Либо, если очень хочется оставаться в типе 0x2f, то использовать что-нибудь >= 0x2f10.

9. Пешеходные мосты отображаются очень странно: идет пунктир, потом раз! и коричневый прямоугольник в несколько раз больший тропы по толщине. Выглядит очень странно. Конкретного решения не могу сейчас предложить, но хочу донести эту странность до вас.

Я думаю пока хватит :D. И так уже простыня получилась).

Ещё места для пикника чуть-чуть бы понизить уровнем.

Ещё хотелось бы плейсы НП убрать с крупных масштабов, потому что они там мешаются. Можно оставить границу, но заливку точно убрать.

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

Ilis, к понижению каких-либо объектов нужно подходить очень аккуратно.
Еще раз напомню свою мысль о том, что страна у нас очень и очень разная по плотности инфраструктуры. В связи с этим нет никакой возможности выбрать какой-то один общий уровень генерализации. И лучше будет иметь на карте некоторый запас в этом смысле. Так что не стесняемся пользоваться переключением детальности в своих приборах. :wink:

Сегодня карта собралась с задвоенными точками из тех, которые хотелось бы видеть на больших масштабах. Т.е. на самом подробном уровне такие точки присутствуют в “своих” типах для возможности тематического поиска, плюс точка не попадающая в индексацию, просто для визуального присутствия на верхних уровнях. По прежнему разнесенными по слоям оставил только входы и станции метро.

Мне кажется, лучше конвертить в точку. Большая часть мостов - вполне себе точечные объекты на разумных масштабах карты.
Возможно, так же стоит поступить и с автомобильными мостами.

Разве что place=city/town. Всякие хамлеты хорошо б оставить - всё равно “под” полигоном, как правило, больше ничего нет :slight_smile:

Конвертировать в точку пока не получится.
mkgmap не поддерживает преобразование линий в POI.
По идее можно написать патч к нему – но это к тем, кто знает жаву. :slight_smile:

Мосты в точку не надо! Мосты, как они сделаны в этой сборке, меня очень порадовали, в отличии от сборки через мп, где непонятно где мост, а где проезд под ним.

Это к местам отдыха или к полигонам НП замечание?

Если к местам отдыха, то зачем мне видеть одновременно эти навесы, если от одного до другого полдня идти?

Если к полигонам НП (именно там сказывается плотность на всю страну), так я предлагаю не сами НП убрать, они-то как раз сбалансированно отображаются, а только их заливку на крупных масштабах.

Наверное некоторые идеи и просьбы можно выловить из ветки Оформление карт для Garmin
Что увидел в полглаза:

  • есть подкатегория бытовые услуги, но прачечные, химчистки вытаскиваются в магазины
  • бытовая химия вытаскивается в аптеки
  • нужно ли поля/площадки вытаскивать в стадионы, как и детские площадки, если идея охватить больше объектов, то может тогда идентифицировать их в названии (спортивная плошадка, детская площадка etc.)
  • вытаскиваются приватные гаражи/парковки (без пояснения)

Простите за мою некомпетентность; ищу хорошие туристические карты для Dakota 10 (поиск уверенных результатов не дал).
Установкой или сборкой для Гармина не занимался, поэтому хочу спросить у автора.

ValentinAK, эти карты можно использовать как 125 метровку? Или это зависит от настроек конвертера Mkgmap? Сами понимаете, что растра много не загрузишь, а детализация на природе в “плохую” погоду очень бы пригодилась (особенно когда не знаете, где находитесь).
Вы все объекты из базы OSM выгружете или выборочно?

offtopic:
bopoh13, если речь про рфию, то в дакоту лучше всё-таки грузить растр из ггцшных 250-метровок

Значение тэга «ref» содержит два элемента, разделённые точкой с запятой. В карту навигатора попадает только первый. Это поправимо? Хотелось бы видеть полное значение.
Пример: http://www.openstreetmap.org/browse/way/131113228