Встановлення та налаштування генерації тайлів на основі OSM даних під Windows

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

Кого зацікавив, прошу під кат.

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.0python2.7site-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 не працюватиме. Але він досить простий і короткий, тому повторимо всі дії ручками.

Завантажуємо:

  • Раз
  • Два
  • Три
  • Чотири
  • П'ять
Розпаковуємо всі архіви в директорію в c:\mapnik\world_boundaries.

Останні приготування. Ідемо в 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 перед пишем (у разі Москви)

Вказуємо шляхи та запускаємо генерацію тайлів:

Процес має піти. Займе від кількох хвилин до тижнів (у разі всього світу і не найпотужнішої машини).

Ви можете допомогти і перевести небагато коштів на розвиток сайту