вторник, 7 января 2014 г.

Конвертируем карты из OZI

Ну что ж, у многих из вас за многие года скопилось очень много карт для OZI. Эта программа весьма и весьма распространена, она имеет фатальный недостаток. Поэтому надо бы научиться все эти карты переделать в новый, стильный, молодежный формат. А не закрытый б-гмерзкий ozf.

Сделать это на самом деле очень даже просто.

Что нам для этого понадобится:
  1. Global Mapper - программа для редактирования, конвертирования, и вообще чего хочешь делания с географическими картами. Стоит денег. Деньги хотят просто конские, ну да и инструмент может очень многое. Хотя если у вас нет лишних денег и лишних предрассудков, то вы сможете при желании найти и обесплаченную версия там, где вы обычно находите фильмы за несколько дней до проката. На данный момент релизная версия 15, в ней и будем производить наши эксперименты.
  2. MapMerge - утилита от создателей ozi. Пригодится в том случае когда есть много исходных файлов и их нужно склеить в один, это конечно все можно сделать в глобалмапере, но зачем если это все можно автоматизировать.
  3. Dropbox
  4. Demapper или OziMapTrans
Склеивание карт

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

Если это несколько карт, то вам нужно будет их объединить каким-то образом в одну. Это можно сделать двумя путями:
  • MapMerge - просто и легко, пару кнопок ткнул и все готово, но и результат иногда может не порадовать. Вобщем стоит начать с этого варианта. Чтоб не лить лишней воды даю ссылку как это делать - http://ozi-piter.narod.ru/new_video/primer_skleiki_kart.html, вот еще может быть полезно - http://www.kotelnikov.net/blog/map-merge-for-oziexplorer, а тут вобще видео - http://www.youtube.com/watch?v=AJfgd6J6poY
  • Если результат предыдущего варианта не устроил то можно тоже самое сделать в ГлобалМаппере, но это уже не совсем тривиальный процесс (а кто-то говорит что проще и не куда). И тоже все уже украдено до нас - http://www.karelia-life.net/articles/atcl0003/maps_merging.htm. Но там на самом деле трешь и угар какой-то, я например так и не смог ничего сшить, проще оказалось картинки склеить и привязать заново. Но мало ли.
Итак у нас теперь файл карты один, поехали дальше.

Исходные форматы

Итак у вас должно быть 2 файла, один с расширением map  и еще какой-то. Если этот какой-то картинка, смело пропускайте этот пункт.

Если нет то для начала нам надо наш файл из формата ози перевести в обычный графический формат (если у вас расширение второго файла типа ozf и что-то там еще). Просто хоть ГеоМаппер и очень мощная пронрамма, но даже этот суперкомбаин не до конца поддерживает озиковские форматы. Вы конечно можете попробовать открыть свой файл напрямую, но он может и открыться и не открыться с равной долей вероятности, т.к. в один прекрасный момент, товарищи которые разрабатывают ози ввели какое-то хитрое шифрование своих файлов (а что народ-то уже подсажен), и ни кому не говорят как его раздербанить. Им похоже плевать что лет через 10-15 когда их озиков может не остаться, этот формат никто прочитать не сможет. Но мы то не такие, мы дорожим своим трудом и все карты будем хранить только в открытых форматах. 

Итак в какие бывают исходные файлы:

  • .map + .png/.jpg/.gif - Самый лучший вариант. У вас есть карта в виде какого-то графического файла и еще один файл с таким же названием и расширением map. Map файл содержит в себе все данные по которым программа определяет к какой части на шей планеты относится графический файл. По простому файл привязки. Если это ваш вариант, то переходите к следующему пункту.
  • .map + .ozf2/.ozfx3 - это внутренние форматы ози. По сути своей это теже самые пачки тайлов которые получатся у нас с конце, только сжатые в одну кучку и для пущей важности зашифрованные. Но как же получить картинку если формат озика закрыт. Ну как обычно это оказывается, на каждую хитрую гайку, найдется что надо. И это надо называется demapper. 
Скачиваем эту программку. Открываем в ней свой файл и нажимаем декодировать.
Рядом с вашим файлом ozf появится файл с таким же названием, но уже в виде картинки с расширением PNG. Эту процедуру можно провести с несколькими файлами одновременно.

Теперь вам нужно открыть ваш файл с расширением map в любом текстовом редакторе и поменять в третьей строке расширение ozf на png.
Сохраняйте это все.

Теперь у вас будет 2 рабочих файла Карта.map и Карта.png

Есть альтернативная программа - OziMapTrans. У нее плюс не нужно править файл Map, но работает она дольше и нужно совершать больше манипуляций. Кому надо расскажу в комментариях.

Нарезка.

Теперь нам нужно нарезать эту картинку на маленькие кусочки (тайлы) чтобы скормить эту карту сервису.

Это можно сделать несколькими путями. Самый продвинутый это через открытый пакет программ для работы с географическими картами GDAL. Если вы решите пойти этим путем, то ваша совесть по отношению к богам лицензионных отчислений будет чиста. Но этот путь не самый тривиальный, все программы консольные и т.п. Поэтому рассматривать его мы сейчас не будем. А посмотрим в сторону программы Global Mapper. Я предполагаю что вы ее уже "купили" и установили. Руссифицировать ее не обязательно, переводы корявые, лучше пусть будет в оригинале.



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


Теперь делаем следующую последовательность действий:

В верхнем меню выбираем File - Export - Export Web Formats...

Вылезет окошко


Выбираем Google Maps Tiles. И Ok.

Появилось окно:



Что тут к чему:
  • Data Set Name - без разницы, это название, оно нам не понадобится
  • Zoom Level Setup - это максимальный зум который будет доступен на карте. В принципе он определяется автоматом, но если есть желание можно изменить, сделать еще больше, но тогда качество на крупных масштабах естественно упадет, т.к. из картинки будут выжиматься все соки, ну как цифровой зум на фотоаппаратах.
  • Number of zoom levels to use - Это число уровней увеличения. В принципе тоже можно не менять, Но если хочется карту на глобусе посмотреть то ставьте побольше.
  • Формат не меняем. PNG очень хороший для наших дел.
  • Default Background Map Layer - не нужно, т.к. это настройки файла который генерируется автоматом чтобы можно было оценить качество полученных тайлов. Понадобится только один раз. Потом удалим.
  • Следующий пункт тоже пофиг, т.к. нам этим не пользоваться.
  • Transparency - прозрачность. Не трогаем. Это нужно для того чтобы крайние куски карты которые будут маленького размера имели прозрачный фон там где нет информации.
  • Дальше галки по порядку активные
    • Делать прозрачные тайлы - да
    • Пропускать существующие тайлы, т.к. у нас таких еще нет - нет
    • Пропускать пустые тайлы - если да то вместо пустых тайлов будет пустота, это хорошо если карта не квадратная, если нет, то на этих местах тоже будут тайлы
    • Черт его знает что делает - лучше нет
    • Экспортировать только полные тайлы - конечно нет, т.к. иначе краев не будет
    • Создавать файлы привязки для тайлов - это нам тоже не надо
    • Делать цветность тайлов восьмибитной - нет
    • Экспортировать PNG для тайлов с прозрачностью - у нас и так уже.
В каких-то местах я могу и ошибаться в том как работает тот или иной пункт, и если не уверены, делайте как на картинке. И жмите ок. (Сверху есть еще одна вкладка, но она нужна если вы хотите экспортировать только часть карты)

Открывается окно для сохранения результата. Выбираете папку куда сохранять, лучше создайте новую пустую и вводите имя html файла. Жмите ок и ждите.

Дождались? Идите в ту папку куда все сохраняли. Видите HTML файл? Открывайте его и смотрите все ли хорошо.

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

Добавление карты.

Как работать с программой локально будет отдельная статья. А теперь нам нужно полученный результат выгрузить в интернет. Чтобы с сайта пользоваться полученной картой. Зная что меня будут читать люди, которые с небольшой паранойей относятся к своим супер секретным картам, хочу сразу же оговориться. Ваших карт кроме вас никто и никогда не увидит. Если конечно вы этого сами не захотите. Вся система программы устроена так что ваши данные хранятся только на вашем компьютере, и более того только в том браузере в котором вы все настроите. Если вы откроете сайт в другом браузере, то он будет девственно чист. Все настройки конечно можно синхронизировать с внешней базой данных, но для этого нужно совершить определенные действия, а просто так ничего ни куда не отсылается. Убедил? Тогда идем дальше. Не убедил? Чтож, ждите статьи как работать локально и с выключенным интеренетом. А мы пока движемся дальше.

Чтобы добавить карту в программу вам нужно как минимум прочитать эту статью: http://kartofan-blog.blogspot.ru/2013/12/blog-post_28.html

Прочитали? Хорошо. Если нет - идите читайте. Никто не говорил что будет легко. Просто? Да. Но не легко. По крайней мере в первый раз.

Теперь чтобы работать с картой нам нужно получить ссылку вида ТРУЛЯЛЯ/{z}/{x}/{y}.png

Для этого идем в нашу получившуюся папку в которой видем подпапки типа Z10, Z11 и т.п. В этих папках и лежат наши кусочки карт.

Их нужно закачать в интернет.

Самый-самый простой способ это сделать - установить программу Dropbox (на самом деле подойдет любой сервис который может отдавать прямые ссылки).

Идите сюда - https://www.dropbox.com/install и следуйте всем инструкциям.

Установили? Отлично.

На компьютере теперь где-то у вас есть папка Dropbox. Ищите ее. В принципе во время установки она должна будет открыться.

ОБЯЗАТЕЛЬНО находите в ней папку Public. Эта папка по умолчанию открыта на весь интернет.

Создавайте в ней какую-то папку. Лучше назвать ее латинскими буквами и без пробелов. Но это только для красоты, можете называть как угодно.

Кладите туда те папочки с буквой Z и цифрой которые получились на прошлом этапе. Эти папки сразу будут у вас закачиваться на ваш аккаунт Dropbox. Прелесть данного подхода в том что эти файлы теперь всегда будут у вас доступны как локально в этой папке, так и из интернета, отовсюду.

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

Выбираете пункт "Копировать общею ссылку"

Теперь у вас в буфере обмена ссылка с которой будем работать. Вставьте ее в какой-нибудь текстовый редактор.

Получилось что-то типа: https://dl.dropboxusercontent.com/u/какие-то цифры/папка что вы создали/Z какая-то цифра/цифра раз/цифра два.png

В этой строке меняете:
  • Z какая-то цифра -> Z{z}
  • цифра раз -> {y}
  • цифра два -> {x}
И получается что-то типа:

https://dl.dropboxusercontent.com/u/какие-то цифры/папка что вы создали/Z{z}/{y}/{x}.png

Все, теперь эту строку можно использовать в добавлении карты. И когда все это дело загрузится в интеренет можно будет полноценно работать.

CRS ставьте EPSG3857.Ext - в будущем когда будет коррекция привязки на лету пригодится.

Заключение

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

1 комментарий: