ИспользуйOSM

Верни контроль над своими картами

Используем Docker-контейнер

Если вы хотите поэкспериментировать или используете не Ubuntu, но при этом используете Docker для контейнеризации, то можете попробовать этот. Он будет точно таким же, как и в этой инструкции, но в виде уже скомпилированного контейнера, готового к установке.

Docker

Если у вас еще не установлен Docker, то в сети вы можете найти много пособий по этому поводу - вот одно из них.

Данные OpenStreetmap

В качестве примера я скачаю и импортирую данные Замбии, но подойдёт любая из выгрузок OSM в формате PBF. Для тестирования рекомендуем начать с небольшим .pbf. Зайдите в систему не из-под root-пользователя, из-под которого вы запускаете Docker, и скачайте данные для Замбии:

cd
wget http://download.geofabrik.de/africa/zambia-latest.osm.pbf

Создайте docker-том для данных:

docker volume create openstreetmap-data

Установите его и импортируйте данные:

time docker run -v /home/renderaccount/zambia-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/10/main overv/openstreetmap-tile-server import

Путь к файлу с данными должен быть абсолютным - он не может быть относительным. В данном примере он находится в корневом каталоге пользователя “renderaccount”.

Скорость скачивания и импорта данных зависит от скорости вашего интернета и объема файла. Замбия, которую мы используем в качестве примера, относительно небольшая.

Обратите внимание, что если что-то пойдет не так, сообщения об ошибке могут быть несколько загадочными - вы можете получить “…is a directory” (это папка), если файл с данными не найден. “Время” в начале команды не требуется для установки и импорта, оно просто сообщает, сколько времени понадобилось, для дальнейшего обращения.

Если вам интересно, что и как будет делать docker-контейнер, то ознакомьтесь с этим файлом. Он почти полностью соответствует этой инструкции с небольшими отличиями, такими, как URL тайла и используемая внутренняя учетная запись. Внутри он также использует Ubuntu 18.04, хотя вам и не нужно взаимодействовать с ним напрямую.

Когда импорт будет завершен вы должны увидеть что-то такое:

Osm2pgsql took 568s overall

real    9m34.378s
user    0m0.030s
sys     0m0.060s

Здесь сообщается, сколько времени в общей сложности занял этот процесс (в данном случае 9,5 минут).

Чтобы запустить тайл-сервер:

docker run -p 80:80 -v openstreetmap-data:/var/lib/postgresql/10/main -d overv/openstreetmap-tile-server run

Чтобы проверить, что он работает, перейдите по следующему адресу:

http://your.server.ip.address/tile/0/0/0.png

Вы должны увидеть в своем браузере карту мира.

Просмотр тайлов

В качестве простой “slippy map” мы можем воспользоваться файлом “sample_leaflet.html” из каталога “extra” mod_tile. Измените “hot” в URL в данном файле на “tile”, затем просто откройте этот файл в веб-браузере на машине, где установили доке-контейнер. Если это невозможно, так как вы установили на сервере без локального веб-браузера, вам потребуется также отредактировать файл, зменив “127.0.0.1” IP-адресом сервера, затем скопировать его в /”var/www/html” на сервере.

Если вы хотите загрузить другую территорию, просто повторите процесс с “wget”. В следующий раз он будет быстрее, потому что статические данные, необходимые для стиля карты, не понадобятся.