Используем программу 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 Автор записи

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

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

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