6 июня 2011 в 18:32

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

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: продолжение здесь.
Степан Кузьмин @kuser
карма
33,0
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (13)

  • 0
    Вы молодцы! Не просто рисовальщики, а действительно дизайнеры! Жму руку, отличные интерфейсы!
    • 0
      Это не моя разработка. Все благодарности отправляйте команде Development Seed.
      • 0
        Хорошо ;)
  • +2
    Я целую страну выдумал! Тилимилитрямдия (с)
  • 0
    Супер! не то что вовремя, а супер-вовремя!
  • 0
    Можно от ньюба вопрос? А что использует wikimapia, если не mapnik?
    И 2Gb памяти на сервере — это не очень круто?
    • 0
      Честно говоря, я точно не знаю что использует Wikimapia. Кроме Mapnik довольно распространены такие open source решения, как GeoServer и MapServer.

      Памяти не может быть «много» :) TileStream, о котором я хочу рассказать в следующей статье, просит как минимум 613MB памяти.
    • +1
      Wikimapia использует свой рендер.

      Всё зависит от количества данных, которые вы хотите визуализировать и посещаемости :) Но имхо это даже для начала будет мало.
  • 0
    А вы напишите НЛО.
    • 0
      А это мысль!
  • 0
    Очень и очень круто, спасибо огромное за наводку. Жалко, что нельзя напрямую рендерить еще и .osm файлы (Mapnik вообще-то умеет это делать).
  • 0
    Блин, мега-мощная система! Даже интересно просто в исходниках покопаться — толково все сделано!
  • 0
    Очень хочется выгрузить оттуда osm.xml чтобы заюзать в мапнике. Подскажите, как это сделать

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