Используем программу MapTiler для подготовки тайлов для Google Maps

В этой заметке я расскажу, как можно использовать программу MapTiler для подготовки тайлов для создания собственной карты, с использованием API Google Maps.

На блоге я уже рассматривал тему о создании собственной карты, смотри здесь.

В частности в статье «Создание собственных карт с использованием API Google Maps».

И для подготовки тайлов, в упомянутой заметке, использовался сервис Gmap Uploader.

Подготовить набор тайлов можно с помощью программы MapTiler, скачать ее можно с сайта программы

.

В данный момент доступна беттта-версия программы для различных операционных систем (Microsoft Windows, Mac OS X Leopard (10.5), Snow Leopard (10.6), Ubuntu / Debian Linux).

И так в начале нам нужно загрузить и установить программу MapTiler.

После этого необходимо подготовить растровый файл с изображением будущей карты.

MapTiler поддерживает большинство распространенных растровых форматов: TIFF/GeoTIFF, MrSID, ECW, JPEG2000, Erdas HFA, NOAA BSB, JPEG.

Для использования в программе, растр должен иметь географическую привязку, т. е. определенное соответствие между пиксельными координатами на изображении и географическими координатами карты.

Для осуществления привязки можно воспользоваться различными ГИС-программами, ка платными, так и бесплатными.

Приведу несколько вариантов использования бесплатных программ:

1. Google Earth (Планета Земля) — можно наложить растровое изображение так, чтобы оно максимально совпадало с космоснимком и сохранить полученные координаты в KML-файл. Недостаток — низкая точность привязки.

2. Программа QGIS — загрузить можно с официального сайта или с помощью установщика OSGeo4W (описание установки Установка QGIS/GRASS с помощью OSGeo4W.

Пошаговый процесс описан в статье «Географическая привязка данных в QGIS».

3. Библиотека GDAL Процесс привязки описан в статье «Использование GDAL для привязки растровых материалов».

После процедуры привязки, мы имеем растровый файл в формате geo-tif, который включает в себя информацию о привязке или растровый файл с отдельным файлом привязки в формате Arcview (world-файл) , *.tab OziExplorer.

Запускаем программу MapTiler.

Выбираем метод генерации Google Maps compatible.

Затем нажимаем Continue и переходим к следующему окну, в котором мы должны выбрать нужный нам растровый файл.

Если файл уже привязан, то кнопку Georeference нажимать не нужно, мы переходим сразу к Continue. Для того, чтобы сделать прозрачную подложку растру (ставим галочку Set transparency for a color (NODATA).

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

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

В следующем окне можно выбрать минимальный и максимальный масштаб и формат выходной мозаики (png с прозрачностью или jpg без прозрачности). ВНИМАНИЕ: если мышкой выбрать формат не получается, нажмите «стрелку вниз» на клавиатуре.

Далее нужно выбрать каталог, куда будут сохраняться тайлы

Следущий этап — указать какие файлы генерировать, выбираем Google Maps и нажимаем Continue.

Далее вводим данные для карты.

Определяем только название карты, остальное нам не нужно. Название лучше задать латиницей.

В следующем окне мы нажимаем на кнопку  Render и запускаем процесс создания файлов.

Через некоторое время, если все прошло успешно, то мы увидим сообщение

Нажимаем по ссылке и переходим в папку с файлами.

Открываем файл googlemaps.html в браузере и наблюдаем нашу карту.

Посмотреть пример в действии.

Код файла googlemaps.html использует API Google Maps версии 2, если Вы хотите иметь возможность работать с API Google Maps версии 3 смотрите код из другого примера.

Пример с API Google Maps версии 3

Для того, чтобы адаптировать пример для Вашей карты нужно сделать два исправления в файле maptiler-gmapv3.html

Определить область mapBounds взяв данные из строки файла googlemaps.html

var mapBounds = new GLatLngBounds(new GLatLng(56.4642211211, 43.5215637534), new GLatLng(56.5461210069, 43.6229738095));

и подставив соответствующие значения координатат в строки файла maptiler-gmapv3.html

var mapBounds = new google.maps.LatLngBounds(
	new google.maps.LatLng(56.4642211211, 43.5215637534),
	new google.maps.LatLng(56.5461210069, 43.6229738095));

Определить минимальный и максимальный уровень масштаба

Значения из строк файла googlemaps.html

var mapMinZoom = 11;
var mapMaxZoom = 14;

В стоки файла maptiler-gmapv3.html

var mapMinZoom = 11;
var mapMaxZoom = 14;

Следуя принцыпу лучще один раз увидеть, чем сто раз прочитать я записал два видео, которые помогут Вам разобраться с программой MapTiler.

1. Процесс географическая привязки данных в QGIS.

2. Работаем с программой MapTiler подготовки тайлов для создания собственной карты с помощью API Google Maps.

  • Гость: Можете перезалить файл отсюда http://help.maptiler.org/betatest/ , к себе на сайт либо на файлообменник? У меня не открывает эту страницу
  • Гость: <a href="http://webmap-blog.ru/files/soft/maptiler-1.0-beta2-setup.exe" rel="nofollow">maptiler-1.0-beta2-setup.exe</a>
  • Гость: а можно полный исходник с api v3? не получается. наложеная карта пропадает
  • Гость: <a href="http://webmap-blog.ru/files/gmap/balmap3.zip" rel="nofollow">Файл</a> с полным архивом проекта
  • Гость: где-бы точки не прописывал бы, постоянно пишет: Не удалось рассчитать трансформацию по контрольным точкам. Данная трансформация неразрешима. 16384x16384 QGIS: 1.7.0
  • Гость: вообще привязка мне и не нужна. Нужно просто нарезать на тайлы, но к сожалению gmapuploader и яндекс-програмуля не подходят из за порчи изображения при ресайзе. В принципе можно уменьшать вручную и резать яндексом, но хотелось бы чтоб всё автоматом.
  • Гость: хотя если в самом начале выбрать Image Based Tiles (Raster) можно и без привязки
  • Гость: Подскажыте как сделать новый тип карты на котором отображалось только мои тайли без гугловских. Примерно как в Gmap Uploader.
  • Гость: Нужно создать свой тип карты и показывать только его. <a href="http://webmap-blog.ru/files/gmap/balmap3/mt-1.html" rel="nofollow">Пример реализации</a>
  • Гость: Сергей, подскажите пожалуйста: заряжаю в qgis jpg карты размером 28420х30000 (по ходу макс.по размеру, который можна засунуть в jpg из photoshop, размер скажу, на пределе желаемого качества). запускаю по видеинструкции, генерируется .tif, но на 60% ее размер доходит до 4 гиг и я получаю ошибку. то есть до сжатия lzw процесс не доходит как изменить параметры выходного файла .tiff, например чтоб результат формировался в 8бит (графика на карте не пострадает, главное детализация для меня)?
  • Гость: Сразу ответить не могу, надо подумать пару дней.
  • Гость: Очень хорошая статья, но это именно для создания собственной карты. А если необходимо просто выложить собственное изображение на карту, то для этого используем Overlay. Например, есть на сайте http://innovation.org.ru/instan_param_sevastopol.php спутниковая карта Google Maps, на которой в качестве overlay используется собственное изображение средствами API. Все хорошо работает. Но теперь встала задача сделать то же самое, то есть overlay но на другую область карты, а именно на Северный полюс. И вот здесь встал очень, как оказалось, сложный вопрос - как задать район Северного полюса на карте и положить на него изображение? Заранее благодарна за ответ