Содержание
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.
Он состоит из следующих основных компонентов:
- Mapnik
- Apache
- Mod_tile
- renderd
- osm2pgsql
- PostgreSQL/PostGIS database, to be installed locally (suggested) or remotely (might be slow, depending on the network).
- carto
- openstreetmap-carto
Все упомянутое программное обеспечение является открытым исходным кодом.
Для тайлового сервера требуется база данных 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
- • 4gb файла подкачки
free -m
Отображение количества свободной и используемой памяти в системе (отметьте строку, указывающую Swap ):
в данном случае используется:
- • ОЗУ: 544mb из доступных 16gb
- • файл подкачки: 0mb из доступных 4gb.
Если у вас нет активного раздела подкачки, особенно если ваша физическая память мала, вам следует добавить файл подкачки. Создайте файл подкачки размером 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
- i -начало редактирования
- esc -конец редактирования
- :wq! -сохранение и выход из редактора
Настройка переменных локализации
- Locale — это набор переменных среды, которые определяют язык, страну и настройки кодировки символов (или любые другие особые предпочтения варианта) для ваших приложений и сеанса оболочки в системе Linux. Эти переменные среды используются системными библиотеками и локальными приложениями в системе.
- Конфигурационный файл находится /etc/default/locale.
- Просмотрим, какие локали в настоящее время определены для текущей учетной записи пользователя:
locale
Чтобы установить локализацию ru_RU:
export LANGUAGE=ru_RU.UTF-8 export LANG=ru_RU.UTF-8 export LC_ALL=ru_RU.UTF-8
- Экспортированные переменные можно поместить в файл /etc/environment.
- Новые локали также можно создать, выполнив:
sudo locale-gen ru_RU ru_RU.UTF-8 sudo dpkg-reconfigure locales
- если ошибка изменения локализации:
Создание пользователя UNIX
- Мы предполагаем, что вы уже создали пользователя для входа во время установки Ubuntu Server, который будет использоваться для запуска сервера тайлов. Предположим, что выбранное вами имя пользователя — alisa. В этом документе каждый раз, когда будет упоминается alisa, замените его своим фактическим именем пользователя.
- Если вам нужно создать нового пользователя:
sudo useradd -m alisa sudo passwd alisa
- Установите пароль при появлении запроса.
- Повторите пароль для правильности ввода.
Установить Git
Иногда Git может быть уже предустановлен.
git --version
в случае отсутствия установим:
apt-get install -y 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
Листовка
Дополнения и файлы
Упомянутые команды:
- sudo apt update — обновляет список пакетов последней информацией из настроенных репозиториев.
- sudo apt update — устанавливает доступные обновления для вашей текущей версии Ubuntu.
- sudo apt dist-upgrade — выполняет более тщательное обновление, которое более тщательно обрабатывает зависимости пакетов.
- sudo apt autoremove — удаляет из системы неиспользуемые или устаревшие пакеты.
- sudo restart — перезагружает систему, чтобы все изменения вступили в силу.
- sudo apt install update-manager-core — устанавливает основной пакет менеджера обновлений, если он еще не установлен.
- sudo do-release-upgrade — запускает процесс обновления выпуска Ubuntu.
Обсуждение