OsmAnd: подключение собственных растровых карт

Редакция журнала уже не раз обращалась к теме использования навигационной программы для планшетов и смартфонов OsmAnd. Богатый функционал программы позволяет легко и просто разрабатывать и строить маршруты с использованием самых подробных и современных карт. А возможность подключения карт из самых разных источников — хорошее подспорье для разработки альтернативных вариантов маршрута.

Программа OsmAnd имеет уникальную особенность, которая, пожалуй, не встречается больше ни в одной из программ навигации для мобильных устройств. В ней можно одновременно создать до трех слоёв карт, причем в слоях могут одновременно присутствовать как векторные, так и растровые карты. Регулируя прозрачность слоёв, можно добиться визуального эффекта «наложения» картографической информации — например, дорог векторной карты на спутниковый снимок из Яндекс-карт. А включив модули горизонталей и рельефа, получить результат, не уступающий по информативности лучшей топографической карте.

К сожалению, документированные «способности» программы в части работы с растровыми картами ограничиваются таковыми, полученными из онлайн-источников. Несмотря на то, что выбор таких источников в программе чрезвычайно широк и, кроме того, она позволяет подключать и пользовательские источники данных, этот способ имеет один существенный недостаток: он хорошо работает при наличии быстрого и надёжного интернет-соединения. Несмотря на то, что программа умеет сохранять «выкачанные» фрагменты-тайлы1 в своём внутреннем кэше, отсутствие интернет-сигнала в нужный момент может сыграть с вами злую шутку именно тогда, когда вы оказываетесь вдали от цивилизации. Вот и приходится, чтобы избежать подобных подарков судьбы, заранее, ещё до начала поездки, «браузерить» в программе местность, запланированную к посещению, чтобы заставить OsmAnd сохранить тайлы. Да ещё и заниматься этим на разных масштабах карты, чтобы гарантированно сохранились все нужные слои онлайнового растра.

У растровых онлайн-карт есть еще пара недостатков. Современные, например спутниковые или OSM-карты разработчики стараются поддерживать в актуальном состоянии. Это приводит к тому, что часто утрачивается информация о «вчерашнем» состоянии местности. Кроме того, каждое обновление карт на сервере влечёт за собой необходимость выкачивать изменившиеся тайлы. Что же касается карт исторических, то хотя в последнее время и появилось достаточно много подобных онлайн-сервисов, все они грешат одним недостатком: низкой точностью привязки исходных карт. По разным причинам: некоторые это делают вполне сознательно, в целях борьбы с «чёрными копателями», а большинство — просто пользуются для этих целей сомнительными методиками.

К счастью, у программы OsmAnd имеется еще одна, оффлайновая возможность подключения произвольного растра. Именно эту возможность мы и исследуем ниже в статье.

Помощником нам здесь послужит программа Global Mapper, именно с её помощью мы преобразуем произвольный привязанный растр в формат, пригодный для использования в OsmAnd. Несмотря на то, что программ для создания тайлов существует довольно много, Global Mapper удобен тем, что во-первых, понимает огромное количество самых разнообразных форматов исходных данных, а во-вторых, и саму первичную привязку удобно делать именно в ней (о таких методиках мы не раз писали в предыдущих статьях).

Но в этот раз привязкой мы заниматься не будем, а возьмём сразу в качестве исходного картографического материала уже готовые, привязанные «километровки» конца 70-х – начала 80-х годов (которые в просторечии обычно именуют «генштабом»). Такой выбор не случаен: во-первых, качество привязок этих карт находится на должном уровне, и это качество проверено многолетней практикой путешественников и исследователей. Поэтому и наш результат можно будет легко оценить. Ну а во-вторых, эти карты по-прежнему широко используются и не утратили своей актуальности и по сей день.

Итак, на самом начальном этапе работы мы загрузим интересующие нас карты в программу Global Mapper. Нас будут интересовать территории вокруг Водлозера (именно о них мы рассказываем в этом номере журнала). Так что, откроем в программе четыре карты-километровки, охватывающих земли вокруг озера.

Чтобы наше открытое рабочее пространство выглядело более профессиональным, сразу же обрежем в программе ненужные сейчас нам части карт, а именно рамки. Тем самым мы избежим неряшливого перехлеста листов. Программа легко умеет это делать по градусной сетке, которая в случае «генштаба» совпадает с краями основного рабочего пространства карты.

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

Этот лист мы и будем экспортировать в формат, пригодный для использования в OsmAnd, то есть в тайлы. Выбираем для экспорта «Экспорт веб».

В различных онлайн-сервисах используются разные форматы тайлов, отличающиеся, в первую очередь их физическим размером (в пикселях), а также нумерацией файлов и папок. Нам нужен будет формат OSM.

После того, как мы сделаем и подтвердим выбор формата тайлов, откроется дополнительное диалоговое окно, в котором можно будет сделать некоторые тонкие настройки экспорта. Тех уровней, которые, базируясь на разрешении исходного растра, нам предлагает программа вполне хватит. А для конечного формата тайлов мы в нашем учебном примере выберем JPG — исключительно в иллюстративных целях, которые будут понятны немного ниже. Лучше же всегда, где возможно, выбирать PNG, хотя бы из-за того, что этот формат позволяет задавать «прозрачность». Правда, надо иметь в виду, что и экспорт в этом втором случае будет идти намного дольше.

После подтверждения настроек экспорта откроется окно сохранения. Здесь мы можем создать новую папку для сохранения тайлов, указав для неё понятное имя (следует иметь в виду, что это имя нам понадобится в дальнейшем). В качестве дополнительного бонуса программа создаст и html-файл, открыв который обычным браузером, мы сразу сможем посмотреть на результат экспорта. В данном случае и папку, и файл мы назвали Vodlo.

Начинается процесс экспорта. Здесь следует набраться терпения: в зависимости от мощности компьютера, размера исходной карты, а также сделанных настроек он может длиться от нескольких минут до нескольких десятков минут.

После завершения экпорта программа предложит нам просмотреть полученный результат в браузере. Изготовленный ею файл содержит даже кнопки увеличения/уменьшения, а кроме того, карту можно двигать и масштабировать в окне браузера, точно так же, как мы это делаем, общаясь с любым картографическим онлайн-сервисом — таким, как Яндекс- или Google-карты.

Но оставим этот приятный подарок от создателей Global Mapper пока в стороне — нас ждут ещё несколько завершающих несложных шагов.

Первым делом окончательно доведём наши полученные тайлы до понятного OsmAnd вида. Для этого нужно к расширению .jpg каждого файла дописать ещё одно, вот в таком виде: .jpg.tile. Именно с таким расширением тайлы хранятся в папках программы на мобильном устройстве. Проще всего это сделать каким-нибудь продвинутым файловым менеджером.

После этого у нас уже всё готово к перенесению файлов на планшет или смартфон. Подсоединяем устройство к компьютеру, и после того, как оно определится, копируем нашу папку с тайлами (помните, что мы её в нашем примере назвали Vodlo) в каталог osmand/tiles на устройстве. Как видно на рисунке ниже, именно там программа сохраняет тайлы и из других источников.

Теперь откроем в OsmAnd пункт меню «Настройка карты», а в нём — выберем пункт «Источник карты…» Скорее всего, у нас уже там сделан выбор, но мы временно его изменим, выбрав самый нижний пункт: «Задать/отредактировать…»

Откроется ещё одно окно с выбором источника. Во второй строчке («Выберите существующий…») нужно открыть выпадающий список — в нём мы обнаружим нашу папку Vodlo, если на предыдущем этапе мы её скопировали в правильное место. Имя источника при этом создаётся автоматически.

Поскольку источник у нас не онлайновый, для параметра URL надо указать, как это обычно принято для локального сервера, localhost. В настройках увеличения/уменьшения можно задать уровни, на которых наши растровые карты будут видимы. Далее источник сохраняем и возвращаемся в предыдущее окно «Источник карты…», в котором восстанавливаем выбор, установленный ранее, например «Локальные векторные карты».

Наша созданная карта будет дополнением к основному источнику. Её можно назначить как картой покрытия, так и картой подложки, в нашем случае тут нет разницы. Выбираем в «Настройках карты» пункт «Карта подложки» и в открывшемся окне устанавливаем наш созданный источник: Vodlo.

Удивительно, но на этом — всё! Переместившись по карте OsmAnd в район Водлозера, мы сразу же увидим нашу созданную карту. Широкие желтоватые поля вокруг неё образовались из-за того, что форматом экспорта мы выбрали JPG, а тайлы самого верхнего, «грубого» масштаба-уровня имеют большой размер и выходят за рамки нашего исходного изображения. Именно поэтому (чтобы избежать этой некрасивой рамки) и следует выбирать при экспорте формат PNG с заданной прозрачностью.

Если в настройках экрана у нас отмечен чекбокс «Прозрачность», то мы сразу же сможем оценить и точность нашей карты. Двигая малозаметный ползунок голубого цвета в нижней части карты влево и вправо, мы попеременно сможем отобразить «источник карты» (в нашем случае — это локальные векторные карты), нашу приготовленную карту, а также визуально «смешать» их в любой пропорции, как на последнем рисунке. Все три рисунка также демонстрируют то, что наша карта была привязана ничуть не хуже векторной, а легкие различия в положении береговой линии островов и полуостровов как раз легко объяснимы, ведь с момента создания растровой карты прошло около 35 лет.

 

 

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

Примечания

1 «Тайлами», или иногда «плитками» называют небольшие, обычно квадратные фрагменты растровой онлайн-карты, из которых строится конечное изображение. Карту разбивают на такие фрагменты, чтобы избежать загрузки сразу всей большой и «тяжелой» карты через Интернет. Кроме того, такие тайловые изображения состоят из многих слоёв, где каждый тайл слоя следующего, более мелкого масштаба, как правило, имеет вдвое больший линейный размер, чем тайл предыдущего. Зачастую на тайлах разных слоёв отображается и информация разной степени детализации.

Владимир Комиссаров