Содержание

Tile map server

Введение

На этой странице показано, как можно использовать 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

Обновите Ubuntu

Убедитесь, что ваша система 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

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 файл и добавьте следующую строку:

/etc/fstab
/swapfile swap swap defaults 0 0

Откроем файл fstab, находящийся в папке ets в редакторе:

vi /etc/fstab



Swap в linux
Рекомендованный размер swap в linux

Настройка переменных локализации

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

Создание пользователя UNIX

sudo useradd -m alisa
sudo passwd alisa

Установить Git

Иногда Git может быть уже предустановлен.

git --version


в случае отсутствия установим:

apt-get install -y git


- Справочник Pro Git

Установка библиотеки Mapnik

Mapnik используется для рендеринга данных OpenStreetMap в тайлы, управляемые веб-сервером Apache через renderd и mod_tile. Эта установка предусматривает, что все команды выполняются в окружении обычной учетной записи (не root) с использованием «sudo». Не пытайтесь и не делайте все в окружении root; система не будет работать. (выход: exit)

exit 


Создайте в корне каталог src для загрузки исходников

mkdir -p ~/src 


и перейдите в него:

cd ~/src


sudo apt install python-is-python3





df

Зависимость FreeType в Ubuntu 16.04 LTS

Установить библиотеку Mapnik из пакета

Или установите Mapnik из исходников

Установить Boost из пакета

В качестве альтернативы установите последнюю версию Boost из исходного кода

Установите HarfBuzz из пакета

Установите HarfBuzz из исходного кода

Собрать библиотеку Mapnik из исходников

Убедитесь, что Mapnik был правильно установлен

Настроить брандмауэр

Установить HTTP-сервер Apache

Как узнать IP-адрес вашего сервера

Установить Mod_tile из пакета

Mod_tile/render для Ubuntu 18.04 и Ubuntu 20.04

Mod_tile/рендеринг для Ubuntu 21.04

Установить Mod_tile из исходников

Установка Python

Установите Yaml и диспетчер пакетов для Python

Установите утилиты Mapnik

Установить openstreetmap-carto

Установите шрифты, необходимые для openstreetmap-carto

Старый унифонт Средний шрифт

Установите Node.js

Версия дистрибутива из менеджера пакетов APT

Установите Node.js с помощью инструмента управления версиями

Проверьте версии Node.js

Установите carto и создайте XML-таблицу стилей Mapnik

Установите PostgreSQL и PostGIS

Создайте экземпляр PostGIS

Установите переменные среды

Добавьте пользователя и предоставьте доступ к базе данных gis

Включение удаленного доступа к PostgreSQL

Настройка базы данных

Минимальные требования к настройке

Необязательные дополнительные требования к настройке

Установить Osm2pgsql

Сгенерировать Osm2pgsql из исходников

Получите извлечение данных OpenStreetMap

Загрузить данные в PostGIS

Создайте папку данных

Создание индексов и предоставление пользователям

Настроить визуализацию

Настроить Apache

Предварительный рендеринг тайлов

Устранение неполадок Apache, mod_tile и renderd

Формат имен тайлов сервера тайлов OpenStreetMap

Развертывание собственной карты Slippy Map

OpenLayers

Листовка

Дополнения и файлы

Упомянутые команды: