
TileMill — это инструмент для картографов, позволяющий быстро и просто создавать и оформлять карты для веба, используя разные источники данных. Он создан на основе Mapnik, мощной библиотеки с открытым исходным кодом. TileMill не является картографическим инструментом общего назначения, он предназначен для решения узкого набора задач.
Принцип работы TileMill очень прост. Вы импортируете свои векторные данные в студию. TileMill поддерживает ESRI shapefiles, KML, GeoJSON, GeoTIFF и, с недавних пор, заявлена поддержка PostGIS. Оформляете всё это с помощью CSS подобного языка Carto и экспортируете в один из форматов (PNG, PDF или MBTiles).
Возможности
- Доступ к данным из локальных источников или посредством Amazon S3
- Управление слоями карты (shape, растры)
- Редактирование таблицы стилей прямо в браузере либо во внешнем редакторе (например в vim)
- Предварительный просмотр карты при редактировании таблицы стилей
- Просмотр атрибутивной таблицы геопространственных данных
- Экспорт данных в форматы PNG, PDF и MBTiles.
За подробностями приглашаю под кат.
Системные требования
- Клиент
- Проверено: Chrome 6+, Firefox 3+, IE8+
- Может работать в Opera 11
- Сервер
- Проверено: Mac OS X 10.6, Ubuntu 10.10, Gentoo
- Минимум 2 Гб оперативной памяти
- Может работать с другими POSIX-совместимыми системами
Mapnik
Mapnik — открытая библиотека для рендеринга растровых карт из векторных данных. Она была разработана для проекта OpenStreetMap нашим соотечественником Артемом Павленко, и сегодня используется многими ресурсами, среди которых стоит отметить российские Космоснимки. Эту библиотеку также используют проекты OpenStreetMap и MapQuest для некоторых из своих карт. Mapnik написан на C++ и Python. Использует библиотеку AGG и дает возможность сглаживать объекты на карте с субпиксельной точностью. Поддерживает ESRI shapefiles, PostGIS, растры TIFF, файлы .osm, а также любые форматы GDAL и OGR. Пакеты доступны для большинства дистрибутивов Linux, бинарные файлы доступны для Mac OS X и Windows.
Установка Mapnik
svn checkout -r 2898 svn.mapnik.org/trunk mapnik2
cd mapnik2
python scons/scons.py configure
python scons/scons.py
sudo python scons/scons.py install
Немного о картографии
Для тех, кто знаком с ГИС или картографией, сразу скажу, что карты в TileMill всегда проецируются в Web Mercator (EPSG: 900913). Эту проекцию также используют Microsoft Bing Maps, Google Maps и ESRI ArcGIS Online.
Широко распространён формат системы пространственной привязки данных proj4 SRS (spatial referencing system). Эта система предоставляет возможность описать проекцию и систему координат источника данных одной записью — строкой SRS (SRS string). Например, строка SRS, описывающая WGS84, выглядит примерно так:
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
В большинстве случаев, TileMill может определить SRS загружаемых shape-файлов и других источников данных. Но иногда может потребоваться указать SRS самостоятельно, в случае когда TileMill не сможет её определить самостоятельно.
Что такое тайлы?

Тайл — это растровое изображение формата PNG/JPEG размером 256x256 пикселей.
TileMill поддерживает разные уровни представления. Уровень представления — это предустановленный масштаб отображения карты. OpenStreetMap, Google Maps и другие картографические веб-сервисы предоставляют тайлы размером 256x256 пикселей на нулевом уровне представления и удваивают размеры на каждом последующем уровне. Например: на нулевом уровне представления, виден весь мир, на шестом уровне — страна средних размеров, на одинадцатом — мегаполис. На шестнадцатом уровне можно увидеть отдельные дома.
Кроме того, TileMill поддерживает экспорт карт в формат MBTiles. Этот формат был разработан специально для хранения карт и возможности доступа к ним как онлайн так и оффлайн.
MBTiles
MBtiles — это спецификация для хранения нарезанных на тайлы карт в СУБД SQLite с возможностью мгновенной отдачи. Подобный формат данных позволяет переносить тысячи, сотни тысяч и даже миллионы тайлов в одном файле.
Скорость отдачи MBTiles выше чем скорость отдачи миллионов отдельных тайлов, при загрузке на USB, мобильные устройства, или при передаче по сети. Разница, в скорости, между доступом к базе данных или файловой системе, при использовании MBTiles — незначительна.
Так как MBTiles используют встраиваемую СУБД SQLite, то они могут использоватся без соединения с Интернетом.
Тайлы хранятся как BLOB (Binary Large OBjects — формат хранения больших обьемов двоичных данных), следовательно, могут быть использованы в большинстве SQLite клиентах.
Установка TileMill
Исходный код TileMill доступен на Github.
git://github.com/mapbox/tilemill.git
cd tilemill
./ndistro
Запускаем
./tilemill.js
. Теперь запускаем браузер, по-умолчанию TileMill должен быть доступен по адресу localhost:8889
.Обзор интерфейса
Перейдя по ссылке
localhost:8889
вам будет доступен набор предустановленных проектов. Выбрав один из них, вы перейдёте на страницу редактирования.
- Панель инструментов
- Карта
- Список слоев
- Выбор шрифтов и палитра цветов
- Редактор кода

Панель инструментов
- Настройки
- Имя проекта
- Сохранить проект
- Экспорт
- Настройки проекта
- Закрыть проект

Интерфейс карты
- Карта
- Масштаб
- Развернуть на полный экран

Список слоёв
- Добавить слой
- Изменение порядка слоёв
- Иконка геометрии слоя
- Идентификаторы и классы
- Просмотр атрибутивной таблица слоя
- Редактировать слой
- Удалить слой

Просмотр атрибутивной таблицы

Редактор стилей
- Активная вкладка
- Удалить стиль
- Не активные вкладки
- Создать новый стиль
- Справка по синтаксисису MSS
- Номера строк
- Область текста
Пример использования Carto
Carto — это CSS подобный язык для оформления карт, используемый в TileMill. Следующий код устанавливает цвет и размеры для линий слоя с идентификатором layer и добавляет к нему свойство glow.
#layer {
line-color: #C00;
line-width: 1;
}
#layer::glow {
line-color: #0AF;
line-opacity: 0.5;
line-width: 4;
}

Вот что мы получим в итоге.
Итог
Топик вышел объёмный, а мне всё ещё есть о чём рассказать. Если вас заинтересовала эта статья, то я могу продолжить и рассмотреть TileMill подробнее. Кроме того, есть ещё один продукт, который используется в связке с TileMill — это TileStream. Имеет смысл рассмотреть и его тоже. Спасибо за внимание.
Полезные ссылки
- Официальный сайт
- Исходный код
- MapBox
- Команда разработчиков
- GIS Lab — Российское сообщество ГИС
- Космоснимки
- Mapnik
- Обзор возможностей (видео)
- MBTiles
- Carto
P.S: Вы можете найти поддержу на IRC канале #mapbox в сети Freenode.
P.P.S: К сожалению, я не нашел близкий по тематике блог, поэтому разместил в open source. Насколько я помню, пару раз на Хабре поднималась тема о создании блога посвященного ГИС. Судя по опросу, это интересно читателям. Может быть, после этого топика, НЛО заинтересуется ГИС?
UPDATE: продолжение здесь.