Как стать автором
Обновить

TileMill — картографическая дизайн студия

Время на прочтение 4 мин
Количество просмотров 20K
image

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 не сможет её определить самостоятельно.

Что такое тайлы?

image
Тайл — это растровое изображение формата 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 вам будет доступен набор предустановленных проектов. Выбрав один из них, вы перейдёте на страницу редактирования.

image
  1. Панель инструментов
  2. Карта
  3. Список слоев
  4. Выбор шрифтов и палитра цветов
  5. Редактор кода



image
Панель инструментов
  1. Настройки
  2. Имя проекта
  3. Сохранить проект
  4. Экспорт
  5. Настройки проекта
  6. Закрыть проект



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



image
Список слоёв
  1. Добавить слой
  2. Изменение порядка слоёв
  3. Иконка геометрии слоя
  4. Идентификаторы и классы
  5. Просмотр атрибутивной таблица слоя
  6. Редактировать слой
  7. Удалить слой



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

image
Редактор стилей
  1. Активная вкладка
  2. Удалить стиль
  3. Не активные вкладки
  4. Создать новый стиль
  5. Справка по синтаксисису MSS
  6. Номера строк
  7. Область текста



Пример использования 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;
}


image
Вот что мы получим в итоге.

Итог


Топик вышел объёмный, а мне всё ещё есть о чём рассказать. Если вас заинтересовала эта статья, то я могу продолжить и рассмотреть TileMill подробнее. Кроме того, есть ещё один продукт, который используется в связке с TileMill — это TileStream. Имеет смысл рассмотреть и его тоже. Спасибо за внимание.

Полезные ссылки

  1. Официальный сайт
  2. Исходный код
  3. MapBox
  4. Команда разработчиков
  5. GIS Lab — Российское сообщество ГИС
  6. Космоснимки
  7. Mapnik
  8. Обзор возможностей (видео)
  9. MBTiles
  10. Carto


P.S: Вы можете найти поддержу на IRC канале #mapbox в сети Freenode.

P.P.S: К сожалению, я не нашел близкий по тематике блог, поэтому разместил в open source. Насколько я помню, пару раз на Хабре поднималась тема о создании блога посвященного ГИС. Судя по опросу, это интересно читателям. Может быть, после этого топика, НЛО заинтересуется ГИС?

UPDATE: продолжение здесь.
Теги:
Хабы:
+51
Комментарии 17
Комментарии Комментарии 17

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн