Switch2OSM

Керуйте вашими мапами самі

Використання контейнера 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” і далі. Це буде трохи швидше наступного разу, бо статичні дані для стилю вже в наявності і їх не треба завантажувати.