Встановлення та налаштування генерації тайлів на основі 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 не працюватиме. Але він досить простий і короткий, тому повторимо всі дії ручками.
Завантажуємо:
- Раз
- Два
- Три
- Чотири
- П'ять
Останні приготування. Ідемо в 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 перед пишем (у разі Москви)
Вказуємо шляхи та запускаємо генерацію тайлів:
Процес має піти. Займе від кількох хвилин до тижнів (у разі всього світу і не найпотужнішої машини).
Ви можете допомогти і перевести небагато коштів на розвиток сайту