<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.gis-lab.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Denis+Rykov</id>
	<title>GIS-Lab - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gis-lab.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Denis+Rykov"/>
	<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/w/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Denis_Rykov"/>
	<updated>2026-04-28T16:01:53Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D0%B1%D0%BE%D1%80_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_nextgis.com:_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9&amp;diff=25861</id>
		<title>Полевой сбор данных через nextgis.com: простой сценарий</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D0%B1%D0%BE%D1%80_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_nextgis.com:_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9&amp;diff=25861"/>
		<updated>2018-03-10T11:02:53Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Пример использования платформы NextGIS для сбора данных в поле}}&lt;br /&gt;
&lt;br /&gt;
Это статья описывает конкретную технологию сбора полевых данных. Статья исходит из следующих предпосылок относительно читателя:&lt;br /&gt;
&lt;br /&gt;
* Читатель знает, что он собирает и какие параметры объектов ему нужны. Статья не ставит целью научить правильно собирать встречи волка или описывать рекламные конструкции.&lt;br /&gt;
* Читатель заинтересован в максимально быстром, но в том же время полностью лишенном файловых манипуляций процессе. Разумеется, у технологии сбора данных есть масса возможных вариантов, расширяющих её возможности. О них мы расскажем в следующих статьях.&lt;br /&gt;
* Читатель имеет базовые знания в области геоданных и знает, например, чем отличается полигон от линии и что такое атрибуты.&lt;br /&gt;
&lt;br /&gt;
Концептуально полевой сбор данных очень прост и состоит из следующих шагов:&lt;br /&gt;
&lt;br /&gt;
# Завести место, куда будут автоматически стекаться собранные данные (потому что помните? &amp;quot;лишенный файловых манипуляций процесс!&amp;quot;)&lt;br /&gt;
# Придумать, что собираем&lt;br /&gt;
# Выйти в поле с устройством и начать собственно сбор&lt;br /&gt;
&lt;br /&gt;
Шаги 2 и 3 можно делать прямо в поле, а вот 1 лучше дома, хотя если вы привыкли к мобильному браузеру и у вас с собой почта, то тоже можно в поле.&lt;br /&gt;
&lt;br /&gt;
Разберём подробнее как это работает.&lt;br /&gt;
&lt;br /&gt;
{{NextGIS}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nextgis field 04.png|500px|thumb|center|Сотрудники Проекта ИПЭЭ РАН «Исследование популяционной структуры волков Северо-Западного Прикаспия и влияние волков на популяцию сайгаков» за работой]]&lt;br /&gt;
&lt;br /&gt;
== Шаг 1. Зарегистрироваться на nextgis.com и создать Веб ГИС ==&lt;br /&gt;
В качестве хранилища данных будет выступать облачная Веб ГИС nextgis.com ([http://nextgis.ru/nextgis-com/ подробнее о Веб ГИС]). Веб ГИС - это универсальная платформа для геоданных, которая умеет очень много всего. Управлять Веб ГИС можно через браузер. Для этой статьи мы будем использовать только одну её функцию - хранение данных.&lt;br /&gt;
&lt;br /&gt;
Подробно процесс регистрации и создания Веб ГИС описан в статье [http://gis-lab.info/qa/nextgiscom.html Создание Веб ГИС на nextgis.com]. В этой статье так же можно почерпнуть подробности по использованию других функций Веб ГИС.&lt;br /&gt;
&lt;br /&gt;
После того как у вас появилось красивое имя, такое как, например: [http://maxim.nextgis.com maxim.nextgis.com], можно переходить к следующим шагам.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nextgis field 01.png|500px|thumb|center|Общий вид Веб ГИС с данными (если вы только начали, у вас их пока нет)]]&lt;br /&gt;
&lt;br /&gt;
== Шаг 2. Скачиваем и устанавливаем NextGIS Mobile ==&lt;br /&gt;
[http://nextgis.ru/nextgis-mobile/ NextGIS Mobile] это мобильная ГИС - приложение, которое может работать как поставщик данных для вашей Веб ГИС, синхронизируя их по мере возможности.&lt;br /&gt;
&lt;br /&gt;
Приложение можно установить через [https://play.google.com/store/apps/details?id=com.nextgis.mobile Google Play].&lt;br /&gt;
&lt;br /&gt;
По приложению доступна подробная [http://docs.nextgis.ru/docs_ngmobile/source/toc.html документация]. В этой статье мы повторим основные шаги.&lt;br /&gt;
&lt;br /&gt;
== Шаг 3. Собираем данных! ==&lt;br /&gt;
&lt;br /&gt;
Этот и следующий шаг легко поменять местами, в зависимости от того как вам удобнее. Данные можно сначала собрать, а потом отправить в облако. А можно наоборот, сначала подключить пустой пока слой к облаку, а уже потом собирать данные. Порядок значения не имеет. Важно, что так или иначе, отправлять слой в Веб ГИС нужно только один раз. Когда вы решите пособирать данные на следующий день, если вы не удалили слой, он уже будет стоять на синхронизации.&lt;br /&gt;
&lt;br /&gt;
=== Создать новый слой ===&lt;br /&gt;
Откройте список слоёв, нажмите кнопку + (добавить) и выберите Создать слой. &lt;br /&gt;
&lt;br /&gt;
Следующее окно служит для создания нового слоя. &lt;br /&gt;
&lt;br /&gt;
Примечание: ничего не мешает вам начать сбор данных без создания нового слоя. NextGIS Mobile идет с несколькими предустановленными слоями, которые можно использовать. Однако перечень атрибутов объектов в них очень ограничен.&lt;br /&gt;
&lt;br /&gt;
Введите имя слоя и набор полей, соответствующих структуре данных. Названия полей лучше вводить латиницей.&lt;br /&gt;
&lt;br /&gt;
Для каждого поля нужно выбрать тип значений.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nextgis field 02.png|390px|thumb|center|Создание слоя и параметров объектов (атрибутов)]]&lt;br /&gt;
&lt;br /&gt;
=== Собираем данные ===&lt;br /&gt;
&lt;br /&gt;
Сбор данных - это создание объектов в определенных слоях. Создание объекта в ГИС включает создание геометрии и создание связанных с ней атрибутов.&lt;br /&gt;
&lt;br /&gt;
Сначала вы ставите точку (рисуете линию или полигон), потом заполняете её атрибуты.&lt;br /&gt;
&lt;br /&gt;
Приведем здесь просто перечень шагов без перечисления всех нюансов. Чтобы создать точку, нужно:&lt;br /&gt;
&lt;br /&gt;
#Нажать на большую синюю кнопку&lt;br /&gt;
#Выбрать карандаш (редактирование)&lt;br /&gt;
#Выбрать слой для редактирования (если их несколько, если он один, он автоматически включится на редактирование)&lt;br /&gt;
#Нажать +, добавится точка&lt;br /&gt;
#Подвинуть её если нужно&lt;br /&gt;
#Нажать на дискету (сохранить)&lt;br /&gt;
#Появится окно для ввода атрибутов, заполнить их, если нужно&lt;br /&gt;
#Нажать галочку (завершить редактирование объекта)&lt;br /&gt;
&lt;br /&gt;
Подробно процесс редактирования расписан в [http://docs.nextgis.ru/docs_ngmobile/source/editing.html официальной документации].&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nextgis field 03.png|390px|thumb|center|Создание объекта на карте]]&lt;br /&gt;
&lt;br /&gt;
== Шаг 4. Отправляем слой в свою Веб ГИС ==&lt;br /&gt;
Данные собраны и мы готовы залить их в облако.&lt;br /&gt;
&lt;br /&gt;
Открываем список слоёв и в меню слоя (оно вызывается по нажатию на троеточие) выбираем Отправить в NextGIS.&lt;br /&gt;
&lt;br /&gt;
Так как вы только начинаете, список Веб ГИС куда можно отправить данные будет пуст и вам нужно нажать &amp;quot;Добавить Веб ГИС&amp;quot;, где ввести имя её домена (только часть до .nextgis.com) и имя/пароль пользователя имеющего права на создание ресурсов (администратора или другого пользователя с соответствующими правами).&lt;br /&gt;
&lt;br /&gt;
После создания соединения, присоединенную Веб ГИС нужно просто выбрать в списке и выбрать в ней место куда вы хотели бы положить свой слой. Нажать Добавить.&lt;br /&gt;
&lt;br /&gt;
После успешного появления слоя в Веб ГИС (это можно проверить просто зайдя в Веб ГИС через браузер и убедившись, что слой там появился), можно создавать новые точки, он будут автоматически отправляться в Веб ГИС. Добавляемые таким образом слои автоматически &amp;quot;встают&amp;quot; на синхронизацию. Частоту синхронизации можно изменить в настройках слоя.&lt;br /&gt;
&lt;br /&gt;
== Шаг 5. Поделитесь слоем с коллегами ==&lt;br /&gt;
&lt;br /&gt;
Не обязательный шаг, но допустим вы хотите разрешить редактировать свой набор данных другим.&lt;br /&gt;
&lt;br /&gt;
Чтобы это сделать, зайдите в панель управления своей Веб ГИС в браузере под администратором, создайте пользователей и добавьте их в группу редакторы. Раздайте созданные учетные записи коллегам.&lt;br /&gt;
&lt;br /&gt;
Новый пользователь должен будет повторить шаги по загрузке и установке NextGIS Mobile, но вместо создания слоя, ему нужно сказать Добавить/Добавить из Веб ГИС и ввести параметры учетной записи которую вы для него создали. Пользователь сможет добавить созданный вами слой со всей информацией и продолжить наполнять его данными вместе с вами и другими пользователями.&lt;br /&gt;
&lt;br /&gt;
== Цена вопроса ==&lt;br /&gt;
Всё необходимое для реализации описанного подхода, своя Веб ГИС, ПО NextGIS Mobile и т.д. доступно бесплатно. Вы можете начать ей пользоваться прямо сейчас.&lt;br /&gt;
&lt;br /&gt;
Однако, и у Веб ГИС и у мобильного приложения есть ряд продвинутых функций недоступных на ознакомительном плане. Ознакомиться с перечнем дополнительных возможностей можно на [http://nextgis.ru/nextgis-com/plans странице планов].&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
В статье разобран самый простой способ организовать удобный сбор данных не требующий никаких файловых манипуляций. &lt;br /&gt;
&lt;br /&gt;
Дальше собранные данные можно положить на веб-карты, выгрузить в Excel, проанализировать и многое другое. Используются для этого как механизмы Веб ГИС, так и приложений с ней связанных (NextGIS Mobile, QGIS и других). О них можно прочитать в [http://gis-lab.info/qa/nextgiscom.html специальной статье] и [http://docs.nextgis.ru документации].&lt;br /&gt;
&lt;br /&gt;
У описанной технологии есть ряд различных улучшений, позволяющих, например использовать более красивые формы, о них мы расскажем в следующих статьях.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nextgis field 05.png|500px|thumb|center|Результаты сбора данных на автоматически обновляемой карте]]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23102</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23102"/>
		<updated>2015-11-18T05:23:36Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=51&amp;amp;t=20051 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Обновляемая онлайн-версия == &lt;br /&gt;
[http://gis-lab.info/docs/osgeo/ru/ '''Онлайн-версия'''] переведённой документации будет обновляться по мере перевода.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые),  &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 85 файлов, в работе: 17, готово: 50, свободно: 18.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| index.rst&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| overview.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/edits/overview.rst&lt;br /&gt;
| &lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/ru/overview/overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;  &lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
| download.rst&lt;br /&gt;
| https://raw.githubusercontent.com/amuriy/OSGeoLive-doc/master/en/download.rst&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23101</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23101"/>
		<updated>2015-11-18T05:14:28Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=51&amp;amp;t=20051 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Обновляемая онлайн-версия == &lt;br /&gt;
[http://gis-lab.info/docs/osgeo/ru/ '''Онлайн-версия'''] переведённой документации будет обновляться по мере перевода.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые),  &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 85 файлов, в работе: 17, готово: 50, свободно: 19.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| index.rst&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| overview.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/edits/overview.rst&lt;br /&gt;
| &lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/ru/overview/overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;  &lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
| download.rst&lt;br /&gt;
| https://raw.githubusercontent.com/amuriy/OSGeoLive-doc/master/en/download.rst&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23100</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23100"/>
		<updated>2015-11-18T05:12:21Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=51&amp;amp;t=20051 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Обновляемая онлайн-версия == &lt;br /&gt;
[http://gis-lab.info/docs/osgeo/ru/ '''Онлайн-версия'''] переведённой документации будет обновляться по мере перевода.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые),  &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 85 файлов, в работе: 17, готово: 50, свободно: 19.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| index.rst&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| overview.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/edits/overview.rst&lt;br /&gt;
| &lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/ru/overview/overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;  &lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
| download.rst&lt;br /&gt;
| https://raw.githubusercontent.com/amuriy/OSGeoLive-doc/master/en/download.rst&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23099</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23099"/>
		<updated>2015-11-18T05:11:39Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=51&amp;amp;t=20051 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Обновляемая онлайн-версия == &lt;br /&gt;
[http://gis-lab.info/docs/osgeo/ru/ '''Онлайн-версия'''] переведённой документации будет обновляться по мере перевода.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые),  &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 85 файлов, в работе: 11, готово: 50, свободно: 24.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| index.rst&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| overview.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/edits/overview.rst&lt;br /&gt;
| &lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/ru/overview/overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;  &lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
| download.rst&lt;br /&gt;
| https://raw.githubusercontent.com/amuriy/OSGeoLive-doc/master/en/download.rst&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23037</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=23037"/>
		<updated>2015-11-11T22:34:53Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Координационная таблица */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=3&amp;amp;t=11526&amp;amp;p=71535#p71479 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Обновляемая онлайн-версия == &lt;br /&gt;
[http://gis-lab.info/docs/osgeo/ru/ '''Онлайн-версия'''] переведённой документации будет обновляться по мере перевода.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые),  &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 83 файла, в работе: 18, готово: 32, свободно: 33.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| overview.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/edits/overview.rst&lt;br /&gt;
| &lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/ru/overview/overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----  style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot; &lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=2 Максим Дубинин]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----  style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|----&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=10486 Ariki]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8761 Andrey Zhukov]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=12787 ANAT01]&lt;br /&gt;
|----&lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:LightGreen&amp;quot;&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=22958</id>
		<title>Обновление перевода документации OSGeo Live</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live&amp;diff=22958"/>
		<updated>2015-11-03T02:15:14Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Координационная таблица */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О чём речь? ==&lt;br /&gt;
&lt;br /&gt;
[http://live.osgeo.org/ru/index.html OSGeo-Live] &amp;amp;mdash; LiveCD на базе Ubuntu Linux с большим набором открытых/свободных ГИС (в т.ч. веб), открытых геоданных и документацией. Используется в основном в образовательных или демонстрационных целях.&lt;br /&gt;
&lt;br /&gt;
Пользовательская документация на диске распространяется под свободной лицензией (CC BY 3.0 и CC BY-SA 3.0), представлена в виде набора веб-страниц. &lt;br /&gt;
В исходном виде документация OSGeo-Live представляет собой текстовые файлы с разметкой [http://ru.wikipedia.org/wiki/ReStructuredText reStructuredText].&lt;br /&gt;
&lt;br /&gt;
В 2012 г. в рамках подготовки к конференции &amp;quot;Открытые ГИС - 2012&amp;quot; документация [http://gis-lab.info/qa/osgeo-live-docs-coord.html была переведена] на русский язык.&lt;br /&gt;
&lt;br /&gt;
Цель данного мини-проекта &amp;amp;mdash; '''обновление''' русскоязычного перевода документации, которые значительно устарел. &lt;br /&gt;
Обновлённая документация появится на диске с OSGeo-Live 9.0, который будет раздаваться на конференции [http://gisconf.ru/ &amp;quot;Открытые ГИС 2015&amp;quot;]. Имена переводчиков будут (при их желании, естественно) увековечены в специальном файле ''translators.csv'' в следующем релизе OSGeo-Live.&lt;br /&gt;
&lt;br /&gt;
== Схема работы ==&lt;br /&gt;
# Файлы делятся на 2 типа: новые (которые ещё не были переведены) и устаревшие (которые надо поправить). Если колонка ''&amp;quot;рус. текст старый&amp;quot;'' пустая, то это новый файл, если не пустая - устаревший файл.     &lt;br /&gt;
# Выбрать (никем не занятые) файлы для перевода (где пусто в графе ''&amp;quot;кто делает&amp;quot;''). &lt;br /&gt;
# Сообщить, что берёте такой-то файл, в [http://gis-lab.info/forum/viewtopic.php?f=3&amp;amp;t=11526&amp;amp;p=71535#p71479 специальной теме] на форуме; скоро ваше имя появится в таблице (можно записаться и самостоятельно).       &lt;br /&gt;
# Скачать файл по ссылке в колонке ''&amp;quot;англ. текст новый&amp;quot; ''.&lt;br /&gt;
# Если файл новый, то надо просто перевести его, оставив имя файла таким же.&lt;br /&gt;
# Если файл устаревший, надо открыть ссылку в колонке ''&amp;quot;разница англ. текст старый/новый&amp;quot;'', там будет наглядно показана разница между текущей версией документа на англ. языке и старой его версией, которую переводили в 2012 г. Нужно скачать файл в колонке ''&amp;quot;рус. текст старый&amp;quot;'' и править его.&lt;br /&gt;
# При переводе желательно соблюдать правила, перечисленные ниже.&lt;br /&gt;
# Выложить переведённые файлы в той же теме на форуме или прислать в личном сообщении [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 координатору].&lt;br /&gt;
&lt;br /&gt;
'''Пожелание''': русский текст желательно присылать в кодировке UTF-8!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Просьба: прислать переводы желательно '''НЕ ПОЗДНЕЕ 16 ноября'''!&amp;lt;/big&amp;gt; Это связано с подготовкой к конференции &amp;quot;[http://gisconf.ru/ru/ Открытые ГИС - 2015]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Координационная таблица ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:Yellow&amp;quot;&amp;gt;Жёлтым&amp;lt;/span&amp;gt; цветом отмечены файлы, находящиеся в переводе (занятые), &amp;lt;span style=&amp;quot;background-color:Salmon&amp;quot;&amp;gt;красным&amp;lt;/span&amp;gt; цветом &amp;amp;mdash; переведённые файлы, &amp;lt;span style=&amp;quot;background-color:LightGreen&amp;quot;&amp;gt;зелёным&amp;lt;/span&amp;gt; &amp;amp;mdash; переведённые и отредактированные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Всего: 83 файла, в работе: 11, готово: 0, свободно: 72.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Выделение ячейки жёлтым  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Yellow&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки зелёным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:LightGreen&amp;quot;  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Выделение ячейки красным  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |- style=&amp;quot;background-color:Salmon&amp;quot;  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot; &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | имя файла&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | англ. текст новый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | разница англ. текст старый/новый  &lt;br /&gt;
! class=&amp;quot;head&amp;quot; | рус. текст старый&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | кто делает  &lt;br /&gt;
|----  style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
| mac_installers.rst&lt;br /&gt;
| http://gis-lab.info/docs/osgeo/update_2015/new/mac_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|metrics.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/metrics.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|sponsors.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12297@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst&amp;amp;amp;old=9149@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|sponsors_osgeo.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sponsors_osgeo.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10081@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst&amp;amp;amp;old=9974@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fsponsors_osgeo.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/sponsors_osgeo.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot; &lt;br /&gt;
|win_installers.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/win_installers.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=8430 Александр Мурый]&lt;br /&gt;
|----&lt;br /&gt;
|R_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/R_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12279@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst&amp;amp;amp;old=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2FR_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/R_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|cartaro_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|cesium_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomajas_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12025@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomajas_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomajas_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomoose_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeomoose_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geomoose_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonetwork_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12064@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgeonetwork_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/geonetwork_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonode_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|grass_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12322@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fgrass_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/grass_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|ipython_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|iris_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|josm_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/josm_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|jts_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/jts_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|leaflet_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12237@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst&amp;amp;amp;old=10725@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmapwindow_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/mapwindow_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12240@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fmarble_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/marble_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|netcdf_dataset_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/netcdf_dataset_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|openlayers_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12215@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst&amp;amp;amp;old=11374@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fopenlayers_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/openlayers_overview.rst&lt;br /&gt;
| [http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|otb_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12320@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fotb_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/otb_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pycsw_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12419@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fpycsw_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/pycsw_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pywps_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|qgis_mapserver_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_overview.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12278@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst&amp;amp;amp;old=11989@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Foverview%2Fqgis_mapserver_overview.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/overview/qgis_mapserver_overview.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|tilemill_overview.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_overview.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|52nSOS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nSOS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11984@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst&amp;amp;amp;old=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nSOS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nSOS_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|52nWPS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWPS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11624@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst&amp;amp;amp;old=10606@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWPS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWPS_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|52nWSS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/52nWSS_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2F52nWSS_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/52nWSS_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|IPython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/IPython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|cartaro_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cartaro_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|cesium_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/cesium_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|deegree_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/deegree_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12028@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst&amp;amp;amp;old=11685@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fdeegree_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/deegree_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|eoxserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/eoxserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11866@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst&amp;amp;amp;old=10819@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Feoxserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/eoxserver_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gdal_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gdal_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9908@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgdal_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gdal_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geokettle_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geokettle_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10557@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeokettle_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geokettle_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomajas_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomajas_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12026@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomajas_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomajas_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geomoose_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geomoose_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12009@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeomoose_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geomoose_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonetwork_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/geonetwork_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12307@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgeonetwork_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/geonetwork_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|geonode_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/geonode_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gmt_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gmt_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9730@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgmt_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gmt_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsdrive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsdrive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11315@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsdrive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsdrive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gpsprune_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gpsprune_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11871@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgpsprune_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gpsprune_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|grass_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/grass_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12264@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst&amp;amp;amp;old=12253@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgrass_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/grass_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|gvsig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/gvsig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11060@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fgvsig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/gvsig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|internationalisation_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/internationalisation_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11951@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Finternationalisation_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/internationalisation_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ipython_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ipython_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|iris_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/iris_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|leaflet_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/leaflet_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapfish_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapfish_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11351@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst&amp;amp;amp;old=9163@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapfish_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapfish_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapnik_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapnik_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11300@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst&amp;amp;amp;old=10835@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapnik_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapnik_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mapwindow_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mapwindow_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12125@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst&amp;amp;amp;old=10229@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmapwindow_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mapwindow_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|marble_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/marble_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12139@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmarble_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/marble_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|mb-system_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/mb-system_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10833@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fmb-system_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/mb-system_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ncWMS_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/ncWMS_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|opencpn_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/opencpn_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11774@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopencpn_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/opencpn_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|openlayers_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/openlayers_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12226@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fopenlayers_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/openlayers_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_install_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_install_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10736@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_install_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_install_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osgeolive_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osgeolive_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11771@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosgeolive_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osgeolive_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|osm_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/osm_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10267@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fosm_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/osm_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ossim_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ossim_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10841@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fossim_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ossim_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|otb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/otb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12357@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fotb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/otb_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|pgrouting_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pgrouting_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10527@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpgrouting_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pgrouting_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|postgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/postgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11134@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst&amp;amp;amp;old=10691@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpostgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/postgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pycsw_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/pycsw_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12418@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fpycsw_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/pycsw_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|pywps_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/pywps_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|qgis_mapserver_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_mapserver_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11941@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_mapserver_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_mapserver_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|qgis_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/qgis_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12407@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fqgis_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/qgis_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|rasdaman_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/rasdaman_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12199@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Frasdaman_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/rasdaman_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|saga_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/saga_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11959@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsaga_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/saga_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|sahana_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/sahana_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11378@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fsahana_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/sahana_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|spatialite_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/spatialite_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11777@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fspatialite_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/spatialite_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|tilemill_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/new/tilemill_quickstart.rst&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|---- style=&amp;quot;background-color:Yellow&amp;quot;&lt;br /&gt;
|tinyows_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/tinyows_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=10845@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Ftinyows_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/tinyows_quickstart.rst&lt;br /&gt;
|[http://gis-lab.info/forum/memberlist.php?mode=viewprofile&amp;amp;u=6901 DR]&lt;br /&gt;
|----&lt;br /&gt;
|udig_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/udig_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=12425@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst&amp;amp;amp;old=10607@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fudig_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/udig_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|usb_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/usb_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11773@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst&amp;amp;amp;old=11528@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fusb_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/usb_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|ushahidi_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/ushahidi_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9940@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fushahidi_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/ushahidi_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|viking_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/viking_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9764@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fviking_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/viking_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|virtualbox_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/virtualbox_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11782@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fvirtualbox_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/virtualbox_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|zoo-project_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zoo-project_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=11834@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzoo-project_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zoo-project_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|zygrib_quickstart.rst&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/edits/zygrib_quickstart.rst&lt;br /&gt;
|[http://trac.osgeo.org/osgeo/changeset?new=9744@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst&amp;amp;amp;old=9616@livedvd%2Fgisvm%2Ftrunk%2Fdoc%2Fen%2Fquickstart%2Fzygrib_quickstart.rst link]&lt;br /&gt;
|http://gis-lab.info/docs/osgeo/update_2015/ru/quickstart/zygrib_quickstart.rst&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Как переводим? ==&lt;br /&gt;
=== Главные правила ===&lt;br /&gt;
&lt;br /&gt;
Главная мысль состоит в том, чтобы переводить собственно текст, не трогая по возможности разметку документа. Для этого нужно соблюдать несколько несложных правил:&lt;br /&gt;
* НЕ переводятся имена файлов; &lt;br /&gt;
* оставляем пустые строки и строки, содержащие только знаки пунктуации, как есть;   &lt;br /&gt;
* ВСЕ отступы в тексте должны сохраняться;&lt;br /&gt;
* НЕ переносим строки в списках;&lt;br /&gt;
* в тексте не трогаем знак нижнего подчеркивания (_), &amp;quot;звёздочку&amp;quot; (*), двойную &amp;quot;звёздочку&amp;quot; (**), обратный апостроф (`), двойной обратный апостроф (``), двойное двоеточие (::), двойной обратный слеш (\\);&lt;br /&gt;
* НЕ переводится текст, заключённый между двумя знаками вертикальной черты (|текст|);&lt;br /&gt;
* НЕ переводятся строки, в которых есть слова с двумя двоеточиями (:текст:) типа&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
:scale: 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
, кроме строк с &amp;quot;:alt:&amp;quot;, которые представляют собой подписи к рисункам: &lt;br /&gt;
 &amp;lt;pre&amp;gt; &lt;br /&gt;
:alt: Web services framework of OGC geoprocessing standards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в строках, которые начинаются с двух точек (..), не переводится текст до двойных двоеточий, например, &lt;br /&gt;
&amp;quot;image&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. image:: ../../images/screenshots/800x600/saga_fullextent.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
или &amp;quot;tip&amp;quot; здесь&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.. tip:: Open the file with a Desktop GIS like QGIS. And have a look.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* также НЕ переводятся: ссылки на рисунки (&amp;quot;.. image::&amp;quot;, &amp;quot;.. figure::&amp;quot;), ссылки на другие документы (:doc: и т.п.).&lt;br /&gt;
&lt;br /&gt;
=== Повторяющиеся фрагменты ===&lt;br /&gt;
В текстах (особенно в разделе &amp;quot;Overview&amp;quot;) имеются стандартные повторяющиеся фрагменты, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
**Website:** http://mapproxy.org/&lt;br /&gt;
&lt;br /&gt;
**Licence:** `Apache Software License 2.0 &amp;lt;http://www.apache.org/licenses/LICENSE-2.0.html&amp;gt;`_&lt;br /&gt;
&lt;br /&gt;
**Software Version:** 1.4.0&lt;br /&gt;
&lt;br /&gt;
**Supported Platforms:** Linux, Mac, Windows&lt;br /&gt;
&lt;br /&gt;
**Support:** http://mapproxy.org/support.html&lt;br /&gt;
&lt;br /&gt;
**Documentation:** &amp;lt;../../mapproxy/index.html&amp;gt;`_&lt;br /&gt;
&amp;lt;/pre&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Такие части надо переводить единообразно:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Quickstart &lt;br /&gt;
| Начало работы&lt;br /&gt;
|-&lt;br /&gt;
| Quickstart documentation&lt;br /&gt;
| Введение&lt;br /&gt;
|-&lt;br /&gt;
| Details&lt;br /&gt;
| Дополнительная информация&lt;br /&gt;
|-&lt;br /&gt;
| Core features&lt;br /&gt;
| Базовые функции&lt;br /&gt;
|- &lt;br /&gt;
| Version&lt;br /&gt;
| Версия&lt;br /&gt;
|- &lt;br /&gt;
| Website&lt;br /&gt;
| Веб-сайт&lt;br /&gt;
|-&lt;br /&gt;
| Licence&lt;br /&gt;
| Лицензия&lt;br /&gt;
|-&lt;br /&gt;
| Software Version&lt;br /&gt;
| Версия ПО&lt;br /&gt;
|-&lt;br /&gt;
| Supported Platforms&lt;br /&gt;
| Поддерживаемые платформы&lt;br /&gt;
|-&lt;br /&gt;
| Support&lt;br /&gt;
| Поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&lt;br /&gt;
| Документация&lt;br /&gt;
|-&lt;br /&gt;
| API Interfaces&lt;br /&gt;
| Интерфейсы API&lt;br /&gt;
|-&lt;br /&gt;
| Commercial Support&lt;br /&gt;
| Коммерческая поддержка&lt;br /&gt;
|-&lt;br /&gt;
| Community Support&lt;br /&gt;
| Поддержка сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Community Website&lt;br /&gt;
| Сайт сообщества&lt;br /&gt;
|-&lt;br /&gt;
| Programing language support&lt;br /&gt;
| Поддержка языков программирования&lt;br /&gt;
|-&lt;br /&gt;
| Developers&lt;br /&gt;
| Разработчики &lt;br /&gt;
|-&lt;br /&gt;
| What Next?&lt;br /&gt;
| Что дальше?&lt;br /&gt;
|- &lt;br /&gt;
| Implemented Standards&lt;br /&gt;
| Реализованные стандарты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстах упоминается много '''лицензий''' (часто одна и та же по-разному), где-то со ссылкой на её официальный текст, где-то без. Логично было бы писать их аббревиатуру без расшифровки и давать таки ссылку на лицензию. Ниже в таблице дан перечень лицензий со ссылками.  &lt;br /&gt;
&lt;br /&gt;
'''Предложение по названиям лицензий''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Исходно&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Меняем на:&lt;br /&gt;
! class=&amp;quot;head&amp;quot; | Ссылка&lt;br /&gt;
|- &lt;br /&gt;
| AGPL&lt;br /&gt;
| AGPL&lt;br /&gt;
| http://www.fsf.org/news/agplv3-pr&lt;br /&gt;
|-&lt;br /&gt;
| Apache License, Version 2.0&lt;br /&gt;
| Apache, версия 2.0&lt;br /&gt;
| http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
|-&lt;br /&gt;
| BSD / BSD License / New BSD License / Simplified BSD license&lt;br /&gt;
| BSD&lt;br /&gt;
| http://ru.wikipedia.org/wiki/BSD_License&lt;br /&gt;
|- &lt;br /&gt;
| CeCILL &lt;br /&gt;
| CeCILL &lt;br /&gt;
| http://www.cecill.info/licences.en.html&lt;br /&gt;
|-&lt;br /&gt;
| custom&lt;br /&gt;
| собственная&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 2 &lt;br /&gt;
| GPL версия 2&lt;br /&gt;
| http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU General Public License (GPL) version 3 &lt;br /&gt;
| GPL версия 3&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
|-&lt;br /&gt;
| GNU Lesser General Public License (LGPL) (version 2, 2.1, 3.0)&lt;br /&gt;
| LGPL&lt;br /&gt;
| http://www.gnu.org/copyleft/lesser.html&lt;br /&gt;
|-&lt;br /&gt;
| MIT / MIT License / MIT x/11&lt;br /&gt;
| MIT&lt;br /&gt;
| http://opensource.org/licenses/mit-license.php&lt;br /&gt;
|-&lt;br /&gt;
| MIT based license / MIT-style license&lt;br /&gt;
| основанная на MIT&lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| X/MIT style Open Source license&lt;br /&gt;
| в стиле X/MIT &lt;br /&gt;
| ссылка указана в тексте, оставляем её&lt;br /&gt;
|-&lt;br /&gt;
| MPLv1.1&lt;br /&gt;
| MPL версия 1.1&lt;br /&gt;
| http://www.mozilla.org/MPL/1.1/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Найденные ошибки ===&lt;br /&gt;
Если вы нашли фактическую (смысловую) ошибку в исходных текстах -- просьба отметить это на [http://wiki.gis-lab.info/w/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_OSGeo_Live--%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8 специальной странице] в вики.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B0%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B1%D0%B5%D0%B7_%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8&amp;diff=22188</id>
		<title>Создание автономного картографического приложения на базе изображений без привязки</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B0%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B1%D0%B5%D0%B7_%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8&amp;diff=22188"/>
		<updated>2015-07-11T08:03:18Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Подключение тайлов в Leaflet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|zoomable-image-leaflet}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс подготовки и подключения изображений без привязки в картографический JavaScript-движок Leaflet}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Картографические JavaScript-движки, такие как [http://openlayers.org/ OpenLayers]&lt;br /&gt;
или [http://leafletjs.com/ Leaflet], порой находят своё применение в таких областях,&lt;br /&gt;
для которых они изначально вроде бы и не предназначались. Так, например, &lt;br /&gt;
международное агентство Reuter [http://mediacdn.reuters.com/media/global/editorial/oscars-history/oscars-history-v10.html продемонстрировало] использование Leaflet для интерактивного взаимодействия с&lt;br /&gt;
фотографиями из зала вручения кинопремии «Оскар»:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Non-geographical-imagery-01.png|640px|thumb|center|&amp;lt;center&amp;gt;Пример №1 нестандартного использования картографического движка&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Еще один необычный [http://apps.npr.org/okkervil-river/ пример] - интерактивный&lt;br /&gt;
тур по городу на базе его вымышленной карты:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Non-geographical-imagery-02.png|640px|thumb|center|&amp;lt;center&amp;gt;Пример №2 нестандартного использования картографического движка&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Таких примеров можно привести много, их объединяет то, что все они построены на базе изображений, которые не имеют&lt;br /&gt;
никакой географической привязки. Использование картографических движков для таких изображений добавляет возможность навигации (pan), а после небольшой предварительной обработки - возможность их масштабирования (zoom).&lt;br /&gt;
&lt;br /&gt;
Именно вопросу такой предварительной подготовки и посвящена основная часть данной статьи. В качестве языка программирования будем использовать Python, в качестве JavaScript-движка - Leaflet.&lt;br /&gt;
&lt;br /&gt;
Если перед вами стоит схожая задача, но вы не хотите вникать в технические моменты, тогда просто воспользуйтесь одним из онлайн-сервисов (например [http://hugepic.io/ HUGEpic]). Принцип работы с такими сервисами заключается в том, что вы загружаете свое изображение, а на выходе получаете готовую &amp;quot;карту&amp;quot;, [http://hugepic.io/34f7e5716/2.00/47.3/6.7 пример].&lt;br /&gt;
&lt;br /&gt;
== Обработка исходного изображения ==&lt;br /&gt;
&lt;br /&gt;
=== Постановка задачи ===&lt;br /&gt;
&lt;br /&gt;
Исходное изображение в принципе можно подключить &amp;quot;как есть&amp;quot;, в OpenLayers для этого есть класс [http://dev.openlayers.org/docs/files/OpenLayers/Layer/Image-js.html OpenLayers.Layer.Image], а в Leaflet - [http://leafletjs.com/reference.html#imageoverlay L.ImageOverlay], однако в общем случае это плохая идея, так как изображение может быть большим и пользователю придется очень долго ждать, пока оно загрузится, поэтому первое, что нужно сделать с изображением - это разбить его на тайлы. Поскольку мы хотим иметь возможность не только двигать наше изображение, но и изменять масштаб, то тайлы должны быть построены для нескольких масштабных уровней.&lt;br /&gt;
&lt;br /&gt;
=== Рабочее изображения ===&lt;br /&gt;
&lt;br /&gt;
Работать будем с [http://www.flickr.com/photos/idvsolutions/7439877658/sizes/o/in/photostream/ визуализацией землетрясений], произошедших с 1898 года. Подробнее об изображении [http://uxblog.idvsolutions.com/2012/06/earthquakes-since-1898.html тут]. Размер изображения - 3410 x 2058.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Non-geographical-imagery-03.jpg|500px|thumb|center|&amp;lt;center&amp;gt;Исходное изображение (не оригинал, размер уменьшен)&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=== Разбивка на тайлы ===&lt;br /&gt;
&lt;br /&gt;
Переходим к написанию скрипта, который будет разбивать на тайлы наше изображение. Мы будем использовать инструменты стандартной библиотеки Python, а также одну стороннюю библиотеку - библиотеку для работы с изображениями - [https://pypi.python.org/pypi/PIL PIL], поэтому прежде чем продолжить работу, убедитесь, что у вас установлен PIL.&lt;br /&gt;
&lt;br /&gt;
Используемая в дальнейшем схема разбивки на тайлы - как в OpenStreetMap (то есть нумерация строк и столбцов тайлов начинается с левого верхнего угла). Алгоритм разбивки изображения на тайлы достаточно прост, но имеет некоторую особенность. Представьте, что мы взяли наше изображение размера 3410 x 2058 и пытаемся разбить его на тайлы 256 x 256. Очевидно, что 3410 и 2058 не делятся без остатка на 256, а это означает, что тайлы последнего столбца и последней строки получатся не квадратными (82 x 256 и 256 x 10 соответственно). Поэтому, прежде чем переходить к нарезке тайлов, изображение должно быть приведено к такому виду, что его ширина и высота будут кратны размеру тайла. Размеры поправок вычисляются следующим образом (src_width, src_height - ширина и высота исходного изображения, tile_size - размер тайла, % - операция получения остатка от деления). В Python это записывается так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
dw = tile_size - src_width % tile_size&lt;br /&gt;
dh = tile_size - src_height % tile_size&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Области расширения за счет поправок следует сделать прозрачными, в нашем коде за эту операцию будет отвечать функция ''adjustBounds''.&lt;br /&gt;
&lt;br /&gt;
Одним из важных параметров процедуры разбивки на тайлы - это максимальный масштабный уровень. Рассчитывается он как логарифм по основанию 2 числа max(w,h), округленный до ближайшего большего целого, где w - ширина изображения, h - высота. В Python это записывается так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
max_zoom = int(math.ceil(math.log((max(w, h) / tile_size), 2)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если посчитать, то мы получим:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
max_zoom = int(math.ceil(math.log((max(3410, 2058) / 256), 2))) = 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В итоге алгоритм разбивки на тайлы сводится к циклу от самого детального масштабного уровня (в нашем случае от 4) до 0. В цикле выполняются следующие операции: на 4-м уровне берется исходное изображение, к нему применяется функция ''adjustBounds'', нарезаются тайлы и раскладываются по соответствующим каталогам, после чего размер исходного изображения (не того, к которому применена функция ''adjustBounds'') уменьшается в 2 раза и так далее. &lt;br /&gt;
&lt;br /&gt;
Полная версия скрипта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import math&lt;br /&gt;
from PIL import Image&lt;br /&gt;
&lt;br /&gt;
# source path&lt;br /&gt;
img_path = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
# tile size&lt;br /&gt;
tile_size = 256&lt;br /&gt;
&lt;br /&gt;
# tile directory&lt;br /&gt;
tile_path = 'tiles'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def adjustBounds(src_img):&lt;br /&gt;
&lt;br /&gt;
    # get size of original image&lt;br /&gt;
    src_width, src_height = src_img.size&lt;br /&gt;
&lt;br /&gt;
    # calculate size of target image (background)&lt;br /&gt;
    target_width = src_width + (tile_size - src_width % tile_size)&lt;br /&gt;
    target_height = src_height + (tile_size - src_height % tile_size)&lt;br /&gt;
&lt;br /&gt;
    # create transparent background&lt;br /&gt;
    target_img = Image.new('RGBA', (target_width, target_height))&lt;br /&gt;
&lt;br /&gt;
    # combine original image and background&lt;br /&gt;
    target_img.paste(src_img, (0, 0))&lt;br /&gt;
&lt;br /&gt;
    return target_img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
img = Image.open(img_path)&lt;br /&gt;
w, h = img.size[0], img.size[1]&lt;br /&gt;
&lt;br /&gt;
# calculate max zoom level&lt;br /&gt;
max_zoom = int(math.ceil(math.log((max(w, h) / tile_size), 2)))&lt;br /&gt;
&lt;br /&gt;
for z in range(max_zoom, -1, -1):&lt;br /&gt;
&lt;br /&gt;
    adjusted_image = adjustBounds(img)&lt;br /&gt;
&lt;br /&gt;
    numcolumns = adjusted_image.size[0] / tile_size&lt;br /&gt;
    numrows = adjusted_image.size[1] / tile_size&lt;br /&gt;
&lt;br /&gt;
    for x in range(numcolumns):&lt;br /&gt;
&lt;br /&gt;
        # create z/x/ directory&lt;br /&gt;
        path = os.path.join(tile_path, str(z), str(x))&lt;br /&gt;
        if not os.path.isdir(path):&lt;br /&gt;
            os.makedirs(path)&lt;br /&gt;
&lt;br /&gt;
        for y in range(numrows):&lt;br /&gt;
            bounds = (x * tile_size, y * tile_size, (x + 1) * tile_size, (y + 1) * tile_size)&lt;br /&gt;
            tile = adjusted_image.crop(bounds)&lt;br /&gt;
            tile.save('%s/%s.png' % (path, y))&lt;br /&gt;
&lt;br /&gt;
    w, h = img.size[0], img.size[1]&lt;br /&gt;
    img = img.resize((w / 2, h / 2), Image.ANTIALIAS)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поместим файл со скриптом (''tiling.py'') в ту же папку, где лежит исходное изображение (''earthquakes.jpg'') и запускаем обработку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python tiling.py earthquakes.jpg &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После выполнения данного скрипта в этой же папке будет создан каталог ''tiles'', в который будут помещены тайлы.&lt;br /&gt;
&lt;br /&gt;
== Подключение тайлов в Leaflet ==&lt;br /&gt;
&lt;br /&gt;
В этой же директории, где находится файл ''tiling.py'' и каталог ''tiles'' создадим файл ''display.html'' и поместим в него следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 750px; height: 350px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
        map = L.map('map', {&lt;br /&gt;
          crs: L.CRS.Simple,&lt;br /&gt;
            maxZoom: 4,&lt;br /&gt;
            minZoom: 0&lt;br /&gt;
        }).setView([-60,100], 1);&lt;br /&gt;
&lt;br /&gt;
        L.tileLayer('./tiles/{z}/{x}/{y}.png', {&lt;br /&gt;
            attribution: 'These bicycles are for other drivers &amp;amp;copy;',&lt;br /&gt;
            continuousWorld: true,&lt;br /&gt;
            noWrap: true&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отметим, что проекция объекта карты выставлена в значение ''L.CRS.Simple''. Согласно [http://leafletjs.com/reference.html#icrs документации], именно это значение используется в случае опубликования изображений, не имеющих географической привязки. Открываем созданный файл в браузере и наблюдаем следующий результат:&lt;br /&gt;
&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://gis-lab.info/share/DR/public_html/non-geographical-imagery-ex.html&lt;br /&gt;
|width=767&lt;br /&gt;
|height=367&lt;br /&gt;
|border=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
В ходе данной статьи была описана процедура разбивки изображения без привязки на тайлы, а также подключение их в Leaflet. Отметим, что операцию по тайлированию изображения можно было выполнить, используя утилиту [http://www.gdal.org/gdal2tiles.html gdal2tiles], которая входит в состав библиотеки [http://www.gdal.org/ GDAL]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gdal2tiles.py -p raster -z 0-4 earthquakes.jpg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описанный в статье вариант решения задачи не требует использования GDAL, плюс (что самое, наверное, важное) код довольно простой и наглядно дает понимание того, как вычисляются масштабные уровни и как выполняется непосредственно сама разбивка на тайлы. По коду gdal2tiles разбираться в этих вопросах гораздо сложнее, так как это более универсальный инструмент. И еще, gdal2tiles помимо генерирования тайлов также создает html-файлы с включенными в них движками OpenLayers и Google (но не Leaflet) и подключает на карту набор созданных тайлов, то есть по-сути делает все то же самое о чем идет речь в данной статье, но как-бы за кадром, мы же попытались представить этот процесс более наглядно.&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
# [http://omarriott.com/aux/leaflet-js-non-geographical-imagery/ Using leaflet.js with non-geographic imagery]&lt;br /&gt;
# [http://build-failed.blogspot.ru/2012/11/zoomable-image-with-leaflet.html Zoomable image with Leaflet]&lt;br /&gt;
# [http://macwright.org/2012/08/13/images-as-maps.html Images as Maps]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=QuickMapServices_-_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8_%D0%B2_QGIS&amp;diff=21186</id>
		<title>QuickMapServices - быстрая работа с базовыми картами в QGIS</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=QuickMapServices_-_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8_%D0%B2_QGIS&amp;diff=21186"/>
		<updated>2015-01-30T11:09:12Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|quickmapservices}}&lt;br /&gt;
{{Аннотация|Описание инструмента.}}&lt;br /&gt;
&lt;br /&gt;
Этот инструмент может применяться для быстрого добавления базовой карты (т.н. подложки) в проект QGIS.&lt;br /&gt;
&lt;br /&gt;
Растровая картографическая подложка часто выступает в качестве первого слоя, добавляемого для работы в проект. Подложка может быть представлена в виде различных интернет-сервисов: TMS, WMS, WMTS, ESRI ArcGIS Service или просто в виде тайлов XYZ.&lt;br /&gt;
&lt;br /&gt;
В настольных ГИС существуют различные средства добавления подложек.&lt;br /&gt;
&lt;br /&gt;
В QGIS, например, есть и собственные провайдеры данных и сторонние расширения для доступа к этим сервисам. WMS и WMTS протоколы реализованы в ядре QGIS. Доступ к TMS сервисам и тайлам XYZ можно организовать используя GDAL WMS Driver. В этом случае нужно подготавливать специальный XML-файл с описанием для GDAL. Это не удобно, так как запомнить адреса сложно, а процесс их ввода каждый раз при смене рабочего места отнимает достаточно много времени.&lt;br /&gt;
&lt;br /&gt;
Существующие расширения для оптимизации работы нас не устроили и мы сделали [http://plugins.qgis.org/plugins/quick_map_services/ QuickMapServices] — расширение, которое позволяет быстро и удобно работать с подложками, получаемыми из различных интернет-сервисов.&lt;br /&gt;
&lt;br /&gt;
{{NextGIS}}&lt;br /&gt;
&lt;br /&gt;
=== Замечания по установке ===&lt;br /&gt;
&lt;br /&gt;
Расширение доступно из [http://plugins.qgis.org/plugins/plugins.xml официального репозитория].&lt;br /&gt;
&lt;br /&gt;
QuickMapServices находится в разработке и протестирован с QGIS 2.6 и выше.&lt;br /&gt;
&lt;br /&gt;
Исходный код модуля можно получить выполнив команду&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone git@github.com:nextgis/quickmapservices.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Работа с расширением ===&lt;br /&gt;
&lt;br /&gt;
После установки расширения в панели инструментов &amp;quot;Интернет&amp;quot; появится кнопка расширения. Так же появится группа QuickMapServices в одноименном меню.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Файл:Quickmapservices-button.png|center]]&lt;br /&gt;
&lt;br /&gt;
Кнопка является контейнером для базовых карт из различных источников. &lt;br /&gt;
&lt;br /&gt;
[[Файл:multiqml-01.png|center]]&lt;br /&gt;
&lt;br /&gt;
При выборе одной из них, карта автоматически подключается в проект в качестве слоя. Слой подключается в конец списка слоёв.&lt;br /&gt;
&lt;br /&gt;
=== Почему QuickMapServices ===&lt;br /&gt;
&lt;br /&gt;
Для удобной работы с подложками на данный момент существует несколько модулей расширения QGIS: OpenLayers plugin, Tile Map Scale Plugin, TileLayer. QuickMapServices наследует преимущества этих модулей и одновременно исправляет их недостатки:&lt;br /&gt;
&lt;br /&gt;
* Использует нативную управляемую реализацию доступа к данным (в отличие от OpenLayers Plugin)&lt;br /&gt;
* Имеет готовый список адресов сервисов и умеет добавлять подложки в один клик (как OpenLayers Plugin, но у последнего скачивание данных фактически происходит через браузер webkit, что не оптимально).&lt;br /&gt;
* Не испытывает проблем с масштабированием надписей на нестандартных масштабах (как Tile Map Scale Plugin, последний использует универсальный драйвер GDAL, что приводит к проблемам с качеством отображения и печати на нестандартных масштабных уровнях в QGIS).&lt;br /&gt;
* Использует реализацию доступа к тайлам со сглаживанием на нестандартных масштабных уровнях, что решает проблему отображения подписей на нестандартных масштабных уровнях (как TileLayer Plugin, но последний не имеет удобного способа добавлять готовые подложки).&lt;br /&gt;
* Cписок сервисов может легко расширяться путем добавления простых ini файлов.&lt;br /&gt;
&lt;br /&gt;
=== Добавление сервисов ===&lt;br /&gt;
&lt;br /&gt;
Для добавления сервиса в модуль нужны два файла, используйте примеры:&lt;br /&gt;
&lt;br /&gt;
# Иконка в формате SVG ([https://github.com/nextgis/quickmapservices/blob/master/src/data_sources/osm_mapnik/osm.svg пример])&lt;br /&gt;
# Файл описания сервиса metadata.ini ([https://github.com/nextgis/quickmapservices/blob/master/src/data_sources/osm_mapnik/metadata.ini пример])&lt;br /&gt;
&lt;br /&gt;
После того как метаданные и иконка подготовлены их нужно отправить авторам одним из перечисленных способов (в порядке предпочтительности):&lt;br /&gt;
&lt;br /&gt;
* Если есть аккаунт на Github - пул реквестом к нашему [https://github.com/nextgis/quickmapservices репозиторию]&lt;br /&gt;
* Если нет аккаунта - завести аккаунт и сделать пул реквест&lt;br /&gt;
* Если нет аккаунта, нет желания заводить аккаунт, не знаете что такое пул реквест и нет желания выяснять то можно так же:&lt;br /&gt;
** Приложить файлы к [http://gis-lab.info/forum/viewtopic.php?f=27&amp;amp;t=18464 теме обсуждения модуля] на форуме GIS-Lab&lt;br /&gt;
** Просто отправить по [http://nextgis.ru/contact/ почте]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Полная версия руководства по добавлению сервисов ([https://github.com/nextgis/quickmapservices/wiki/Adding-data-source на английском]).&lt;br /&gt;
&lt;br /&gt;
=== Известные ограничения ===&lt;br /&gt;
&lt;br /&gt;
На текущий момент модуль имеет следующие ограничения:&lt;br /&gt;
&lt;br /&gt;
* При использовании HTTP прокси-сервера на уровне ОС должны быть заданы необходимые [http://trac.osgeo.org/gdal/wiki/ConfigOptions#GDALOGRHTTPoptions переменные окружения], обеспечивающие корректную работу утилит GDAL, используемых при работе QuickMapServices. Если используется прокси-сервер без аутентификации, то достаточно задать только переменную GDAL_HTTP_PROXY. В ОС Windows это выглядит так:&lt;br /&gt;
&amp;lt;pre&amp;gt;SET GDAL_HTTP_PROXY = host:port&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Сервисы на базе ArcGIS Server MapServices через модуль можно загружать только в [http://nextgis.ru/nextgis-qgis/ NextGIS QGIS Future]&lt;br /&gt;
&lt;br /&gt;
Мы продолжаем поддержку модуля и вышеперечисленные задачи могут быть решены в новых версиях QuickMapServices.&lt;br /&gt;
&lt;br /&gt;
=== Контакты ===&lt;br /&gt;
&lt;br /&gt;
Если вы нашли ошибку или у вас есть предложения по улучшению расширения — воспользуйтесь [https://github.com/nextgis/quickmapservices/issues багтрекером]. Кроме того, вопросы по использованию расширения можно задать авторам [http://nextgis.ru/contact/ напрямую].&lt;br /&gt;
&lt;br /&gt;
=== Ссылки по теме ===&lt;br /&gt;
&lt;br /&gt;
* [http://gis-lab.info/qa/qgis-install-plugin.html Установка модулей расширения в QGIS]&lt;br /&gt;
* [http://gis-lab.info/docs/qgis/ Документация по QGIS]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=QuickMapServices_-_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8_%D0%B2_QGIS&amp;diff=21185</id>
		<title>QuickMapServices - быстрая работа с базовыми картами в QGIS</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=QuickMapServices_-_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8_%D0%B2_QGIS&amp;diff=21185"/>
		<updated>2015-01-30T10:58:37Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|quickmapservices}}&lt;br /&gt;
{{Аннотация|Описание инструмента.}}&lt;br /&gt;
&lt;br /&gt;
Этот инструмент может применяться для быстрого добавления базовой карты (т.н. подложки) в проект QGIS.&lt;br /&gt;
&lt;br /&gt;
Растровая картографическая подложка часто выступает в качестве первого слоя, добавляемого для работы в проект. Подложка может быть представлена в виде различных интернет-сервисов: TMS, WMS, WMTS, ESRI ArcGIS Service или просто в виде тайлов XYZ.&lt;br /&gt;
&lt;br /&gt;
В настольных ГИС существуют различные средства добавления подложек.&lt;br /&gt;
&lt;br /&gt;
В QGIS, например, есть и собственные провайдеры данных и сторонние расширения для доступа к этим сервисам. WMS и WMTS протоколы реализованы в ядре QGIS. Доступ к TMS сервисам и тайлам XYZ можно организовать используя GDAL WMS Driver. В этом случае нужно подготавливать специальный XML-файл с описанием для GDAL. Это не удобно, так как запомнить адреса сложно, а процесс их ввода каждый раз при смене рабочего места отнимает достаточно много времени.&lt;br /&gt;
&lt;br /&gt;
Существующие расширения для оптимизации работы нас не устроили и мы сделали [http://plugins.qgis.org/plugins/quick_map_services/ QuickMapServices] — расширение, которое позволяет быстро и удобно работать с подложками, получаемыми из различных интернет-сервисов.&lt;br /&gt;
&lt;br /&gt;
{{NextGIS}}&lt;br /&gt;
&lt;br /&gt;
=== Замечания по установке ===&lt;br /&gt;
&lt;br /&gt;
Расширение доступно из [http://plugins.qgis.org/plugins/plugins.xml официального репозитория].&lt;br /&gt;
&lt;br /&gt;
QuickMapServices находится в разработке и протестирован с QGIS 2.6 и выше.&lt;br /&gt;
&lt;br /&gt;
Исходный код модуля можно получить выполнив команду&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone git@github.com:nextgis/quickmapservices.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Работа с расширением ===&lt;br /&gt;
&lt;br /&gt;
После установки расширения в панели инструментов &amp;quot;Интернет&amp;quot; появится кнопка расширения. Так же появится группа QuickMapServices в одноименном меню.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Файл:Quickmapservices-button.png|center]]&lt;br /&gt;
&lt;br /&gt;
Кнопка является контейнером для базовых карт из различных источников. &lt;br /&gt;
&lt;br /&gt;
[[Файл:multiqml-01.png|center]]&lt;br /&gt;
&lt;br /&gt;
При выборе одной из них, карта автоматически подключается в проект в качестве слоя. Слой подключается в конец списка слоёв.&lt;br /&gt;
&lt;br /&gt;
=== Почему QuickMapServices ===&lt;br /&gt;
&lt;br /&gt;
Для удобной работы с подложками на данный момент существует несколько модулей расширения QGIS: OpenLayers plugin, Tile Map Scale Plugin, TileLayer. QuickMapServices наследует преимущества этих модулей и одновременно исправляет их недостатки:&lt;br /&gt;
&lt;br /&gt;
* Использует нативную управляемую реализацию доступа к данным (в отличие от OpenLayers Plugin)&lt;br /&gt;
* Имеет готовый список адресов сервисов и умеет добавлять подложки в один клик (как OpenLayers Plugin, но у последнего скачивание данных фактически происходит через браузер webkit, что не оптимально).&lt;br /&gt;
* Не испытывает проблем с масштабированием надписей на нестандартных масштабах (как Tile Map Scale Plugin, последний использует универсальный драйвер GDAL, что приводит к проблемам с качеством отображения и печати на нестандартных масштабных уровнях в QGIS).&lt;br /&gt;
* Использует реализацию доступа к тайлам со сглаживанием на нестандартных масштабных уровнях, что решает проблему отображения подписей на нестандартных масштабных уровнях (как TileLayer Plugin, но последний не имеет удобного способа добавлять готовые подложки).&lt;br /&gt;
* Cписок сервисов может легко расширяться путем добавления простых ini файлов.&lt;br /&gt;
&lt;br /&gt;
=== Добавление сервисов ===&lt;br /&gt;
&lt;br /&gt;
Для добавления сервиса в модуль нужны два файла, используйте примеры:&lt;br /&gt;
&lt;br /&gt;
# Иконка в формате SVG ([https://github.com/nextgis/quickmapservices/blob/master/src/data_sources/osm_mapnik/osm.svg пример])&lt;br /&gt;
# Файл описания сервиса metadata.ini ([https://github.com/nextgis/quickmapservices/blob/master/src/data_sources/osm_mapnik/metadata.ini пример])&lt;br /&gt;
&lt;br /&gt;
После того как метаданные и иконка подготовлены их нужно отправить авторам одним из перечисленных способов (в порядке предпочтительности):&lt;br /&gt;
&lt;br /&gt;
* Если есть аккаунт на Github - пул реквестом к нашему [https://github.com/nextgis/quickmapservices репозиторию]&lt;br /&gt;
* Если нет аккаунта - завести аккаунт и сделать пул реквест&lt;br /&gt;
* Если нет аккаунта, нет желания заводить аккаунт, не знаете что такое пул реквест и нет желания выяснять то можно так же:&lt;br /&gt;
** Приложить файлы к [http://gis-lab.info/forum/viewtopic.php?f=27&amp;amp;t=18464 теме обсуждения модуля] на форуме GIS-Lab&lt;br /&gt;
** Просто отправить по [http://nextgis.ru/contact/ почте]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Полная версия руководства по добавлению сервисов ([https://github.com/nextgis/quickmapservices/wiki/Adding-data-source на английском]).&lt;br /&gt;
&lt;br /&gt;
=== Известные ограничения ===&lt;br /&gt;
&lt;br /&gt;
На текущий момент модуль имеет следующие ограничения:&lt;br /&gt;
&lt;br /&gt;
* При использовании HTTP прокси-сервера на уровне ОС должны быть заданы необходимые [http://trac.osgeo.org/gdal/wiki/ConfigOptions#GDALOGRHTTPoptions переменные окружения], обеспечивающие корректную работу утилит GDAL, используемых при работе QuickMapServices. Если используется прокси-сервер без аутентификации, то достаточно задать только переменную GDAL_HTTP_PROXY.&lt;br /&gt;
* Сервисы на базе ArcGIS Server MapServices через модуль можно загружать только в [http://nextgis.ru/nextgis-qgis/ NextGIS QGIS Future]&lt;br /&gt;
&lt;br /&gt;
Мы продолжаем поддержку модуля и вышеперечисленные задачи могут быть решены в новых версиях QuickMapServices.&lt;br /&gt;
&lt;br /&gt;
=== Контакты ===&lt;br /&gt;
&lt;br /&gt;
Если вы нашли ошибку или у вас есть предложения по улучшению расширения — воспользуйтесь [https://github.com/nextgis/quickmapservices/issues багтрекером]. Кроме того, вопросы по использованию расширения можно задать авторам [http://nextgis.ru/contact/ напрямую].&lt;br /&gt;
&lt;br /&gt;
=== Ссылки по теме ===&lt;br /&gt;
&lt;br /&gt;
* [http://gis-lab.info/qa/qgis-install-plugin.html Установка модулей расширения в QGIS]&lt;br /&gt;
* [http://gis-lab.info/docs/qgis/ Документация по QGIS]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=21137</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=21137"/>
		<updated>2015-01-11T05:59:26Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|graphhopper-deployment}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
К роутинговым движкам относится программное обеспечение, позволяющее прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - [http://project-osrm.org/ Open Source Routing Machine (OSRM)], написанная на С++.&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/blob/master/docs/core/quickstart-from-source.md#routing-service-deployment тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] (уже вроде исправили) и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/index.md GraphHopper docs]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=21136</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=21136"/>
		<updated>2015-01-11T05:57:33Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|graphhopper-deployment}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
К роутинговым движкам относится программное обеспечение, позволяющее прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - [http://project-osrm.org/ Open Source Routing Machine (OSRM)], написанная на С++.&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] (уже вроде исправили) и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/index.md GraphHopper docs]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=20362</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=20362"/>
		<updated>2014-07-18T15:46:03Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Ежеминутное обновление */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Опубликована|mod_tile}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основанной на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного набора тайлов. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
Набор тайлов может быть подготовлен различными способами, но наиболее универсальный вариант предоставления доступа к тайлам - это использование тайлового сервера - программного обеспечения, работающего по следующим принципами:&lt;br /&gt;
* при запросе тайла - сервер проверяет его наличие в своём кэше, если тайл найден - он возвращается клиенту;&lt;br /&gt;
* если тайл не найден, то осуществляется его рендеринг, после чего он сохраняется в кэше и только после этого возвращается клиенту.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных.&lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для получения списка тайлов в прямоугольнике с координатами WGS-84, либо по произвольному полигону обрезки, воспользуйтесь [https://github.com/zverik/polytiles polytiles.py]. Пример команды:&lt;br /&gt;
&lt;br /&gt;
 ./polytiles.py --poly russia.poly --zooms 6 10 --export russia_tiles.lst -q&lt;br /&gt;
 render_list -s /run/renderd/renderd.sock &amp;lt; russia_tiles.lst&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ежеминутное обновление ==&lt;br /&gt;
&lt;br /&gt;
Чтобы обновлять данные в базе, не обязательно каждый раз обрабатывать всю выгрузку (а то и планету) целиком: достаточно настроить ежеминутное обновление данных базы. На сервер OSM выкладываются [http://planet.osm.org/replication/ файлы изменений] за эти периоды, и с помощью osmosis и osm2pgsql их можно накатить на рабочую базу. Если вы планируете подобного рода обновления, то данные должны быть загружены в базу с помощью osm2pgsql без использования ключа ''--drop''.&lt;br /&gt;
&lt;br /&gt;
Если вы собирали mod_tile из исходников, найдите там файл &amp;lt;tt&amp;gt;openstreetmap-tiles-update-expire&amp;lt;/tt&amp;gt;, иначе скачайте его c [https://github.com/openstreetmap/mod_tile/blob/master/openstreetmap-tiles-update-expire github]. Поправьте пути в начале файла. Запускать скрипт нужно от имени пользователя, который запускает renderd и прочее (по инструкции выше — &amp;lt;tt&amp;gt;dr&amp;lt;/tt&amp;gt;). Сначала нужно инициализировать рабочие каталоги: запустите&lt;br /&gt;
&lt;br /&gt;
 ./openstreetmap-tiles-update-expire YYYY-MM-DD&lt;br /&gt;
&lt;br /&gt;
где дата — день, когда был подготовлен загруженный в базу данных дамп. Если будет на день-два раньше — ничего страшного, дублирования не произойдёт. Дальше всё просто: запустите &amp;lt;tt&amp;gt;crontab -e&amp;lt;/tt&amp;gt; от пользователя &amp;lt;tt&amp;gt;dr&amp;lt;/tt&amp;gt; и добавьте строку:&lt;br /&gt;
&lt;br /&gt;
 * * * * * /путь/к/openstreetmap-tiles-update-expire&lt;br /&gt;
&lt;br /&gt;
Проверить, что обновление идёт без ошибок, можно по логу в &amp;lt;tt&amp;gt;/var/log/tiles/run.log&amp;lt;/tt&amp;gt;. При полном обновлении базы данных не забывайте отключать вызов скрипта в crontab. Пока он остановлен, можно скачать правильный state.NNN.txt в &amp;lt;tt&amp;gt;/var/lib/mod_tile/.osmosis/state.txt&amp;lt;/tt&amp;gt;, чтобы начать обновление с более ранней даты. Максимальный интервал, на который обновляется база за один вызов скрипта, указывается в файле &amp;lt;tt&amp;gt;/var/lib/mod_tile/.osmosis/configuration.txt&amp;lt;/tt&amp;gt; в ключе &amp;lt;tt&amp;gt;maxInterval&amp;lt;/tt&amp;gt;, по умолчанию — один час.&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19911</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19911"/>
		<updated>2014-07-11T20:03:28Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основанной на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного набора тайлов. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
Набор тайлов может быть подготовлен различными способами, но наиболее универсальный вариант предоставления доступа к тайлам - это использование тайлового сервера - программного обеспечения, работающего по следующим принципами:&lt;br /&gt;
* при запросе тайла - сервер проверяет его наличие в своём кэше, если тайл найден - он возвращается клиенту;&lt;br /&gt;
* если тайл не найден, то осуществляется его рендеринг, после чего он сохраняется в кэше и только после этого возвращается клиенту.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных.&lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19910</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19910"/>
		<updated>2014-07-11T19:39:20Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основанной на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного набора тайлов. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных.&lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19909</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19909"/>
		<updated>2014-07-11T19:32:05Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Стек программных продуктов тайлового сервера openstreetmap.org */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основанной на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных.&lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19908</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19908"/>
		<updated>2014-07-11T19:31:39Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основанной на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных &lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19907</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19907"/>
		<updated>2014-07-11T19:30:42Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения) или, будучи основана на тех же исходных данных, имела совсем другое представление. Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, данный вариант не позволит настроить собственную символику подложки, отличную от стандартной. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных &lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы в репозиториях по-умолчанию отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно.&lt;br /&gt;
&lt;br /&gt;
Поэтому для удобной установки необходимых пакетов лучше использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее. Руководство по самостоятельной сборке RPM-пакетов можно почитать [https://github.com/nextgis/gis_packages_centos здесь]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19905</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19905"/>
		<updated>2014-07-11T18:42:53Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Создание базы данных и загрузка данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных &lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. &lt;br /&gt;
&lt;br /&gt;
Для их удобной установки можно использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - ежедневные выгрузки данных на территорию бывшего СССР в форматах XML и PBF, расположенные [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19904</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19904"/>
		<updated>2014-07-11T18:42:03Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Создание базы данных и загрузка данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных &lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. &lt;br /&gt;
&lt;br /&gt;
Для их удобной установки можно использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - проект ежедневных выгрузок на территорию бывшего СССР в форматах XML и PBF [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19903</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19903"/>
		<updated>2014-07-11T18:41:19Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap на примере операционной системы CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Сегодня во многих картографических веб-приложениях в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. &lt;br /&gt;
&lt;br /&gt;
*'''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности).&lt;br /&gt;
*'''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами.&lt;br /&gt;
*'''Mapnik''' - рендерер, превращающий векторные данные в растровые тайлы и используемый renderd.&lt;br /&gt;
*'''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных &lt;br /&gt;
*'''PostgreSQL/PostGIS''' - собственно СУБД.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень удобно, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. &lt;br /&gt;
&lt;br /&gt;
Для их удобной установки можно использовать [http://nextgis.ru/programs/centos/ специальный репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, расположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis, содержащий все остальные необходимые компоненты: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ. Существует несколько способов получения исходных данных OpenStreetMap, один из них - получить данные на странице проекта ежедневных выгрузок на территорию бывшего СССР в форматах XML и PBF [http://gis-lab.info/projects/osm_dump/ здесь].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19897</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19897"/>
		<updated>2014-07-11T03:58:40Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDSOCKDIR=/var/run/$NAME&lt;br /&gt;
PIDFILE=$PIDSOCKDIR/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            [ -d &amp;quot;$PIDSOCKDIR&amp;quot; ] ||  mkdir -p $PIDSOCKDIR &amp;amp;&amp;amp; chown $RUNASUSER $PIDSOCKDIR&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19894</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19894"/>
		<updated>2014-07-10T18:30:51Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.6&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19892</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19892"/>
		<updated>2014-07-10T12:27:07Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=1&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19891</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19891"/>
		<updated>2014-07-10T06:53:48Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19890</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19890"/>
		<updated>2014-07-10T06:52:52Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех настроек, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf здесь].&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19889</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19889"/>
		<updated>2014-07-10T06:30:24Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание всех инструкций, которые могут быть добавлены в этот файл можно найти [https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.conf здесь].&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19888</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19888"/>
		<updated>2014-07-10T04:12:09Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание:''' начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19887</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19887"/>
		<updated>2014-07-10T04:11:37Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Замечание:** начиная с [https://blog.openstreetmap.org/2013/08/26/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B8%D0%BB%D1%8C/?lang=ru августа 2013] года, тайлы на сайте openstreetmap.org отрисовываются не с помощью XML-стиля, а с помощью стиля в формате [https://github.com/gravitystorm/openstreetmap-carto CartoCSS]. Это полностью переписанный на CartoCSS старый XML-стиль, что значительно упрощает его модификацию. Стиль сделан как можно более похожим на старый.&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19886</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19886"/>
		<updated>2014-07-10T03:18:09Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik.html Подготовка карт для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/07/mapnik_29.html Настройка базы данных для генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/mapnik.html Установка генератора тайлов Mapnik]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/renderd-modtile.html Установка renderd и mod_tile - системы отрисовки тайлов по запросу]&lt;br /&gt;
* [http://vladimir-stupin.blogspot.ru/2012/08/blog-post.html Тайловый сервер - что с ним делать?]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19885</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19885"/>
		<updated>2014-07-10T02:08:07Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Если Apache ещё не установлен, то установите его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install httpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19884</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19884"/>
		<updated>2014-07-09T19:44:19Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64, но вся последовательность шагов может быть легко адаптирована и под любой другой Linux-дистрибутив. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19883</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19883"/>
		<updated>2014-07-09T19:39:50Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;br /&gt;
&lt;br /&gt;
== Автоматический запуск renderd ==&lt;br /&gt;
&lt;br /&gt;
Очевидно, что каждый раз вручную запускать renderd после перезагрузки сервера - это не дело, поэтому нам необходима возможность автоматического запуска renderd. В репозитории mod_tile (renderd входит в его состав) присутствует [https://github.com/openstreetmap/mod_tile/blob/master/debian/renderd.init init-скрипт], выполняющий эту задачу. Однако он Debian-специфичен и нам не подходит. Напишем свой.&lt;br /&gt;
&lt;br /&gt;
Создаём файл ''/etc/init.d/renderd'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# renderd    Mapnik rendering daemon&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 70 30&lt;br /&gt;
# description: Mapnik rendering daemon&lt;br /&gt;
# processname: renderd&lt;br /&gt;
 &lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
DESC=&amp;quot;Mapnik rendering daemon&amp;quot;&lt;br /&gt;
NAME=renderd&lt;br /&gt;
DAEMON=/usr/bin/$NAME&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-c /etc/renderd.conf&amp;quot;&lt;br /&gt;
PIDFILE=/var/run/$NAME/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
RUNASUSER=dr&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        if [ -e $PIDFILE ];&lt;br /&gt;
        then&lt;br /&gt;
            echo -n &amp;quot;$NAME already started&amp;quot;&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
        else&lt;br /&gt;
            echo -n &amp;quot;Starting $NAME: &amp;quot;&lt;br /&gt;
            mkdir -p /var/run/renderd&lt;br /&gt;
            chown $RUNASUSER /var/run/renderd&lt;br /&gt;
            daemon --user $RUNASUSER $DAEMON $DAEMON_ARGS 2&amp;gt; /dev/null&lt;br /&gt;
            RETVAL=$?&lt;br /&gt;
            [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $PIDFILE&lt;br /&gt;
        fi&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        echo -n &amp;quot;Shutting down $NAME: &amp;quot;&lt;br /&gt;
        killproc $DAEMON &amp;amp;&amp;amp; success || failure&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $PIDFILE&lt;br /&gt;
        echo&lt;br /&gt;
        return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
    restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Делаем его исполняемым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+x /etc/init.d/renderd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем сервис и добавляем его в автозагрузку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service renderd start&lt;br /&gt;
chkconfig renderd on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предварительный рендеринг тайлов ==&lt;br /&gt;
&lt;br /&gt;
В текущей конфигурации тайлы будут отрисовываться по запросу. То есть если mod_tile не найдёт запрашиваемый тайл в кэше, то он обратится за ним к renderd. Однако процесс отрисовки тайлов требует определенного времени и чтобы не заставлять ждать клиента, запрашивающего тайл, пока этот тайл отрисуется, можно подготовить необходимые тайлы заранее. В состав пакета renderd помимо самого демона входит еще несколько вспомогательных утилит, среди которых ''render_list''. С помощью данной утилиты можно указать масштабный уровень и диапазоны x и y координат тайлов и осуществить предварительный рендеринг. Пример рендеринга тайлов 7 уровня на территорию России:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=7 --min-zoom=7 --min-x=73 --max-x=127 --min-y=18 --max-y=47 --num-threads=4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример Python-скрипта расчета координат тайлов по охвату интересующей области:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Russia bbox&lt;br /&gt;
XMIN = 2989951.00&lt;br /&gt;
XMAX = 20037508.34&lt;br /&gt;
YMIN = 5039930.86&lt;br /&gt;
YMAX = 14222184.29&lt;br /&gt;
&lt;br /&gt;
# Sphere radius&lt;br /&gt;
R = 20037508.342789244&lt;br /&gt;
&lt;br /&gt;
for z in range(19):&lt;br /&gt;
  r = 2*R/(256*2**z)&lt;br /&gt;
&lt;br /&gt;
  tile_w = tile_h = 256*r&lt;br /&gt;
&lt;br /&gt;
  x_min = (R+XMIN)/tile_w&lt;br /&gt;
  x_max = (R+XMAX)/tile_w&lt;br /&gt;
  y_min = (R-YMAX)/tile_h&lt;br /&gt;
  y_max = (R-YMIN)/tile_h&lt;br /&gt;
&lt;br /&gt;
  print &amp;quot;render_list --socket=/var/run/renderd/renderd.sock --all --max-zoom=%d --min-zoom=%d --min-x=%d --max-x=%d --min-y=%d --max-y=%d --num-threads=4&amp;quot; % (z, z, int(x_min), int(x_max), int(y_min), int(y_max))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальность тайлов ==&lt;br /&gt;
&lt;br /&gt;
Чтобы поддерживать тайлы в актуальном состоянии, mod_tile должен знать дату на которую были загружены исходные данные в базу PostGIS. В случае, если дата загрузки данных в базу свежее даты создания тайла, то при следующем обращении к этому тайлу он будет отрисован заново. Дата загрузки данных в базу хранится как timestamp файла ''planet-import-complete'', который должен находиться в директории с тайлами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /var/lib/mod_tile/planet-import-complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/openstreetmap/mod_tile mod_tile]&lt;br /&gt;
* [https://github.com/openstreetmap/osm2pgsql osm2pgsql]&lt;br /&gt;
* [https://github.com/mapnik/mapnik Mapnik]&lt;br /&gt;
* [http://switch2osm.org/ switch2osm]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19882</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19882"/>
		<updated>2014-07-09T19:28:47Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка корректности произведённых настроек ==&lt;br /&gt;
&lt;br /&gt;
Запускаем renderd вручную:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;renderd -f -c /etc/renderd.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если при запуске вы столкнётесь с [http://gis.stackexchange.com/q/91759/3420 подобной] проблемой, то поставьте в систему пакет ''proj-epsg'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install proj-epsg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включаем возможность автоматической загрузки Apache после перезагрузки системы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig httpd on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запущенном renderd в отдельной консоли перезапускаем Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service httpd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно появиться сообщение следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Starting httpd: [Wed Jul 09 19:45:29 2014] [notice] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пробуем открыть какой-нибудь тайл, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/osm_tiles/0/0/0.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы получили тайл с первого раза - значит вам повезло. Если нет, то смотрите интерактивные логи запущенного renderd и логи Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/httpd/error_log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее распространённая ошибка в логах Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;socket connect failed for: /var/run/renderd/renderd.sock with reason: Permission denied&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверьте права доступа к сокету для пользователя, от имени которого запущен Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -u apache ls -lh /var/run/renderd/renderd.sock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В документации по mod_tile сказано, что SELinux блокирует соединение mod_tile и renderd, поэтому должен быть отключен (требуется перезагрузка). Также в случае возникновения подобных проблем попробуйте отключить сервис iptables, если он запущен.&lt;br /&gt;
&lt;br /&gt;
Как только вам удастся получить готовый тайл - останавливайте renderd (''Ctrl+C''), запущенный в foreground-режиме.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19881</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19881"/>
		<updated>2014-07-09T19:21:50Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка renderd ==&lt;br /&gt;
&lt;br /&gt;
Откройте файл, содержащий настройки renderd. Данный файл расположен по адресу ''/etc/renderd.conf''. Приведите его к следующему виду (так как в нашем примере файл стилей Mapnik находится в домашнем каталоге пользователя, то отредактируйте значение параметра ''XML'' в соответствии со своим пользователем (в нашем примере имя пользователя в системе и имя пользователя в базе данных совпадают, у вас это могут быть совершенно разные пользователи)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[renderd]&lt;br /&gt;
socketname=/var/run/renderd/renderd.sock&lt;br /&gt;
num_threads=4&lt;br /&gt;
tile_dir=/var/lib/mod_tile&lt;br /&gt;
stats_file=/var/run/renderd/renderd.stats&lt;br /&gt;
&lt;br /&gt;
[mapnik]&lt;br /&gt;
plugins_dir=/usr/lib64/mapnik/input&lt;br /&gt;
font_dir=/usr/share/fonts/dejavu&lt;br /&gt;
font_dir_recurse=1&lt;br /&gt;
&lt;br /&gt;
[default]&lt;br /&gt;
URI=/osm_tiles/&lt;br /&gt;
TILEDIR=/var/lib/mod_tile&lt;br /&gt;
XML=/home/dr/src/mapnik-style/osm.xml&lt;br /&gt;
HOST=localhost&lt;br /&gt;
CORS=*&lt;br /&gt;
TILESIZE=256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создадим директорию в которую будет помещён Unix-сокет для взаимодействия mod_tile и renderd и директорию, в которой будут храниться кэшированные тайлы (соответствующие пути мы прописали в файле ''renderd.conf''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/run/renderd&lt;br /&gt;
mkdir /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем владельцами данных каталогов пользователя, от имени которого будет запускаться renderd. Пусть в нашем случае это будет системный пользователь dr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dr /var/run/renderd&lt;br /&gt;
chown dr /var/lib/mod_tile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка mod_tile ==&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию с настройками Apache ''/etc/httpd/conf.d'' и создайте там файл ''mod_tile.conf'' следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule tile_module /usr/lib64/httpd/modules/mod_tile.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName localhost&lt;br /&gt;
    ServerAdmin webmaster@localhost&lt;br /&gt;
&lt;br /&gt;
    LoadTileConfigFile /etc/renderd.conf&lt;br /&gt;
    ModTileRenderdSocketName /var/run/renderd/renderd.sock&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered&lt;br /&gt;
    ModTileRequestTimeout 0&lt;br /&gt;
    # Timeout before giving up for a tile to be rendered that is otherwise missing&lt;br /&gt;
    ModTileMissingRequestTimeout 30&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/httpd/error_log&lt;br /&gt;
&lt;br /&gt;
    # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
    # alert, emerg.&lt;br /&gt;
    LogLevel warn&lt;br /&gt;
&lt;br /&gt;
    CustomLog /var/log/httpd/access_log combined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19880</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19880"/>
		<updated>2014-07-09T19:15:40Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка стилей Mapnik ==&lt;br /&gt;
&lt;br /&gt;
В качестве стилей тайлов будем использовать стандартный стиль OpenStreetMap. Скачиваем файлы с описанием стиля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src&lt;br /&gt;
svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартный файл стилей Mapnik подразумевает, что для создания тайлов, содержащих береговые линии и территории, занимаемые океанами, на мелких масштабах используются отдельные файлы, а не данные из базы, поскольку так гораздо быстрее. Загружаем эти файлы (порядка 400 Мб):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style&lt;br /&gt;
./get-coastlines.sh /usr/local/share&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При выполнении данной команды вы получите сообщение об ошибке следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bunzip2 is not installed in /bin/bunzip2, it is needed by this script&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать, куда у вас в системе установлен ''bunzip2'', выполните команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;which bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После чего откройте файл ''get-coastlines.sh'' и отредактируйте следующую строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае она будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BUNZIP2=/usr/bin/bunzip2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого снова запускайте этот файл. Должен начаться процесс загрузки данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./get-coastlines.sh /usr/local/share&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как все необходимые файлы были получены, необходимо осуществить небольшую правку конфигурационных файлов для адаптации их под свою систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/src/mapnik-style/inc&lt;br /&gt;
cp fontset-settings.xml.inc.template fontset-settings.xml.inc&lt;br /&gt;
cp datasource-settings.xml.inc.template datasource-settings.xml.inc&lt;br /&gt;
cp settings.xml.inc.template settings.xml.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''settings.xml.inc'' и приводим его к следующему виду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for symbols, the spatial reference of your postgis tables, coastline shapefiles directory, and their prefix names.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'symbols' unless you have moved the symbols directory --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY symbols &amp;quot;symbols&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use the '&amp;amp;srs900913;' entity if you have called osm2pgsql without special flags (or with -m); use '&amp;amp;srs4326;' if you have used -l --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY osm2pgsql_projection &amp;quot;&amp;amp;srs900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- used for 'node in way' ST_DWithin spatial operations --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.1 (meters) when your database is in 900913     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use 0.000001 (degrees) when your database is in 4326 --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_900913 &amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_4326 &amp;quot;0.00001&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY dwithin_node_way &amp;quot;&amp;amp;dwithin_900913;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'world_boundaries', which is the usual naming for the local folder the coastline shapefiles are unzipped into --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY world_boundaries &amp;quot;/usr/local/share/world_boundaries&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- use 'planet_osm' unless you have customized your database table prefix using the osm2pgsql 'prefix' flag --&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY prefix &amp;quot;planet_osm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем файл ''datasource-settings.xml.inc'' и приводим его к следующему виду (указав собственный пароль и охват, соответствующий загруженным в базу данным):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Settings for your postgres setup.&lt;br /&gt;
&lt;br /&gt;
Note: feel free to leave password, host, port, or use blank&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;type&amp;quot;&amp;gt;postgis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;password&amp;quot;&amp;gt;Ijdg83wk&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;host&amp;quot;&amp;gt;%(host)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;Parameter name=&amp;quot;port&amp;quot;&amp;gt;%(port)s&amp;lt;/Parameter&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;user&amp;quot;&amp;gt;dr&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;dbname&amp;quot;&amp;gt;gis&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- this should be 'false' if you are manually providing the 'extent' --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;estimate_extent&amp;quot;&amp;gt;false&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&amp;lt;!-- manually provided extent in epsg 900913 for whole globe --&amp;gt;&lt;br /&gt;
&amp;lt;!-- providing this speeds up Mapnik database queries --&amp;gt;&lt;br /&gt;
&amp;lt;Parameter name=&amp;quot;extent&amp;quot;&amp;gt;-20037508.33,4183149.83,20037508.34,17014106.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19879</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19879"/>
		<updated>2014-07-09T19:05:03Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий nextgis: скопируйте [http://nextgis.ru/programs/centos/nextgis.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;br /&gt;
&lt;br /&gt;
=== Установка PostgreSQL/PostGIS ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgresql93-server&lt;br /&gt;
service postgresql-9.3 initdb&lt;br /&gt;
service postgresql-9.3 start&lt;br /&gt;
chkconfig postgresql-9.3 on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install postgis2_93&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка mod_tile, renderd, Mapnik, osm2pgsql ===&lt;br /&gt;
&lt;br /&gt;
Устанавливаем основные инструменты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install apache2-mod_tile renderd mapnik mapnik-python osm2pgsql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание базы данных и загрузка данных ==&lt;br /&gt;
&lt;br /&gt;
Создаём суперпользователя от имени которого будет вестись работа с базой данных(назовём его ''dr'', а базу данных ''gis''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;createuser dr -s -P -e&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;createdb -E UTF8 -O dr gis&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем функции PostGIS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;su - postgres -c &amp;quot;psql -d gis -c 'CREATE EXTENSION postgis;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO dr;'&amp;quot;&lt;br /&gt;
su - postgres -c &amp;quot;psql -d gis -c 'ALTER TABLE spatial_ref_sys OWNER TO dr;'&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем данные в базу. Будем загружать данные на территорию СНГ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/src&lt;br /&gt;
cd ~/src&lt;br /&gt;
wget http://data.gis-lab.info/osm_dump/dump/latest/local.osm.pbf&lt;br /&gt;
osm2pgsql -U dr -W --slim -C 1500 --number-processes 4 -d gis --drop local.osm.pbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании osm2pgsql мы указали объём выделяемой оперативной памяти 1.5 Гб (''-C'' 1500), включили slim-режим (''--slim'', подробности о режимах загрузки данных можно найти в документации) и активировали загрузку в 4 процесса (''--number-processes'' 4). Кроме того, так как мы не планируем diff-обновления наших данных, то используя ключ ''--drop'', мы автоматически удаляем создаваемые при загрузке данных slim-таблицы, что значительно уменьшает размер нашей базы данных. Загрузка данных будет продолжаться несколько часов, сколько конкретно - зависит от аппаратной част и настроек программного обеспечения, более подробную информацию можно получить в данной [http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf презентации].&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19878</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19878"/>
		<updated>2014-07-09T18:53:15Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;br /&gt;
&lt;br /&gt;
== Установка программного обеспечения ==&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива мы будем рассматривать операционную систему CentOS 6 x86_64. Так как большинство из необходимого ПО (mod_tile, renderd, Mapnik, osm2pgsql) для данной операционной системы отсутствуют (либо устарели), а ставить из исходных кодов не очень хорошо, то предварительно соберем их в [https://github.com/nextgis/gis_packages_centos RPM-пакеты]. Для их удобной установки нами был организован тестовый [http://nextgis.ru/programs/centos/ репозиторий]. Как его подключить и работать с ним будет рассмотрено далее.&lt;br /&gt;
&lt;br /&gt;
=== Подключение необходимых репозиториев ===&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий EPEL 6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://fedora-mirror01.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий с PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum localinstall http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле конфигурации стандартного репозитория, раположенного по адресу ''/etc/yum.repos.d/CentOS-Base.repo'' в секции ''[base]'' и ''[updates]'' добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exclude=postgresql*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем репозиторий enetres, содержащий свежую версию библиотеку Boost C++ 1.55, используемую при сборке Mapnik. Для подключения данного репозитория скопируйте [http://repo.enetres.net/enetres.repo файл] в директорию ''/etc/yum.repos.d/''.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19877</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19877"/>
		<updated>2014-07-09T18:46:32Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;br /&gt;
&lt;br /&gt;
Данный стек технологий работает только в UNIX-подобных операционных системах и не работает в Windows, так как использует для связи mod_tile и renderd доменные сокеты Unix.&lt;br /&gt;
&lt;br /&gt;
Если в качестве операционной системы вы планируете использовать 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-специфичны. Вот тут, возможно, и пригодится вам данная статья.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19876</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19876"/>
		<updated>2014-07-09T18:44:55Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;br /&gt;
&lt;br /&gt;
== Стек программных продуктов тайлового сервера openstreetmap.org ==&lt;br /&gt;
&lt;br /&gt;
Существуют различные инструменты создания тайловых серверов со своими плюсами и минусами, мы же рассмотрим данный процесс в разрезе стека технологий, применяемых для создания тайлов на сервере openstreetmap.org. Данный стек состоит из 5 компонентов: mod_tile, renderd, Mapnik, osm2pgsql и PostgreSQL/PostGIS. '''mod_tile''' - это модуль веб-сервера Apache, который отдаёт кэшированные тайлы и определяет нуждаются ли те или иные тайлы в отрисовке (в зависимости от того есть ли они в кэше и не истек ли срок их актуальности). '''renderd''' представляет собой систему управления очередью запросов на рендеринг, предназначенную для оптимизации нагрузки такими запросами. '''Mapnik''' - рендерер, используемый renderd. '''osm2pgsql''' - инструмент загрузки исходных данных OpenStreetMap в базу данных '''PostgreSQL/PostGIS'''.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19875</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19875"/>
		<updated>2014-07-09T18:41:51Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;br /&gt;
&lt;br /&gt;
Однако иногда возникает необходимость, чтобы данная подложка функционировала в том числе и при отсутствии Интернета (Интранет-приложения). Первым решением данной задачи, которое приходит в голову - это скачать необходимые тайлы с сайта OpenStreetMap. Однако это не очень удачное решение, так как политика использования тайлов запрещает их массовое скачивание и, кроме того, это не гибкий вариант, например, если вы вдруг решите использовать какой-то стиль, отличный от стандартного. Правильным решением данной задачи является получение исходных данных OpenStreetMap и построение на их основе собственного тайлового сервера. Решению данной задачи и посвящена данная статья.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19874</id>
		<title>Создание тайлового сервера на основе данных OpenStreetMap и mod tile</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_OpenStreetMap_%D0%B8_mod_tile&amp;diff=19874"/>
		<updated>2014-07-09T18:40:53Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: Новая страница: «{{Статья|Черновик}} {{Аннотация|Рассматривается процесс создания собственного тайлового …»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассматривается процесс создания собственного тайлового сервера на основе данных OpenStreetMap в операционной системе CentOS 6.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день в подавляющем большинство картографических веб-приложений в качестве одной из подложек используется слой на базе тайлов [http://www.openstreetmap.org/ OpenStreetMap]. Такая популярность данной подложки обусловлена во-первых [http://wiki.openstreetmap.org/wiki/Tile_usage_policy политикой] предоставления тайлов, позволяющей свободно использовать тайлы OpenStreetMap в своих приложениях, а во-вторых - простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0_GIS-Lab_17,_%D0%A5%D0%B0%D0%BA%D0%B0%D1%82%D0%BE%D0%BD,_%D0%90%D0%A2%D0%94&amp;diff=19710</id>
		<title>Встреча GIS-Lab 17, Хакатон, АТД</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0_GIS-Lab_17,_%D0%A5%D0%B0%D0%BA%D0%B0%D1%82%D0%BE%D0%BD,_%D0%90%D0%A2%D0%94&amp;diff=19710"/>
		<updated>2014-06-01T13:09:24Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Организационное|meet17}}&lt;br /&gt;
&lt;br /&gt;
В рамках 17-й встречи GIS-Lab состоялся хакатон посвященный работе над рядом задач по административно-территориальному делению РФ (АТД).&lt;br /&gt;
&lt;br /&gt;
==Участники==&lt;br /&gt;
http://doodle.com/a56e6wichdta9k3b&lt;br /&gt;
&lt;br /&gt;
==Обсуждение в форуме==&lt;br /&gt;
http://gis-lab.info/forum/viewtopic.php?t=16654&lt;br /&gt;
&lt;br /&gt;
==Место проведения==&lt;br /&gt;
Место проведения: офис NextGIS&lt;br /&gt;
&lt;br /&gt;
==Задачи для хакатона==&lt;br /&gt;
Планируется приложить усилия для решения следующих задач (подписывайтесь, можно несколько человек на задачу):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Задача !! Описание !! Кто берется !! Сделано !! Итог&lt;br /&gt;
|-&lt;br /&gt;
| Исправить ошибки в границах Москвы&lt;br /&gt;
| Ручное редактирование, частности, нужно исправить пересечения с домами, коих выявлено аж 216 штук&lt;br /&gt;
| МД, МК&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Проверить границы Москвы&lt;br /&gt;
| Ручное редактирование, исходные данные - ([http://docs.cntd.ru/document/3608167 ФЗ г. Москвы])&lt;br /&gt;
| МД, МК&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Обновить наборы данных по АТД Москвы&lt;br /&gt;
| http://gis-lab.info/qa/moscow-atd.html&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Инструмент для QGIS для разбития полигонов&lt;br /&gt;
| На входе слой полигонов и слой линий, на выходе слой полигонов разбитых линиями&lt;br /&gt;
| ДР&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Обновить процесс генерализации АТД&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Обновить наборы генерализованных данных&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Обновить и улучшить наборы данных по делению на избирательные округа&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Починка и наладка сервиса выгрузок границ и регцентров&lt;br /&gt;
| http://gis-lab.info/qa/osm-adm.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://gis-lab.info/qa/osm-regcenter.html&lt;br /&gt;
| ДК&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Разбивка полигонов линиями&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Код&lt;br /&gt;
! Административный округ&lt;br /&gt;
! Сокращение&lt;br /&gt;
! Код ОКАТО&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Восточный&lt;br /&gt;
|ВАО&lt;br /&gt;
|45263000&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Западный&lt;br /&gt;
|ЗАО&lt;br /&gt;
|45268000&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Зеленоградский&lt;br /&gt;
|ЗелАО&lt;br /&gt;
|45272000&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Новомосковский&lt;br /&gt;
|???&lt;br /&gt;
|45297000&lt;br /&gt;
|-&lt;br /&gt;
|5 - NI&lt;br /&gt;
|Северный&lt;br /&gt;
|САО&lt;br /&gt;
|45277000&lt;br /&gt;
|-&lt;br /&gt;
|6 - EF&lt;br /&gt;
|Северо-Восточный&lt;br /&gt;
|СВАО&lt;br /&gt;
|45280000&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Северо-Западный&lt;br /&gt;
|СЗАО&lt;br /&gt;
|45283000&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Троицкий&lt;br /&gt;
|???&lt;br /&gt;
|45298000&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Центральный&lt;br /&gt;
|ЦАО&lt;br /&gt;
|45286000&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Юго-Восточный&lt;br /&gt;
|ЮВАО&lt;br /&gt;
|45290000&lt;br /&gt;
|-&lt;br /&gt;
|11 - NL&lt;br /&gt;
|Юго-Западный&lt;br /&gt;
|ЮЗАО&lt;br /&gt;
|45293000&lt;br /&gt;
|-&lt;br /&gt;
|12 - MK&lt;br /&gt;
|Южный&lt;br /&gt;
|ЮАО&lt;br /&gt;
|45296000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Инструмент для QGIS для разбития полигонов ==&lt;br /&gt;
&lt;br /&gt;
Для решения данной задачи можно создать модель в QGIS, использующую алгоритм ''Polygon-line intersection'' из SAGA.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Poly-split-model.png]]&lt;br /&gt;
&lt;br /&gt;
Особенность данного алгоритма заключается в том, что данный алгоритм корректно разделяет полигоны линиями, которые пересекают полигоны только один раз, в противном случае определяется первая и последняя точки пересечения и отрезком, соединяющим данные точки, разрезается полигон.&lt;br /&gt;
&lt;br /&gt;
==Отчет о результатах==&lt;br /&gt;
[http://gis-lab.info/blog/2013-07/hack-uik-results/ О результатах хакатона]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Уточнение расположения УИКов]]&lt;br /&gt;
[[Категория:Служебные]]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Poly-split-model.png&amp;diff=19709</id>
		<title>Файл:Poly-split-model.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Poly-split-model.png&amp;diff=19709"/>
		<updated>2014-06-01T13:05:33Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18462</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18462"/>
		<updated>2014-03-26T09:06:16Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
К роутинговым движкам относится программное обеспечение, позволяющее прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - [http://project-osrm.org/ Open Source Routing Machine (OSRM)], написанная на С++.&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] (уже вроде исправили) и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18436</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18436"/>
		<updated>2014-03-25T06:10:05Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
К роутинговым движкам относится программное обеспечение, позволяющее прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - [http://project-osrm.org/ Open Source Routing Machine (OSRM)], написанная на С++.&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18435</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18435"/>
		<updated>2014-03-25T06:08:40Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
Программное обеспечение данного типа позволяет прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - [http://project-osrm.org/ Open Source Routing Machine (OSRM)], написанная на С++.&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18357</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18357"/>
		<updated>2014-03-23T12:19:50Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;br /&gt;
# [http://shtosm.ru/all/grasshopper/ ШТОСМ: Graphhopper]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18355</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18355"/>
		<updated>2014-03-23T12:04:30Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примера возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18354</id>
		<title>Развертывание GraphHopper в качестве веб-сервиса для построения маршрутов</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_GraphHopper_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%BE%D0%B2&amp;diff=18354"/>
		<updated>2014-03-23T11:58:03Z</updated>

		<summary type="html">&lt;p&gt;Denis Rykov: /* Запуск GraphHopper с помощью Jetty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик|graphhopper-deploy}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс развертывания GraphHopper в качестве Веб-сервиса.}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
[http://graphhopper.com/ GraphHopper] - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:&lt;br /&gt;
&lt;br /&gt;
* работу с данными OpenStreetMap&lt;br /&gt;
* эффективное использования памяти&lt;br /&gt;
* широкие возможности по настройке&lt;br /&gt;
* свободная лицензия Apache&lt;br /&gt;
&lt;br /&gt;
Так как код GraphHopper полностью [https://github.com/graphhopper/graphhopper открыт], то вы можете использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API. Именно процедуре развертывания GraphHopper в качестве сервиса маршрутизации и посвящена в данная статья. Пример Веб-приложения, использующего GraphHopper в качестве роутингового движка можно посмотреть [http://graphhopper.com/maps/?point=madrid&amp;amp;point=moscow тут]. Отметим, что данное приложение вы получаете автоматически при разворачивании GraphHopper в качестве Веб-сервиса.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать GraphHopper в качестве Веб-сервиса можно самостоятельно собрать собственный [http://ru.wikipedia.org/wiki/WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0) WAR-файл] либо воспользоваться уже готовой сборкой. Мы будем использовать как раз готовую сборку. К первому варианту следует прибегать в тех случаях, если готовая сборка вас чем-то не устраивает и вы хотите что-то в ней изменить. Подробнее про сборку GraphHopper [https://github.com/graphhopper/graphhopper/wiki/Developers тут].&lt;br /&gt;
&lt;br /&gt;
Для развертывания WAR-файла нам потребуется воспользоваться каким-либо контейнером сервлетов. Мы рассмотрим два варианта: развертывание GraphHopper: с помощью [http://www.eclipse.org/jetty/documentation/current/jetty-runner.html Jetty Runner] и [http://www.eclipse.org/jetty/ Jetty]. Первый вариант следует использовать, если вы хотите &amp;quot;по-быстрому&amp;quot; оценить, что из себя представляет GraphHopeer. Второй же вариант подходит для промышленного использования.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty Runner ==&lt;br /&gt;
&lt;br /&gt;
Jetty Runner предназначен для быстрого запуска Веб-приложений непосредственно из командной строки и не требует установки&lt;br /&gt;
полноценного Веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Для дальнейшей работы создадим в домашней директории каталог ''graphhopper'' (все файлы, с которыми мы будем работать, должны быть размещены здесь). В Linux: &amp;lt;pre&amp;gt;mkdir ~/graphhopper&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Воспользуемся версией Jetty Runner 9.1.2 [http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.1.2.v20140210/jetty-runner-9.1.2.v20140210.jar jetty-runner-9.1.2.v20140210.jar]. Поместим его в директорию ''graphhopper''. Отметим, что для запуска Jetty Runner данной версии в системе должна быть установлена JRE7 или JRE8. Если же у вас нет возможности обновить JRE, то для запуска Jetty Runner на JRE6 можно попробовать воспользоваться [http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/ старыми версиями] Jetty Runner.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;На сегодняшний день последняя стабильная версия GraphHopper - 0.2, master-версия имеет ряд проблем, например, неправильное указание направлений в описании маршрута [https://github.com/graphhopper/graphhopper/issues/171 #171] и поэтому мы будем работать именно с версией 0.2. Скачиваем [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем пример конфигурационного файла GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Скачиваем данные проекта OpenStreetMap на основе которых будет осуществляться роутинг. Для примере возьмём [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москву].&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Запускаем GraphHopper: &amp;lt;pre&amp;gt;java -Dgraphhopper.config=config-example.properties -Dgraphhopper.osmreader.osm=RU-MOS-140322.osm.pbf -jar jetty-runner-9.1.2.v20140210.jar --port 8989 graphhopper-web-0.2.war&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый запуск займёт какое-то время (порядка 1 минуты), это связано с построением графа роутинга. Если в процессе запуска не возникло никаких ошибок, то открыв в браузере страницу по адресу http://localhost:8989/, вы увидите следующую картину:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graphhopper-web-app.png|671px|thumb|center|&amp;lt;center&amp;gt;Веб-приложение GraphHopper&amp;lt;/center&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
По данному адресу (http://localhost:8989/) расположено Веб-приложение, с помощью которого можно указать начальную и конечную точки и просмотреть получившийся маршрут, а также его текстовое описание с указанием того куда и через сколько метров следует поворачивать. В некоторых случаях достаточно просто вставить ссылку на это приложение в свою страницу и тем самым предоставить клиентам возможность построения маршрутов.&lt;br /&gt;
&lt;br /&gt;
Если же вы не хотите использовать Web-приложение GraphHopper, а только HTTP API, то вам следует ознакомиться со следующей [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md документацией]. Пример HTTP запроса к GraphHopper: http://localhost:8989/api/route?point=55.422779,37.254639&amp;amp;point=55.646599,38.023682&amp;amp;locale=ru-RU.&lt;br /&gt;
&lt;br /&gt;
Также имеется API для получения информации об инстансе GraphHopper: http://localhost:8989/api/info.&lt;br /&gt;
&lt;br /&gt;
== Запуск GraphHopper с помощью Jetty ==&lt;br /&gt;
&lt;br /&gt;
Jetty — это свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером. Если у вас еще не установлен Jetty, то установите его. Дальнейшие инструкции предполагают, что установлен Jetty версии 9, который слушает порт 8180.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В директорию ''webapps'' контейнера Jetty поместите WAR-файл GraphHopper, [http://oss.sonatype.org/content/groups/public/com/graphhopper/graphhopper-web/0.2/graphhopper-web-0.2.war graphhopper-web-0.2.war], переименовав его в ''graphhopper.war''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сюда же поместим файл с данными OpenStreetMap, [http://be.gis-lab.info/data/osm_dump/dump/RU-MOS/RU-MOS-140322.osm.pbf Москва].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В корень директории, куда установлен Jetty (уровень вложенности на котором находится директория ''webapps''), поместите файл с настройками GraphHopper [https://raw.github.com/graphhopper/graphhopper/master/config-example.properties config-example.properties], переименовав его в ''config.properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отредактируйте файл ''config.properties'', добавив в него полный путь до файла с данными OpenStreetMap (замените путь на свой):&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;# where to find osm/pbf file&lt;br /&gt;
osmreader.osm=/usr/local/jetty/webapps/RU-MOS-140322.osm.pbf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перезапустите Jetty. В Linux: &amp;lt;pre&amp;gt;sudo service jetty restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того как вы перезапустили Jetty, в директории webapps будет создана новая директория, содержащая роутинговый граф, в нашем случае это будет директория ''RU-MOS-140322.osm-gh''. Если вы сразу же после перезапуска Jetty попытаетесь перейти по адресу http://localhost:8180/graphhopper/ (либо Jetty вообще не запустился), то ничего не увидите. Нужно подождать некоторое время, пока граф построится (директория ''RU-MOS-140322.osm-gh'' будет непустой), либо если Jetty не запустился, то тоже подождать и запустить его еще раз.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте страницу http://localhost:8180/graphhopper/. Вы должны увидеть карту и следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;GraphHopper API offline? http://localhost:8180&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Причина возникновения этого сообщения заключается в том, что Веб-приложение ожидает, что HTTP API доступно по адресу http://localhost:8180, а не по http://localhost:8180/graphhopper/. Данную проблему можно решить двумя путями: либо взять исходники GraphHopper, отредактировать там путь и собрать собственный WAR-файл, либо настроить Jetty таким образом, чтобы GraphHopper открывался по адресу http://localhost:8180. Этим способом мы и воспользуемся: просто переименуйте файл ''graphhopper.war'' в ''root.war'' и перезапустите Jetty.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
# [http://graphhopper.com/ GraphHopper]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Quickstart Quickstart]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/wiki/Developers Developers]&lt;br /&gt;
# [https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md Routing Web API Docs]&lt;/div&gt;</summary>
		<author><name>Denis Rykov</name></author>
	</entry>
</feed>