- Created by Alexander Avdeev, last updated by Eugenia Kalnina on Sept 19, 2025 4 minute read
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 11 Next »
Инструкция позволяет заменить участок глобальной карты кастомным изображением. В качестве источника могут использоваться растровые изображения с GEO данными в формате World file (описание формата https://en.wikipedia.org/wiki/World_file).
Потребуется растровое изображение и файл с описанием GEO данных, название которого будет совпадать с названием изображения, расширение зависит от расширения изображения.
Поддерживаемые форматы изображений и файлов с GEO данными:
Подготовка изображения
Процедура изменения файла с GEO данными вручную не рекомендуется при необходимости поворота изображения. Для загрузки Рекомендуется использовать уже повернутое изображение относительно положения на север.
Так же надо учитывать, что разные источники глобальной карты могут иметь несовпадающую координатную сетку, поэтому определение рабочего диапазона координат рекомендуется определять на базе источника глобальной карты, поверх которого будет накладываться изображение
- Подготовить растровое изображение (rotated.png для примера). Если объект требует дополнительного поворота для совмещения границ на глобальной карте, привести изображение к правильному расположению относительно направления на север в графическом редакторе.
- На глобальной карте определить прямоугольник в котором будет размещаться изображение. Рекомендуется определять координаты точек на подложке, которая будет в качестве глобальной карты. Получить координаты точек
- min lat min lon (точка А)
- max lat max lon (точка B)
- левая верхняя точка прямоугольника изображения (min lon max lat)
- Создать файл rotated.pgw и заполнить строки значениями
Line 1: x-dimension of a pixel in map units // (maxLon - minLon) / widthPx Line 2: rotation parameter // 0 Line 3: rotation parameter // 0 Line 4: NEGATIVE of y-dimension of a pixel in map units // (maxLat - minLat) / heightPx Line 5: x-coordinate of center of upper left pixel // (minLon) Line 6: y-coordinate of center of upper left pixel // (maxLat)
![]()
0.000000798 0 0 -0.0000005 37.610154 55.755155
Импорт изображения в картографический модуль
- Скопировать изображение и файл с GEO данными на сервер внутрь директории rtls/srv/geoserver_data, рекомендуется создать предварительно директорию custom-map и скопировать в нее файлы
- Открыть веб интерфейс модуля картографии https://srv.rtls/geoserver , где srv.rtls адрес сервера
- Авторизоваться в модуль картографии (логин admin pass geoserver)
- В левой выбрать раздел Data / Workspaces
- Создать новое рабочее пространство ресурсов (например test)
- В левой выбрать раздел Data / Stores
- Кликнуть Add new Store для создания хранилища
- выбрать WorldImage
- выбрать Workspace созданный ранее
- в разделе Connection Parameters указать путь до изображения (поиск по Data directory, найти папку из п.1)
указать имя источника данных по названию изображения (rotated)
сохранить
- После сохранения будет автоматический переход в режим создания нового слоя.
- * Альтернативный вариант через раздел Data / Layers.
- кликнуть Add a new layer
- выбрать test:rotated , где test - название созданного рабочего пространства
- Нажать на кнопку Publish для конфигурации слоя
- проверить название слоя (rotated)
- найти поле Declared SRS и с помощью кнопки Find поменять SRS на значение с кодом 4326 (WGS 84) , поле изменит значение на EPSG:4326
- изменить SRS handling на Force declared
- проверить на соответствие указанным в файле GEO данных значения Native Bounding Box и Lat/Lon Bounding Box
- сохранить
- Проверить результат в разделе Data /Layer Preview
- найти созданный слой (test:rotated)
- открыть OpenLayers и проверить сопоставление изображения с ожидаемым диапазоном координат
Настройка отображения изображения при работе с глобальными координатами
- Открыть на сервере файл rtls/mapproxy/mapproxy.yaml
- Добавить новый источник в блок sources, в layers указать название слоя, созданного в картографическом модуле (с учетом префикса с названием рабочего пространства)
- * параметр coverage опционален и ограничивает диапазон координат при котором будет запрашиваться слой, bbox соответвует диапазону координат, определенному для изображения [minLon ,minLat, maxLon, maxLat] (сначала горизонтальная составляющая потом вертикальная при ориентации на север)
sources: ... custom_map: type: wms wms_opts: version: 1.1.1 tiled: true req: url: http://srv.rtls:8080/geoserver/wms layers: test:rotated transparent: true supported_srs: ['EPSG:4326'] coverage: bbox: [37.636411, 55.829521, 37.636727,55.829798 ] srs: 'EPSG:4326'
- * параметр coverage опционален и ограничивает диапазон координат при котором будет запрашиваться слой, bbox соответвует диапазону координат, определенному для изображения [minLon ,minLat, maxLon, maxLat] (сначала горизонтальная составляющая потом вертикальная при ориентации на север)
- Указать новый слой в качестве источния для кешируемого слоя в блоке caches и параметры для работы с новым источником (meta_size, meta_buffer)
caches: satellite_cache: grids: [webmercator] sources: [satellite_source, custom_map] meta_size: [1, 1] meta_buffer: 0 cache: type: file directory_layout: tc - Добавить в блок layers новый слой с указанием источника или источников данных, если требуется проверка совмещения нескольких слоев. Для тестирования работы слоя может использоваться любой источник (custom_map в примере), для использования слоя в качестве источника данных в клиентском приложении источником должен быть кешированный слой из блока caches
layers: ... - name: custom_map title: custom map sources: [custom_map] - Перезапустить модуль
docker compose restart mapproxy
- Проверить результат можно через веб интерфейс модуля http://srv.rtls:18081/mapproxy/demo/, в списке должен появиться новый слой custom_map
- проверить отображение нового слоя в нужном месте карты
- проверить отображение совмещенного результата на слое ( в примере custom_map)
- Настроить работу BA-UI со слоем, указанным в поле name при настройке layers
![]()
Отображение слоя на глобальной карте
- авторизоваться в CToolUI
- перейти в раздел Системная конфигурация
- в разделе Настройки глобальной карты указать ссылку на сконфигурированный ресурс https://srv.rtls:8443/mapproxy/tiles/satellite/webmercator/{z}/{x}/{y}.png, где srv.rtls адрес сервера
- в полях широта, долгота указать точку в пределах диапазона , заданного для кеширования в разделе Настройка кеширования
- указать уровень масштаба в пределах диапазона, заданного для кеширования в разделе Настройка кеширования
- сохранить изменения
- перейти в раздел Конфигурация на глобальную карту
- в левом верхнем углу нажать кнопку отображения альтернативного слоя

- проверить, что карта открывается в нужном месте с ожидаемым уровнем масштаба
Добавление авторизации для доступа к слою
- Открыть веб интерфейс модуля картографии https://srv.rtls/geoserver , где srv.rtls адрес сервера
- Авторизоваться в модуль картографии (логин admin pass geoserver)
- в левой выбрать раздел Data / Workspaces
- перейти в настройки слоя с названием rotated
- изменить Workspace на rtls
- сохранить
- Открыть на сервере файл rtls/mapproxy/mapproxy.yaml
- в блоке layers для слоя custom_map изменить параметр layers (префикс rtls) и добавить параметры авторизации, где <TOKEN> заменить на API ключ Получение данных через API#Выдача API токена
sources: ... custom_map: type: wms wms_opts: version: 1.1.1 tiled: true req: url: http://srv.rtls:8080/geoserver/wms layers: rtls:rotated transparent: true supported_srs: ['EPSG:4326'] coverage: bbox: [37.636411, 55.829521, 37.636727,55.829798 ] srs: 'EPSG:4326' http: headers: Authorization: Bearer <TOKEN> - сохранить
- перезапустить модуль
docker compose restart mapproxy
- в блоке layers для слоя custom_map изменить параметр layers (префикс rtls) и добавить параметры авторизации, где <TOKEN> заменить на API ключ Получение данных через API#Выдача API токена
- No labels