Если вы дошли до этого момента, вы уже изучили документацию и, вероятно, импортировали небольшой фрагмент планеты. Если вы хотите адаптировать OSM2VectorTiles для своих целей или запустить процесс самостоятельно, эта документация по использованию для вас. Большое спасибо @stirringhalo за большую часть документации по использованию.
Весь проект структурирован из компонентов с использованием контейнеров Docker для совместной работы. Убедитесь, что вы соответствуете требованиям для запуска рабочего процесса OSM2VectorTiles.
Мы предполагаем настройку одной машины для этой цели и позже подробно рассмотрим, как запустить рабочий процесс распределённым образом.
Требования к оборудованию:
Вы можете отображать небольшие области с помощью OSM2VectorTiles на своём локальном компьютере. Однако для запуска рабочего процесса в глобальном масштабе вам нужна значительная инфраструктура.
Архитектура проекта структурирована в фазу импорта (ETL-процесс), фазу обнаружения изменённых тайлов и фазу экспорта (рендеринг векторных тайлов).
Если вы запускаете распределённый рабочий процесс самостоятельно, происходят следующие шаги. Подробное объяснение следует после.
Документацию для каждого компонента можно найти в соответствующем исходном каталоге.
Компоненты импорта:
Экспортные компоненты:
Компоненты обнаружения изменённых тайлов:
git clone https://github.com/osm2vectortiles/osm2vectortiles.git && cd osm2vectortiles
.make fast
или make
. В противном случае вы будете использовать общедоступные предварительно созданные образы Docker по умолчанию.docker-compose up -d postgis
.docker-compose run import-external
. Скачайте файл планеты или извлеките из Planet OSM или Geofabrik и сохраните его в папке import
.wget http://planet.osm.org/pbf/planet-latest.osm.pbf
Импортируйте OSM в PostGIS. Поскольку импорт происходит в режиме diff, это может занять до 14 часов для всей планеты.
docker-compose run import-osm
Подготовьте SQL, необходимый для рендеринга различных слоёв.
docker-compose run import-sql
Теперь вы можете использовать одного локального работника для рендеринга извлечения. Это можно использовать для создания извлечения по определённой причине или для генерации векторных тайлов низкого уровня.
export/tiles.mbtiles
.# Создайте извлечение низкого уровня от z0 до z8 для всей планеты
docker-compose run \
-e BBOX="-180, -85, 180, 85" \
-e MIN_ZOOM="0" \
-e MAX_ZOOM="8" \
export
# Создайте извлечение для Албании от z10 до z14
docker-compose run \
-e BBOX="19.6875,40.97989806962015,20.390625,41.50857729743933" \
-e MIN_ZOOM="10" \
-e MAX_ZOOM="14" \
export
Вам необходимо распределить задания между несколькими работниками для рендеринга всей планеты. Для работы с очередями сообщений и заданиями мы рекомендуем использовать pipecat.
Запустите сервер очереди сообщений. Сервер очереди сообщений будет отслеживать задания и результаты.
docker-compose up -d rabbitmq
Разделите планету на задания от z8 до z14 и опубликуйте задания в RabbitMQ. Чтобы визуализировать всю планету, выберите плитку верхнего уровня 0/0/0
и уровень задания 8
.
docker-compose run \
-e TILE_X=0 -e TILE_Y=0 -e TILE_Z=0 \
-e JOB_ZOOM=8 \
generate-jobs
Масштабируйте рабочих, чтобы они могли выполнять задания. Убедитесь, что BUCKET_NAME
, AWS_ACCESS_KEY
, AWS_SECRET_ACCESS_KEY
и AWS_S3_HOST
настроены правильно, чтобы работник мог загрузить результаты в S3.
docker-compose scale export-worker=4
Следите за прогрессом в интерфейсе управления RabbitMQ. Проверьте открытый внешний порт Docker интерфейса управления RabbitMQ на порту 15672
.
Пожалуйста, ознакомьтесь с документацией компонента merge-jobs. Если вы используете общедоступный URL-адрес S3, объединение результатов заданий выполняется довольно просто.
export/planet.mbtiles
, чтобы объединить задания. Повторно используйте извлечение низкого уровня, созданное ранее, или загрузите существующее извлечение низкого уровня с http://osm2vectortiles.org/downloads/.docker-compose run merge-jobs
Обновления выполняются поэтапно, где применяются различия. На этом этапе мы предполагаем, что вы успешно импортировали PBF в базу данных и один раз визуализировали планету.
Загрузите последние журналы изменений OSM. Если вы работаете с планетой, удалите OSM_UPDATE_BASEURL
из раздела environment
в update-osm-diff
. Если вы используете пользовательский экстракт от Geofabrik, вы можете указать там собственный URL обновления.
Загрузите последние журналы изменений с момента последней даты изменения файла planet.pbf.
docker-compose run update-osm-diff
Теперь импортируйте загруженные OSM-различия в export/latest.osc.gz
в базу данных. Это может занять до половины дня.
docker-compose run import-osm-diff
После этого вы успешно применили обновления diff к базе данных, и теперь вы можете либо повторно визуализировать всю планету, либо только те плитки, которые изменились.
После импорта различий вы можете повторно применить различия к исходному файлу PBF, чтобы поддерживать его актуальность.
docker-compose run merge-osm-diff
Рассчитайте изменённые плитки с момента последнего импорта diff. Это сохранит изменённые плитки в export/tiles.txt
.
docker-compose run changed-tiles
Создайте пакетные задания из
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )