Установка и настройка генерации тайлов на основе OSM данных под Windows

Установка и настройка генерации тайлов на основе OSM данных под Windows

Недавно по работе возникла задача генерации тайлов на основе OSM данных. Поискал, прочитал несколько статей, но везде фигурировали *nix-системы, а у меня был в наличии сервер под управлением Windows. В конце-концов, более-менее внятный туториал нашёлся, но он слегка устарел и не везде подробен, посему пришлось повозиться. После удачного завершения подумал, что мой опыт будет полезен.

Кого заинтересовал, прошу под кат.

Вводные
  • PostgreSQL (использовал 9.4.4) — БД для хранения геоинформации из дампа OSM.
  • PostGIS (использовал 2.1) — расширение БД для работы с геоинформацией.
  • Osm2pgsql — утилита для импорта дамп OSM данных в БД.
  • Mapnik (использовал 2.2.0) — утилита для генерации тайлов.
  • Патч для GiST-индексов в PostGIS
  • Python 2.х (использовал 2.7.10) — на нём написаны скрипты генерации тайлов.
  • PROJ.4 — библиотека картографических проекций.
  • SVN-клиент (использовал TortoiseSVN) — для выкачивания скриптов генерации тайлов от OSM, см. ниже.
  • Скрипты генерации от OSM (использовал ревизию 31519)
  • OSM информация: линии побережья и всё такое.
1. Установка и настройка PostgreSQL

Дистрибутив можно взять с офсайта. Установка достаточно тривиальна, однако, есть пара моментов.

Во-первых, возможно, следует изменить директорию, где хранится БД (может потребоваться до терабайта, в случае использования OSM данных для всей планеты). По умолчанию (для версии 9.4) это C:\Program Files\PostgreSQL\9.4\data

Во-вторых, возможно, следует изменить локаль кластера. В моём случае на Russian, Russia . При установке у вас также спросят пароль для сервера PostgreSQL, он ещё понадобится, запомните его.

После установки самого PostgreSQL, запустится StackBuilder, мастер установки расширений для БД. Нужно выбрать два расширения: Spatial Extensions -> PostGIS и Database Drivers -> JDBC. Все настройки при установке по-умолчанию. В процессе установки PostGIS будет запрос на создание системной переменной и ещё пара вопросов, соглашайтесь. После этого нужно перезапустить службу PostgreSQL.

Далее добавьте bin директорию PostgreSQL в PATH . После добавления нужно выйти из системы и войти заново (logoff-login), чтобы настройки применились.

Проверяем корректность установки, понадобится вспомнить пароль, который вы вводили на этапе установки. Находим в программах pgAdmin III и запускаем. В списке серверов будет единственный localhost:5432 , подключаемся. Если не удаётся, скорее всего, служба не запущена.

Создаём шаблон для базы геоданных:

Добавляем два расширения в шаблон: postgis и postgis_topology . Отключаемся от этой базы.

Создаём базу данных gis на основе шаблона template_postgis_20 :

Берём патч для PostGIS GiST отсюда. Патчим из командной строки:

База данных готова.

2. Установка и настройка Osm2pgsql

Можно взять последний релиз с гитхаба и собрать самому, а можно взять готовый артефакт отсюда.

Скачиваем, распаковываем, переименовываем для удобства в osm2pgsql . Добавляем эту директорию в переменную PATH . Logoff-login. Проверяем, что всё работает:

Должна вывестись справка. Берём последний default.style из репозитория на гитхабе.

Всё готово для импорта OSM данных.

Карта планеты в сжатом виде весит

40 Гб. Для примера можно взять карту Москвы, например, отсюда. Скачиваем.

Для импорта выполняем в командной строке:

Параметр -s , т.е. slim — режим, при котором временные данные хранятся в БД. Это замедляет процесс, увеличивает использование диска, но уменьшает использование оперативной памяти.

Если всё правильно, будет запрос пароля и начнётся импорт дампа в БД. В первых строчках будут всякие предупреждения, не пугайтесь, всё в порядке. После завершения импорта будет выведено что-то вроде:

Геоданные в базе.

3. Установка Python'а 2.x

Скачиваем дистрибутив x86 (потому что бинарники Mapnik для Windows есть только x86) отсюда. Ставим, настройки по-умолчанию, кроме одного: стоит отметить «Добавить python.exe в PATH», или сделать это ручками после установки. Logoff-login.

Проверяем правильность установки:

4. Установка и настройка Mapnik'а

Опять-таки есть два варианта: или собирать самому из исходников с гитхаба, или взять готовые бинарники здесь. Ищем Windows 32 bit Package , скачиваем, распаковываем в C:\mapnik-v2.2.0 .

У них есть довольно подробный мануал по установке в вики. Вкратце: добавить lib и bin директории мапника в PATH , это раз. Создать новую системную переменную PYTHONPATH и присвоить ей путь до C:\mapnik-v2.2.0\python\2.7\site-packages , это два. Поставить этот vcredist, это три. Logoff-login.

Проверяем правильность установки: Возможные ошибки разобраны в вики. Но помимио этого стоит попробовать перенести пути до lib и bin в начало PATH .

И генерим тестовые тайлы:

Идём на гитхаб, находим библиотеку PROJ.4, находим бинарники: Prebuilt Win32 executables, DLL including NAD27 grid shift files . Скачиваем, распаковываем ( c:\proj ). В PATH добавляем путь до bin , в новую переменную PROJ_LIB путь до nad . Logoff-login.

Скачиваем скрипты для генерации тайлов из официального svn-репозитория, кладём в c:\mapnik .

Далее, для работы скрипта нужны береговые линии и всякое такое. Для этого есть скрипт get-coastlines.sh , однако он написан на баше и под Windows работать не будет. Но он довольно простой и короткий, поэтому просто повторим все действия ручками.

Последние приготовления. Идём в mapnik\inc , файл settings.xml.inc.template переименовываем в settings.xml.inc .

Файл fontset-settings.xml.inc.template в fontset-settings.xml.inc .

Файл datasource-settings.xml.inc.template в datasource-settings.xml.inc и правим его:

Немного поправим скрипт generate_tiles.py : Блок на строке 193: заменяем на

Указываем границы в которых будет производиться генерация тайлов (географические координаты прямоугольника):

На строке 213 перед пишем (в нашем случае Москвы)

Указываем пути и запускаем генерацию тайлов:

Процесс должен пойти. Займёт от нескольких минут до недель (в случае всего мира и не самой мощной машины).

📎📎📎📎📎📎📎📎📎📎