Для примера будет рассмотрен сервис http://loadmap.net, который предоставляет карты с привязками в формате OziExplorer.
Минусом подобных карт бывает то, что у них есть рамка и отдельные листы карт перекрывают друг друга при открытии. Для того, что бы рамку резать я уже написал ранее((ozi2map от туда более не актуальна)) про свою программку geocrop.
Теперь про самый смак: QMS умеет открывать .vrt файлы. VRT файл это XML документ, с описанием привязки и различных преобразований, понятные движку GDAL. Так вот, в ходе беглого исследования оказалось, что мой способ резки рамки применим к VRT файлам: данное преобразование просто сохраняется внутри и применяется при открытии! Если добавить сюда тот факт, что переконвертации самого растра не происходит и просто формируется дополнительный маленький XML файл, то счастье становится полным.
Рассматривать вопрос сборки программы я подробно не буду, скажу только, что нужны dev пакеты для libgdal и libproj4. Устанавливать программу не нужно - просто скопируйте в удобное место, у меня это ~/bin
. Сборка и работа на Windows не проверялась.
Вот, преамбула завершилась… Основная часть будет короче :)
-
Скачиваем растровый файл карты, допустим это 500-метровка K-53-027-A, тогда файл будет K-53-027-A.png
-
Скачиваем файл привязки K-53-027-A.map
-
Обрезаем рамку и формируем VRT:
~/bin/geocrop -s 50k -f VRT K-53-027-A.map K-53-027-A.vrt
Обратите внимание на параметр -s - он задаёт масштаб листа в виде делителя, т.е. опущена
1:
, а буква обозначает степень десятки на которое нужно домножить: 50k (кило) = 50 * 10^3 = 50000 и масштаб тогда 1:50000, т.е. пятисотметровка.
Повторяем эти шаги для всех нужных листов и добавляем в QMS путь до этих карт, после чего имеем такую картину:
Видны границы реальных карт, видно, что они перекрываются, но при этом это не мешает отображать нужные данные. На скриншоте использована карта в масштабе 200k.
Для любителей подкастов можно поглядеть на ютубе подготовку карты из 4х пятисотметровок: https://youtu.be/7mp35wYk0IQ
Стоит отметить, что если одновременно открываются карты нескольких масштабов, QMS неплохо выбирает когда начинать её отрисовывать. Но:
Карты более мелких масштабов должны идти перед картами более крупных масштабов!
а так же стоит учитывать, что пока есть косяки в отрисовке, выглядит это так:
откройте в полном размере. При этом, если чуть-чуть сдвинуть карту, области перерисуются.
UPD: косяков не наблюдается, если собирать карты одного масштаба в атлас (один VRT). Об этом я напишу чуть позже.
Ещё нужно поэкспериментировать с тайлами. Возможно будет профит при прорисовки больших карт.
UPD: корявенький перевод на сайте QMS: https://bitbucket.org/maproom/qmapshack/wiki/QuickWayToPrepareRasterMapForQMapShack