На всякий случай. Карта, процесс создания которой описан ниже, предназначена исключительно для моего личного использования в абсолютно некоммерческих целях. Все данные – космические снимки, GPS треки и др. получены из открытых источников при помощи бесплатной программы SAS Planet. Продажа или распространение данной карты исключены.
Еще в сентябре прошлого года, когда я угодил в отличное болото, пытаясь найти дорогу через реку Слогавка, я здорово разочаровался в картах, которыми пользовался. Требовалась серьезная доработка. Чтобы я мог точно знать проходимые тропы и дороги, а не ковырялся в темноте по слякотям и топям, ориентируясь на некие «пройденные [censored] траектории» Garmin’а.
Тогда же я нашел отличные слои с реальными треками в замечательной программе SAS Planet, но с наскока соорудить нужную мне карту не получилось. Так что задачу эту я отложил на зиму. Чтобы спокойно, без спешки во всем разобраться и сделать не абы как, а нормально.
Вот, сделал. Начал зимой, осенью еще, а доделал лишь на днях. Это, блин, целая наука, оказывается. И еще вагон и маленькая тележка всякой мелочи, которую тоже нужно изучить, понять и сделать. И которая, кстати, отнимает массу времени.
Начну по порядку. Для тех, кто не в теме – главным достоинством SAS Planet является то, что программа представляет собой агрегатор большого количества онлайн карт и картографических сервисов. Яндекс, Google, OSM, Генштаб, ГГЦ – лишь малая часть того, что можно посмотреть, скачать и скомпилировать. В SAS Planet существуют два типа карт – собственно базовые карты (будь то карты, схемы или спутниковые снимки) и слои, которые можно наложить поверх.
Скажем, взяв за основу Яндекс-спутник, и Яндекс-гибрид в качестве слоя, мы получим спутниковую фотографию с подписанными населенными пунктами, озерами, реками и т.п. Ну, то же самое, что будет на сайте самого Яндекса, если выбрать режим «гибрид».
Добавив слой Wikimapia, увидим на карте множество выделенных объектов с интерактивными комментариями. Можем подключить контуры высот, кадастровые границы, да хоть зоны покрытия операторов связи – что карт, что слоев навалом, их актуальные списки регулярно обновляются. Когда впервые знакомишься с программой, включаешь столько всего разного, что картой невозможно пользоваться на практике из-за перегруженности информацией.
Еще в сентябре я нашел все, интересующие меня, слои и на компьютере уже видел воочию то, что хотел перенести в навигатор. В качестве базовой карты я взял Яндекс-спутник, так как у него самые свежие снимки по Подмосковью. К нему я добавил несколько слоев с треками – Народную карту Яндекс-треки, карту GPS-треков OSM и треки Strava-Heatmap. Последние делятся на несколько категорий – велоспорт, бег, зимний спорт и еще всякое. Есть и объединенный общий слой, который я в конечном итоге и выбрал.
А вот Яндекс-треки почти сразу выкинул. Это даже не треки, а точки активности дивайсов с Яндекс-картами. Там где много ходят или ездят, точек много и они сливаются в полосы. Но на глухих лесных тропках отдельные редкие точки лишь сбивают с толку, да и растворяются они среди зелени. Strava и OSM напротив – исключительно наглядны и информативны. Кроме того, они прекрасно дополняют друг друга. На их фоне включение или выключение слоя Яндекс-треков практически незаметно.
Вот слой треков OSM (сконвертил в JPEG с серой подложкой, иначе на черном фоне ничего не будет видно):
А вот треки Strava-Heatmap:
Еще мне хотелось найти подробную карту рек и ручьев. Но, к сожалению, не нашел ничего более информативного тех же Garmin’а, Яндекса или ГГЦ. А слой «Реки, притоки, вода (ITO Map)», на который я возлагал больше всего надежд, издох вместе с сервисом ITO Map некоторое время назад. Ну, ничего, может появится что-нибудь похожее.
Вооот… Поначалу задачка выглядела простой. Я выделяю нужную мне область, выбираю карту, слои и делаю экспорт в формат Garmin’а. Благо есть штатная конвертилка. Для некоторых форматов экспорта такое действительно возможно – объединить базовую карту со слоем поверх и сконвертировать полученное в единый файл. Со всеми указанными масштабами и т.п. Но не для Garmin’а IMG! Можно было, конечно, экспортнуть и в JNX, но мне совсем не хотелось возиться с перепрошивками и прочими танцами с бубном. IMG в этом плане идеален – скопировал файл в навигатор и готово.
Но в IMG SAS Planet позволяет экспортировать лишь одну базовую карту. Пришлось думать, как выкрутиться с наименьшими трудозатратами. Сперва я хотел сделать три карты – спутник и два слоя. И наложить их друг на друга в навигаторе. Но не тут-то было!
Обмануть SAS Planet и выдать слой за базовую карту, чтобы скачать кэш, оказалось несложно. Даже сохранить этот кэш в «прозрачном» PNG формате. Но в формат IMG тайлы экспортируются в виде JPEG’ов, так что я получил слой с отличной мышино-серой подложкой, через которую, понятно, ни пса не просматривалось.
Были и другие варианты. Можно было склеить карту со слоем сразу в гарминовский формат KMZ. Я попробовал так сделать тестовую карту из Яндекс-спутника и треков OSM. Склеил их в самом большом (восемнадцатом) зуме, который поддерживает мой навигатор.
В результате получилась очень громоздкая и медленно отрисовывающаяся карта, которая, тем не менее, без проблем загрузилась в дивайс и сразу завелась. Признаюсь, я был даже удивлен. В максимальном увеличении карта показывала именно то, что нужно. Но стоило уменьшить зум, и тоненькие линии треков начинали растворяться.
Нужно было сделать такую карту, чтобы с уменьшением масштаба треки становились толще. Иначе говоря, многослойную – с разной картинкой на каждый зум. Увы, штатная утилита SAS Planet позволяла сделать склейку с экспортом в KMZ лишь в одном масштабе. Я мог сконвертировать хоть двадцать отдельных карт, но навигатор стал бы работать с ними лишь по отдельности.
Поэтому я решил подойти с другой стороны – собрать карту для SAS Planet со всей нужной мне информацией и экспортнуть ее в IMG. Для этого нужно было склеить тайлы выделенной области в единый JPEG или PNG и объединить их в Фотошопе. Отдельно для каждого зума. А потом создать из финальных файлов новую карту. И если все получится, экспортировать ее в IMG.
Вздохнув, я взялся за дело. Я понимал, что это надолго, но еще не знал насколько… Одна склейка чего стоила – файлы получались огроменными. Шестнадцатый зум вылез хорошо за гигабайт, а восемнадцатый – за все двенадцать. Последние два зума даже в фотошоповский PSD не уместились, пришлось сохранять их в формате для больших файлов PSB. Только это было еще полбеды.
Моя первоначальная карта охватывала весьма приличную область. Я думал, там ходить – не переходить, надолго хватит. Но внезапно она стала мне мала. Ровно с того момента, как я подключил к своим путешествиям велосипед. Потому что на велике я практически сразу стал выезжать за ее края.
Такая ситуация меня нисколько не устраивала, и я решил сделать карту покрупнее. Охватить все пространство между Большим и Малым Московскими кольцами, Егорьевским и Носовихинским шоссе. По факту получилось даже больше, чем планировал. Вот примерные границы: Есино – Фрязево – Павловский Посад – Дрезна – Ликино-Дулево – Куровское – Ильинский Погост – Асташково – Электроизолятор и далее до ответвления строящейся развязки Малого кольца.
Тут возникла первая засада. Я уже говорил, что у Яндекса самые свежие космоснимки для Подмосковья. Ну, из того, что я знаю, и что присутствует в наборе SAS Planet. Яндекс действительно регулярно обновляется. Но… Посмотрите на мою старую карту:
И на свежие спутниковые фотки. Это уже область для новой карты:
Мало того, что они с кучей облаков. Они хуже качеством, неразборчивые, неконтрастные. Со старой картой мне повезло – это была то ли осенняя, то ли весенняя съемка, зеленка присутствовала в весьма умеренном количестве. За ней все было видно. Кроме того, съемка производилась в отличную солнечную сухую погоду. Возможно, фоткали со спутника не на слишком высокой орбите. А может камера у него была лучше и атмосфера прозрачнее.
Но это не важно. Важно, что отдельные районы стали совершенно нечитаемыми. Да и сама карта стала похожа на лоскутное одеяло. С этим надо было что-то делать.
К сожалению, я не смог разобраться, как выудить из Яндекс-спутника кэш нужного мне года. Да и не факт, что такая возможность вообще имеется. Пришлось работать с тем, что есть.
Сначала я хотел раздербанить свою старую карту и заменить ей соответствующую область в новом кэше. Вот только, карту эту я делал еще без понимания многих важных моментов, которые знаю сейчас, и качество тайлов, которые я бы смог получить, оставили бы желать лучшего. Но все же это куда предпочтительнее того безобразия, что я увидел на современных снимках. Тем более что сама местность изменилась крайне незначительно – начали прокладывать новую бетонку, в лесу появилась свежая вырубка, на северо-западе построили какой-то объект.
И тут мне здорово повезло. SAS Planet я устанавливаю в корень системного диска, там же находятся и все закачанные кэши. Год или два назад я делал бекап имиджа диска С, ну, туда же попала и SAS Planet со всем содержимым. Трясущимися руками я открыл архив – и вот он, мой изначальный кэш, целый и невредимый!
Конечно, он ограничивался размерами старой карты, но и того, что было, в общем, хватало – именно эта область сейчас особенно испоганилась. Далее я загрузил современные тайлы для новой карты и перезаписал все прошлое выделение тайлами из бекапа. Получился такой исходник:
Как видите, карта стала сильно лучше, хотя, конечно, лоскутов осталось предостаточно. Хуже всего было на северо-западе – там присутствовала облачность, которая размывала детали. Эх, знал бы я, сколько работы еще предстоит…
Сначала я и не помышлял о каком-то масштабном редактировании и выравнивании цветов, контраста и прочих уровней. На востоке моей старой карты присутствовало несколько облачков, которые я хотел замаскировать заплатками из свежих космоснимков. Помню, еще в середине февраля выспрашивал у знакомого, как это лучше сделать технически.
Вот неотредактированная заплатка поверх облака. Все видно, все понятно, но заплатка тоже хорошо заметна. А в правой части можно наблюдать вырубку между развилкой дороги. Она сильно отличается по цвету от вырубки западнее, хотя по факту выглядит примерно так же:
Вот моя первая коррекция заплатки и вырубки. Я воспользовался функцией Match Color, которая, увы, не решает проблему полностью:
Однако в процессе работы я многому научился, и финальный результат уже не стыдно показать (тут качество чуть ниже, так как это скриншот экрана, а не рабочий файл в максимальном зуме):
Научился я многому вовсе на маскировке заплаток. Я ухитрился более-менее выровнять всю карту. Вот так примерно:
Страшно вспомнить, сколько сил и времени я на это убил. Причем, как выяснилось впоследствии, три четверти работы сделал зря.
В моей карте шесть отдельных слоев, для всех используемых уровней масштаба. Изначально их было вообще девять (с 10-го по 18-й зум), но от первых трех я потом отказался – 13-й зум отлично масштабировался буквально до точки и был последним масштабом, который требовался на практике. Плюс, начиная с 12-го зума, линии треков становились уже чересчур толстыми, перекрывая основную карту.
Это, правда, выяснилось уже в самом конце. А пока же я начал подгонять по цвету лоскуты на карте с самого маленького 10-го зума. Выровняв карту, я маскировал облака заплатками, переносил на карту вырубку, дорогу и еще пару мелочей.
С каждым новым зумом это становилось все сложнее. На 14-м зуме я решил сперва скорректировать лоскуты у оставшихся четырех файлов и лишь затем разбираться с облаками и дорогами.
При переходе на следующий зум размер файла увеличивался в четыре раза, соответственно усложнялась и работа. Даже выделить лоскут прямоугольным лассо становилось очень непростой задачей. Когда граница проходит между двумя контрастными пикселями – это одно дело. И совсем другое, когда этих пикселей вдруг становится несколько десятков, и переход размазан по ним равномерно. Особенно весело случайно дважды кликнуть после получаса выделения, чтобы лассо замкнулось раньше, чем надо.
Последний 18-й зум я делал недели две. Причем, примерно половину времени вручную сглаживал широченную полосу стыка двух лоскутов на всю высоту карты. Линии пикселей по ширине полосы очень сильно отличались, так что натрахался я с нею от души.
А после того, как закончил, понял, что зря возился со всеми другими зумами! Потому как они образуются ресайзом самого большого зума, а не фотографируются отдельно! Надо было делать лишь последний файл, а остальные ресайзить из него! Только слои треков взять скачанные!
У меня даже не осталось сил ругаться на свою тупость! Первый же ресайз карты показал разницу между ресемплингом Фотошопа и Яндекс-карт. Разница примерно как между старым телевизором и Full HD, хотя количество пикселей и там, и там одинаковое.
Дальше стало легче. Я заряжал комп, и он все за меня считал. Особенно я радовался, что больше не надо возиться с облаками и дорогами для оставшихся четырех зумов.
Работа, однако, еще не закончилась. Предстояло собрать из JPEG’ов карту для SAS Planet и сделать экспорт в Garmin IMG. Даже четыре карты! Я хотел сделать карту с треками и без треков – они не всегда нужны. Кроме того, для навигатора я решил как следует усилить цвета. У него экранчик маленький и не слишком контрастный – рассматривать детали на спутниковой карте бывает сложновато.
Так что я подготовил четыре комплекта финальных JPEG’ов – два обычных (с треками и без) и два «попугайских». Далее я воспользовался программой Global Mapper, в которой собрал все зумы воедино, задал настройки масштабов и сделал экспорт в Google Maps Tiles. Которые «скормил» SAS Planet под видом пользовательской карты. Все получилось в лучшем виде!
Осталось повторить операцию еще три раза, после чего сделать четыре экспорта в IMG. Каких-то проблем не возникло, хотя мне пришлось переконвертировать все JPEG’и и повторить работу – от жадности я сделал исходники слишком большого размера, и финальные IMG файлы разбились на несколько частей по два гигабайта. Места-то мне хватало, но чтобы включить или выключить такую карту на навигаторе, надо было отдельно включать каждую часть. Я постоянно переключаю карты и это неудобно. А какой-то потери в качестве я не заметил не только на экранчике Garmin’а, но и на своем большом мониторе.
Когда все было готово, я получил нежданный подарок. Видимо за упертость. Оказывается SAS Planet существует в версии для телефона и, скачав, SAS4Android я могу ипользовать свои мега-карты на шестидюймовом экране. Пришлось потратить еще вечер – разобраться с программой, упаковщиком карт, скачать и упаковать слой Яндекс-гибрида (на Garmin’е его роль исполняет карта Дороги России. РФ. ТОПО) и залить все на телефон. Сначала я напутал с проекциями и карты разъехались, но потом разобрался, что к чему.
Вот, что я имею в результате. Карта без треков:
Карта с треками:
Карта без треков «попугайская»:
Карта с треками «попугайская»:
Вот так это выглядит на навигаторе:
Как видите, все подписи из подложенной снизу гарминовской карты отображаются:
Вот это обычная, не «попугайская» карта. Почему-то на фотке практически не видно разницы, хотя глазом хорошо заметно. Только треки кажутся контрастнее, так как не «тонут» в зелени. На самом деле «попугайская» карта читается значительно лучше:
А вот карта на телефоне:
С включенным слоем Яндекс-гибрид – все надписи видны:
А вот «попугайский» вариант. Тоже отлично смотрится:
Так что, не смотря на затраченные труды, я полностью доволен – к сезону готов. На компьютере могу планировать маршруты в гарминовской BaseCamp, а в лесу пользоваться и навигатором, и телефоном. Не переживая за наличие интернета, если понадобиться что-то рассмотреть на большом экране. Быстрее бы на даче дали воду, задрало уже в городе сидеть.
Там хорошо, там лес и травка зеленеет: