Використання контейнера Docker
Якщо ви тільки бажаєте потестувати або ви використовуєте іншу операційну систему (відмінну від Ubuntu), або ви вже використовуєте Docker для контейнеризації – ви можете спробувати цю інструкцію. Вона базується на інструкції звідси і вже має готовий до використання контейнер.
Docker
Якщо у вас ще не встановлено Docker, ви можете скористатись різноманітними порадами щодо його встановлення, наприклад, одна з них в щоденниках OSM, що посилається на це керівництво.
Дані OpenStreetmap
Для демонстрації тут, завантажимо дані для Замбії та імпортуємо їх, але має спрацювати будь-який файл OSM .pbf. Для тесту спробуйте якийсь невеликий файл .pbf, для початку. Увійдіть з правами звичайного користувача до вашої системи та завантажте дані для Замбії:
cd ~
wget https://download.geofabrik.de/africa/zambia-latest.osm.pbf
Створіть docker volume для даних :
docker volume create openstreetmap-data
Встановіть контейнер та імпортуйте дані:
time docker run -v /home/renderaccount/zambia-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server:1.3.10 import
Шлях до файлу даних має бути абсолютним шляхом. В цьому прикладі це домашня тека нашого користувача “renderaccount”.
Як довго це триватиме – залежить від швидкості вашого зʼєднання з мережею та розміру ділянки для завантаження. Замбія, яку ми обрали для прикладу, має досить не багато даних.
Зауважте, якщо щось піде не так, повідомлення про помилки можуть бути трохи загадковими; ви можете побачити “… is a directory” якщо файл з даними не буде знайдений. Команда “time” на початку рядка не є обовʼязковою, вона лише повідомить вам як довго тривав процес, щоб ви мали уявлення про це на майбутнє. Також, версію сервера, що використовується в контейнері, було змінено з 1.3.5 на 1.3.6 (Див докладніше тут). Це означає, що “openstreetmap-data” створена у попередній версії не буде працювати, вам потрібно вилучити її за допомогою команди docker volume rm openstreetmap-data
та створити її заново.
Для отримання докладної інформації про те, що на справді відбуватиметься, ознайомтесь з файлом опису контейнера. Ви побачите, що він дуже схожий на інструкцію з “розгортання тайлового сервера вручну”, з незначними змінами, такими як URL для тайлів та використання внутрішнього облікового запису. Ви можете побачити що в середині контейнера використовується Ubuntu 18.04. Хоча вам і не треба взаємодіяти з системою безпосередньо ви можете зробити це за допомогою команди docker exec -it mycontainernumber bash
.
Після завершення імпорту ви маєте побачити повідомлення подібне до цього:
Osm2pgsql took 568s overall
real 9m34.378s
user 0m0.030s
sys 0m0.060s
Тут повідомляється скільки часу тривав імпорт (в цьому випадку 9 з половиною хвилин).
Для запуску тайлового сервера скористайтесь командою:
docker run -p 80:80 -v openstreetmap-data:/var/lib/postgresql/12/main -d overv/openstreetmap-tile-server:1.3.10 run
та перевірте чи він працює відкривши посилання:
http://адреса.вашого.сервера/tile/0/0/0.png
Ви маєте побачити мапу світу у вашому оглядачі.
Додаткова інформація
Цей докер-контейнер насправді підтримує набагато більше можливостей ніж наведено тут в прикладі, дивіться readme, щоб дізнатись деталі про оновлення, налаштування та таке інше.
Перегляд тайлів
Для перегляду простої “рухомої мапи” скористаємось файлом “sample_leaflet.html”, який знаходиться в теці “extra” mod_tile’а. Змініть “hot” в URL у файлі на “tile”, і відкрийте його в оглядачі на компʼютері де встановлено контейнер docker. Якщо це не можливо через відсутність встановленого вебоглядача, вам доведеться замінити у файлі “127.0.0.1” на IP адресу сервера та скопіювати його в “/var/www/html” на цьому сервері.
У разі потреби завантаження іншої території, повторіть процес від завантаження даних з допомогою “wget” і далі. Це буде трохи швидше наступного разу, бо статичні дані для стилю вже в наявності і їх не треба завантажувати.