Создание тайлового сервера на основе данных OpenStreetMap и mod tile: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
мНет описания правки
мНет описания правки
Строка 15: Строка 15:


Если в качестве операционной системы вы планируете использовать Debian или Ubuntu, то вам лучше обратиться к [http://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/ инструкции] по развертыванию тайлового сервера для данных операционных систем из пакетов. На том же ресурсе имеется [http://switch2osm.org/serving-tiles/manually-building-a-tile-server-12-04/ инструкция] как развернуть тайловый сервер на Ubuntu (Debian) из исходных кодов. В случае же если ваша операционная система отличается от вышеназванных, то полностью следовать описанным в них шагам не получится, так как некоторые из них довольно Debian-специфичны. Вот тут, возможно, и пригодится вам данная статья.
Если в качестве операционной системы вы планируете использовать Debian или Ubuntu, то вам лучше обратиться к [http://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/ инструкции] по развертыванию тайлового сервера для данных операционных систем из пакетов. На том же ресурсе имеется [http://switch2osm.org/serving-tiles/manually-building-a-tile-server-12-04/ инструкция] как развернуть тайловый сервер на Ubuntu (Debian) из исходных кодов. В случае же если ваша операционная система отличается от вышеназванных, то полностью следовать описанным в них шагам не получится, так как некоторые из них довольно Debian-специфичны. Вот тут, возможно, и пригодится вам данная статья.
== Установка программного обеспечения ==
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.
=== Подключение необходимых репозиториев ===
Подключаем репозиторий EPEL 6:
<pre>yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</pre>
Подключаем репозиторий с PostgreSQL:
<pre>yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm</pre>
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:
<pre>exclude=postgresql*</pre>
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.

Версия от 19:53, 9 июля 2014

Эта страница является черновиком статьи.


Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.

Введение

На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов OpenStreetMap. Такая популярность данной подложки обусловлена во-первых политикой предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.

Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.

Стек программных продуктов тайлового сервера openstreetmap.org

Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. mod_tile - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). renderd представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. Mapnik - рендерер, используемый renderd. osm2pgsql - инструмент загрузки исходных данных OpenStreetMap в базу данных PostgreSQL/PostGIS.

Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.

Если в качестве операционной системы вы планируете использовать Debian или Ubuntu, то вам лучше обратиться к инструкции по развертыванию тайлового сервера для данных операционных систем из пакетов. На том же ресурсе имеется инструкция как развернуть тайловый сервер на Ubuntu (Debian) из исходных кодов. В случае же если ваша операционная система отличается от вышеназванных, то полностью следовать описанным в них шагам не получится, так как некоторые из них довольно Debian-специфичны. Вот тут, возможно, и пригодится вам данная статья.

Установка программного обеспечения

В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в RPM-пакеты. Для их удобной установки нами был организован тестовый репозиторий. Как его подключить и работать с ним будет рассмотрено далее.

Подключение необходимых репозиториев

Подключаем репозиторий EPEL 6:

yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Подключаем репозиторий с PostgreSQL:

yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

В файле конфигурации стандартного репозитория, раположенного по адресу /etc/yum.repos.d/CentOS-Base.repo в секции [base] и [updates] добавьте строку:

exclude=postgresql*

Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте файл в директорию /etc/yum.repos.d/.