- Created by Alexander Avdeev, last updated by Eugenia Kalnina on Jul 30, 2025 3 minute read
Инструкции по настройке кеширования части глобальной карты для возможности отображения меток на глобальной карте при отсутствии доступа в интернет в дальнейшей работе
Больше о конфигурации MapProxy можно узнать из докуменатации https://mapproxy.github.io/mapproxy/5.0.0/tutorial.html
Настройка кеширования
В результате настройки все запросы, полученные от внешнего ресурса будут кешироваться в файловой системе по мере запросов из UI. Комманды приведены относительно директории, в которой развернуто ПО РТЛС
- указать участок карты, который нужно кешировать, добавив ограничение в файл mapproxy/seed.yaml, где bbox это диапазон координат в WGS84 [ lon_min, lat_min, lon_max, lat_max]
сначала долгота (горизонтальная составляющая), потом долгота (вертикальная составляющая)
coverages: requiredcoverage: bbox: [37.3810 , 55.5232, 37.9482, 55.9354] srs: 'EPSG:4326' - при необходимости ограничить кол-во уровней зума, которые будут кешироваться - чем больше число, тем больше тайлов на него приходится, тем больше места на диске для хранения, максимально доступный уровень зума для работы с BA-UI 20
cache_requiered: caches: [satellite_cache] # Change which zoom levels to cache # Each zoom level quadruples number of chached tiles levels: from: 10 to: 20 coverages: [requiredcoverage] - запустить контейнер mapproxy
docker compose --profile mapcache up -d
- проверить результат., открыв ссылку в браузере http://srv.rtls:18081/mapproxy/tiles/satellite/webmercator/0/0/0.png , где srv.rtls адрес сервера
Настройка доступа по HTTPS
- в папке конфигурации nginx изменить расширение файла mapproxy
mv nginx/config/mapproxy-app.conf0 nginx/config/mapproxy-app.conf
- если не планируется работа с BLE контейнером изменить расширение файла app
mv nginx/config/app.conf nginx/config/app.conf0
- перезапустить контейнер nginx
docker compose restart nginx
- проверить результат, открыв ссылку в браузере https://srv.rtls:8443/mapproxy/tiles/satellite/webmercator/0/0/0.png , где srv.rtls адрес сервера
Отображение слоя на глобальной карте
- авторизоваться в CToolUI
- перейти в раздел Системная конфигурация
- в разделе Настройки глобальной карты указать ссылку на сконфигурированный ресурс https://srv.rtls:8443/mapproxy/tiles/satellite/webmercator/{z}/{x}/{y}.png, где srv.rtls адрес сервера
- в полях широта, долгота указать точку в пределах диапазона , заданного для кеширования в разделе Настройка кеширования
- указать уровень масштаба в пределах диапазона, заданного для кеширования в разделе Настройка кеширования
- сохранить изменения
- перейти в раздел Конфигурация на глобальную карту
- в левом верхнем углу нажать кнопку отображения альтернативного слоя

- проверить, что карта открывается в нужном месте с ожидаемым уровнем масштаба
Изменение источника спутникового слоя
на данный момент поддерживаются источники tile слоев, работающие с форматом XYZ (URL источника должен содержать параметры %(x) %(y) %(z) )
- в файле mapproxy/mapproxy.yaml изменить URL источника данных в блоке sources
sources: satellite_source: type: tile grid: webmercator url: https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/%(z)s/%(y)s/%(x)s - перезапустить сервис
docker compose restart mapproxy
- проверить результат, открыв ссылку в браузере http://srv.rtls:18081/mapproxy/tiles/satellite/webmercator/0/0/0.png , где srv.rtls адрес сервера
Сохранение части карты
Инструкция по загрузке части карты с учетом уровней зума. Надо учитывать, что загрузка происходит согласно встроенному алгоритму переходов между уровнями масштабирования, который не исключает возможность пропуска каких-то участков, т.к используется для ускорения доступа к частоиспользуемым данными, а не для полного копирования. Рекомендуется рабочий участок дополнительно просмотреть на всех уровнях зума, что заполнит пропущенные участки в процессе просмотра с клиента.
- запустить процедуру кеширования, данные будут сохраняться в директории mapproxy/cache_data, параметр concurrency определяет кол-во потоков, доступных для параллельной работы, чем их больше, тем быстрее кеширование, ограничено кол-вом CPU на машине
docker compose exec -ti mapproxy mapproxy-seed -f /mapproxy/config/mapproxy.yaml -s /mapproxy/config/seed.yaml --concurrency 8
- исправить права доступа к кешу, где $UID:$UID UID это ID пользователя, под которым запускается docker, если используется группа отличная от дефолтной, то поменять на $UID:$GID
docker compose exec -ti mapproxy sh -c "chown -R $UID:$UID /mapproxy/config/./cache_data"
- в случае если предполагается работа с полным отсутствием интернета, изменить список иссточников для слоя на пустой в файле mapproxy/mapproxy.yaml
caches: satellite_cache: grids: [webmercator] # sources: [satellite_source] sources: [] cache: type: file directory_layout: tc - перезапустить сервис
docker compose restart mapproxy
- на демо странице модуля можно оценить результат кеширования http://srv.rtls:18081/mapproxy/demo/?srs=EPSG%3A3857&format=image%2Fpng&wms_layer=satellite# в процессе подбора настроек
Проверка результата
- авторизоваться в CToolUI
- перейти в раздел Конфигурация на глобальную карту
- в левом верхнем углу нажать кнопку отображения альтернативного слоя

- после активации слой карты изменится на работу с данными, поставляемыми источником, указанным в разделе Настройка кеширования
- отключить доступ в интернет на сервере
- проверить отображение нужного участка карты без доступа в интернет