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

Автор: | 26.06.2011

В этой заметке я расскажу, как можно использовать программу 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.

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

  1. Николай

    где-бы точки не прописывал бы, постоянно пишет:
    Не удалось рассчитать трансформацию по контрольным точкам. Данная трансформация неразрешима.
    16384×16384
    QGIS: 1.7.0

  2. Николай

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

  3. Николай

    хотя если в самом начале выбрать Image Based Tiles (Raster)
    можно и без привязки

  4. Ярослав

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

  5. Андрей

    Сергей, подскажите пожалуйста:
    заряжаю в qgis jpg карты размером 28420х30000 (по ходу макс.по размеру, который можна засунуть в jpg из photoshop, размер скажу, на пределе желаемого качества).
    запускаю по видеинструкции, генерируется .tif, но на 60% ее размер доходит до 4 гиг и я получаю ошибку. то есть до сжатия lzw процесс не доходит

    как изменить параметры выходного файла .tiff, например чтоб результат формировался в 8бит (графика на карте не пострадает, главное детализация для меня)?

    1. admin Автор записи

      Сразу ответить не могу, надо подумать пару дней.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *