На этой странице показано, как можно использовать OpenStreetMap Carto для реализации тайлового сервера с использованием того же программного обеспечения, что и OpenStreetMap. Он включает в себя пошаговые инструкции по установке Tile Server на основе Ubuntu и ограничен описанием некоторых передовых методов, учитывая, что основной целью этого сайта является предоставление руководств по настройке среды разработки OpenStreetMap Carto и предложение рекомендации по редактированию стиля.
OSM Tile Server — это веб-сервер, специализирующийся на доставке растровых карт, представляющих их как статические тайлы и способный выполнять рендеринг в реальном времени или предоставлять кэшированные изображения. Веб-программное обеспечение, принятое OpenStreetMap, представляет собой HTTP-сервер Apache вместе со специальным подключаемым модулем с именем mod_tile и связанным с ним внутренним стеком, способным генерировать плитки во время выполнения; программы и библиотеки объединены в цепочку для создания сервера тайлов.
Как это часто бывает с OpenStreetMap, существует множество способов достижения цели, и почти все компоненты имеют альтернативы, которые имеют различные преимущества и недостатки. В этом руководстве описывается стандартный процесс установки OSM Tile Server, используемого на OpenStreetMap.org.
Он состоит из следующих основных компонентов:
Все упомянутое программное обеспечение является открытым исходным кодом.
Для тайлового сервера требуется база данных PostGIS , в которой хранятся геопространственные объекты, заполненные инструментом osm2pgsql из данных OSM. Кроме того, необходим каталог файловой системы, включающий файл OSM.xml , символы карты (проверьте подкаталог openstreetmap-carto/symbols) и шейп-файлы (проверьте подкаталог openstreetmap-carto/data). OSM.xml предварительно создается инструментом carto из стиля openstreetmap-carto (project.mml и все связанные файлы CartoCSS, включенные в openstreetmap-carto).
Когда веб-сервер Apache получает запрос от браузера, он вызывает подключаемый модуль mod_tile , который, в свою очередь, проверяет, была ли плитка уже создана (из предыдущего рендеринга) и кэширована, чтобы она была готова к использованию; в этом случае mod_tile немедленно отправляет плитку обратно на веб-сервер. И наоборот, если запрос необходимо отобразить, то он ставится в очередь на серверную часть рендеринга , которая отвечает за вызов Mapnik для выполнения фактического рендеринга; renderd — это процесс- демон , включенный в исходники mod_tile и связанный с mod_tile через очереди UNIX. визуализированныйявляется стандартным бэкэндом, используемым в настоящее время www.openstreetmap.org, даже если некоторые реализации OSM используют Tirex ; Mapnik извлекает данные из базы данных PostGIS в соответствии с информацией о стиле openstreetmap-carto и динамически отображает тайл. renderd возвращает созданный тайл на веб-сервер и, в свою очередь, в браузер.
Демон renderd реализует механизм очередей с несколькими уровнями приоритета, чтобы обеспечить актуальность просмотра с учетом доступных ресурсов рендеринга. Наивысший приоритет — для рендеринга «на лету» тайлов, еще не находящихся в кэше тайлов, два уровня приоритета для повторного рендеринга устаревших тайлов «на лету» и две очереди фонового пакетного рендеринга. Чтобы избежать проблем с каталогами, которые становятся слишком большими, и чтобы избежать слишком большого количества крошечных файлов, Mod_tile / renderd хранит визуализированные тайлы в «метатайлах», в специальной хешированной структуре каталогов.
Даже если тайловый сервер динамически генерирует тайлы во время выполнения, они также могут быть предварительно визуализированы для просмотра в автономном режиме с помощью специального инструмента с именем render_list , который обычно используется для предварительного рендеринга тайлов с низким уровнем масштабирования и требует значительного времени для выполнения процесса (десятки часов в случае, если вся планета предварительно визуализируется); эта утилита включена в mod_tile , а также в другой инструмент с именем render_expired , который предоставляет методы для разрешения истечения срока действия тайлов карты. Более подробное описание render_list и render_expired можно найти на их справочных страницах.
Справочную информацию о методе истечения срока действия тайлов можно найти в механизме истечения срока действия тайлов.
Убедитесь, что ваша система Ubuntu полностью обновлена:
lsb_release -a
команда возвращает версию Ubuntu.
Чтобы обновить систему:
sudo apt-get update
команда загружает списки пакетов из репозиториев и «обновляет» их, чтобы получить информацию о новейших версиях пакетов и их зависимостях. Это будет сделано для всех репозиториев и PPA. Из http://linux.die.net/man/8/apt-get
sudo apt list --upgradable
команда выведит списки пакетов готовых к обновлению
sudo apt-get -y upgrade
команда обновляет все устаревшие пакеты и применить исправления безопасности с выводом подсказок « Да» или «Нет », спрашивая, нужно ли устанавливать зависимые пакеты или нет. Если вы устанавливаете большой пакет или пакет с большим количеством зависимостей, или устанавливаете несколько пакетов, ответы на эти запросы не позволят вам переключиться на выполнение какой-либо работы.
sudo apt upgrade
команда обновляет все устаревшие пакеты и применить исправления безопасности
Основные элементы:
sudo apt-get -y install ca-certificates gnupg curl unzip gdal-bin \ tar wget bzip2 build-essential clang python3-psycopg2 python3-yaml \ python3-requests postgresql-client
sudo apt-get -y install munin-node munin protobuf-c-compiler libtiff5-dev libcairomm-1.0-dev libagg-dev lua5.1 liblua5.1-0-dev
Проверьте предварительные условия, предложенные openstreetmap-carto.
FROM ubuntu:bionic # # Зависимости стиля RUN apt-get update && apt-get install --no-install-recommends -y \ ca-certificates curl gnupg postgresql-client python3 python3-distutils \ fonts-hanazono fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted \ mapnik-utils nodejs npm ttf-unifont unzip && rm -rf /var/lib/apt/lists/* # Kosmtik with plugins, forcing prefix to /usr because bionic sets # npm prefix to /usr/local, which breaks the install RUN npm set prefix /usr && npm install -g kosmtik РАБОЧИЙ КАТАЛОГ /usr/lib/node_modules/kosmtik/ RUN kosmtik plugins --install kosmtik-overpass-layer \ --install kosmtik-fetch-remote \ --install kosmtik-overlay \ --install kosmtik-open-in-josm \ --install kosmtik-map-compare \ --install kosmtik-osm-data-overlay \ --install kosmtik-mapnik-reference \ --install kosmtik-geojson-overlay \ && cp /root/.config/kosmtik.yml /tmp/.kosmtik-config.yml # Closing section RUN mkdir -p /openstreetmap-carto WORKDIR /openstreetmap-carto USER 1000 CMD sh scripts/docker-startup.sh kosmtik =====
установим npm, диспетчер пакетов Node.js. Для этого установите пакет npmс помощью apt:
sudo apt install npm
перейдем в режим суперпользователя
sudo -i
apt-get update && apt-get install --no-install-recommends -y \ ca-certificates curl gnupg postgresql-client python3 python3-distutils \ fonts-hanazono fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted \ mapnik-utils nodejs npm ttf-unifont unzip && rm -rf /var/lib/apt/lists/*
E: Package 'ttf-unifont' has no installation candidate
пакет 'ttf-unifont' установим позже (сейчас не критично)
к проверке установки kosmtik вернемся после установки Node.js
Для последующих шагов установки мы предполагаем, что:
cd - по умолчанию используется ваш домашний каталог.
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накопитель).
Импорт картографических данных и управление ими занимают много оперативной памяти, и обычно требуется swap.
Чтобы проверить, настроен ли раздел подкачки в вашей системе, используйте одну из следующих двух команд:
swapon -s
free -m
Отображение количества свободной и используемой памяти в системе (отметьте строку, указывающую Swap ):
в данном случае используется:
Если у вас нет активного раздела подкачки, особенно если ваша физическая память мала, вам следует добавить файл подкачки. Создайте файл подкачки размером 2G в корневой файловой системе:
sudo fallocate -l 2G /swapfile
Установим правильный тип разрешений.
sudo chmod 600 /swapfile
Используйте mkswap утилиту, чтобы настроить файл как область подкачки Linux:
sudo mkswap /swapfile
sudo mkswap /swapfile
free -m
Чтобы сделать изменение постоянным, откройте /etc/fstab файл и добавьте следующую строку:
/swapfile swap swap defaults 0 0
Откроем файл fstab, находящийся в папке ets в редакторе:
vi /etc/fstab
locale
Чтобы установить локализацию ru_RU:
export LANGUAGE=ru_RU.UTF-8 export LANG=ru_RU.UTF-8 export LC_ALL=ru_RU.UTF-8
sudo locale-gen ru_RU ru_RU.UTF-8 sudo dpkg-reconfigure locales
sudo useradd -m alisa sudo passwd alisa
Иногда Git может быть уже предустановлен.
git --version
в случае отсутствия установим:
apt-get install -y git
Mapnik используется для рендеринга данных OpenStreetMap в тайлы, управляемые веб-сервером Apache через renderd и mod_tile. Эта установка предусматривает, что все команды выполняются в окружении обычной учетной записи (не root) с использованием «sudo». Не пытайтесь и не делайте все в окружении root; система не будет работать. (выход: exit)
exit
Создайте в корне каталог src для загрузки исходников
mkdir -p ~/src
cd ~/src
sudo apt install python-is-python3
df