1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-osm2vectortiles

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
USAGE.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 04:56 56a41d1

Документация по использованию

Если вы дошли до этого момента, вы уже изучили документацию и, вероятно, импортировали небольшой фрагмент планеты. Если вы хотите адаптировать OSM2VectorTiles для своих целей или запустить процесс самостоятельно, эта документация по использованию для вас. Большое спасибо @stirringhalo за большую часть документации по использованию.

Требования

Весь проект структурирован из компонентов с использованием контейнеров Docker для совместной работы. Убедитесь, что вы соответствуете требованиям для запуска рабочего процесса OSM2VectorTiles.

  • Установите Docker.
  • Установите Docker Compose.
  • Настройте корзину S3 (или совместимое объектное хранилище).

Мы предполагаем настройку одной машины для этой цели и позже подробно рассмотрим, как запустить рабочий процесс распределённым образом.

Требования к оборудованию:

Вы можете отображать небольшие области с помощью OSM2VectorTiles на своём локальном компьютере. Однако для запуска рабочего процесса в глобальном масштабе вам нужна значительная инфраструктура.

  • 500 ГБ дискового пространства (150 ГБ PostGIS, 30 ГБ дампа планеты, 50 ГБ кэша imposm3, 50 ГБ финальных MBTiles).
  • Рекомендуется 16 ГБ+ ОЗУ (до 50 ГБ ОЗУ для PostGIS).
  • 8+ ядер ЦП (до 16–40 ядер) для рендеринга векторных тайлов и расчётов PostGIS.

Процедура высокого уровня

Архитектура проекта структурирована в фазу импорта (ETL-процесс), фазу обнаружения изменённых тайлов и фазу экспорта (рендеринг векторных тайлов).

Если вы запускаете распределённый рабочий процесс самостоятельно, происходят следующие шаги. Подробное объяснение следует после.

  1. Импортируйте внешние источники данных в PostGIS.
  2. Импортируйте PBF OpenStreetMap в PostGIS.
  3. Создайте низкоуровневый глобальный экстракт от z0 до z8.
  4. Сгенерируйте задания для рендеринга всей планеты и отправьте их в очередь сообщений (RabbitMQ).
  5. Запустите процессы рендеринга для обработки отправленных заданий.
  6. Объедините результаты заданий вместе в предыдущий низкоуровневый экстракт, получив окончательные MBTiles планеты.
  7. Создайте экстракты страны и города из MBTiles.

Рабочий процесс, структурированный по компонентам

Обзор компонентов

Документацию для каждого компонента можно найти в соответствующем исходном каталоге.

Компоненты импорта:

  • import-external: Импорт всех данных, которые не поступают напрямую из OpenStreetMap (NaturalEarth, OpenStreetMapData, пользовательские файлы данных).
  • import-osm: Импорт файлов планеты OpenStreetMap в PostGIS с использованием imposm3.
  • import-sql: Предоставление и генерация SQL, используемого в разных слоях. Содержит большую часть логики SQL.

Экспортные компоненты:

  • export-worker: Отвечает за рендеринг векторных тайлов с использованием источника векторных данных osm2vectortiles.tm2source. Экспорт может выполняться вместе с очередью сообщений, такой как RabbitMQ, или автономно для небольших экстрактов, где нет необходимости разделять работу на несколько частей.
  • merge-jobs: Объединяет результаты распределённого рендеринга в один файл MBTiles планеты.

Компоненты обнаружения изменённых тайлов:

  • changed-tiles: Вычисление списка изменённых тайлов.
  • generate-jobs: Ответственный за создание JSON-заданий для первоначального рендеринга планеты или заданий для обновления планеты.
  • update-osm-diff: Скачивание diffs из OpenStreetMap на основе импортированного файла планеты.
  • import-osm-diff: Импорт файла diff OpenStreetMap, созданного update-osm-diff.
  • merge-osm-diff: Объединение последнего файла diff со старым файлом планеты.

Этапы обработки

Подготовка

  1. Клонируйте репозиторий git clone https://github.com/osm2vectortiles/osm2vectortiles.git && cd osm2vectortiles.
  2. Если вы хотите собрать контейнеры самостоятельно, выполните make fast или make. В противном случае вы будете использовать общедоступные предварительно созданные образы Docker по умолчанию.
  3. Запустите и инициализируйте базу данных docker-compose up -d postgis.
  4. Импортируйте внешние данные 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

Создайте извлечение с помощью локального рабочего

Теперь вы можете использовать одного локального работника для рендеринга извлечения. Это можно использовать для создания извлечения по определённой причине или для генерации векторных тайлов низкого уровня.

  1. Сначала выберите конкретную ограничивающую рамку или экспортируйте глобальную ограничивающую рамку с сайта http://tools.geofabrik.de/calc/.
  2. Запустите локальный экспорт, который сохранит полученные MBTiles в 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.

Объедините MBTiles

Пожалуйста, ознакомьтесь с документацией компонента merge-jobs. Если вы используете общедоступный URL-адрес S3, объединение результатов заданий выполняется довольно просто.

  1. Убедитесь, что у вас есть файл export/planet.mbtiles, чтобы объединить задания. Повторно используйте извлечение низкого уровня, созданное ранее, или загрузите существующее извлечение низкого уровня с http://osm2vectortiles.org/downloads/.
  2. Объедините задания в файл планеты.
docker-compose run merge-jobs

Примените обновления Diff

Обновления выполняются поэтапно, где применяются различия. На этом этапе мы предполагаем, что вы успешно импортировали 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

Рассчитайте изменённые плитки с момента последнего импорта diff. Это сохранит изменённые плитки в export/tiles.txt.

docker-compose run changed-tiles

Создайте пакетные задания из

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-osm2vectortiles.git
git@api.gitlife.ru:oschina-mirror/mirrors-osm2vectortiles.git
oschina-mirror
mirrors-osm2vectortiles
mirrors-osm2vectortiles
master