Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Инструкция позволяет заменить участок глобальной карты кастомным изображением. В качестве источника могут использоваться растровые изображения с GEO  данными в формате World file (описание формата https://en.wikipedia.org/wiki/World_file). 

Потребуется растровое изображение и файл с описанием GEO данных, название которого будет совпадать с названием изображения, расширение зависит от расширения изображения.

Поддерживаемые форматы изображений и файлов с GEO данными:

GIFmymap.gifmymap.gfw
JPEGmymap.jpgmymap.jgw
JPEG 2000mymap.jp2mymap.j2w
PNGmymap.pngmymap.pgw
TIFFmymap.tifmymap.tfw

Подготовка изображения

Info

Процедура изменения файла с GEO данными вручную не рекомендуется при необходимости поворота изображения. Для загрузки Рекомендуется использовать уже повернутое изображение относительно положения на север. 

Так же надо учитывать, что разные источники глобальной карты могут иметь несовпадающую координатную сетку, поэтому определение рабочего диапазона координат рекомендуется определять на базе источника глобальной карты, поверх которого будет накладываться изображение

  1. Подготовить растровое изображение (rotated.png для примера).  Если объект требует дополнительного поворота  для совмещения границ на глобальной карте, привести изображение к правильному расположению относительно направления на север в графическом редакторе.
  2. На глобальной карте определить прямоугольник в котором будет размещаться изображение. Рекомендуется определять координаты точек на подложке, которая будет в качестве глобальной карты. Получить координаты точек
    1. min lat min lon (точка А)
    2. max lat max lon (точка B)
    3. левая верхняя точка прямоугольника изображения (min lon max lat)
  3. Создать файл rotated.pgw и заполнить строки значениями 
    Code Block
    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)

 

Code Block
titlerotated.pgw
0.000000798
0
0
-0.0000005
37.610154
55.755155



Импорт изображения в картографический модуль

  1. Скопировать изображение и файл с GEO данными  на сервер внутрь директории rtls/srv/geoserver_data, рекомендуется создать предварительно директорию custom-map и скопировать в нее файлы
  2. Открыть веб интерфейс модуля картографии https://srv.rtls/geoserver , где srv.rtls адрес сервера
  3. Авторизоваться в модуль картографии (логин admin pass geoserver)
  4. В левой выбрать раздел Data / Workspaces
  5. Создать новое рабочее пространство ресурсов (например test)
  6. В левой выбрать раздел Data / Stores
  7. Кликнуть Add new Store для создания хранилища
    1. выбрать WorldImage
    2. выбрать Workspace созданный ранее
    3. в разделе  Connection Parameters указать путь до изображения (поиск по Data directory, найти папку из п.1)
    4.  указать имя источника данных по названию изображения (rotated)

    5. сохранить

  8. После сохранения будет автоматический переход в режим создания нового слоя. 
  9. * Альтернативный вариант через раздел Data / Layers.
    1. кликнуть Add a new layer
    2. выбрать test:rotated , где  test - название созданного рабочего пространства 
  10. Нажать на кнопку Publish для конфигурации слоя
    1. проверить название слоя (rotated)
    2. найти поле Declared SRS и с помощью кнопки Find поменять SRS на значение с кодом 4326 (WGS 84) , поле изменит значение на EPSG:4326
    3. изменить SRS handling на Force declared
    4. проверить на соответствие указанным в файле GEO данных значения Native Bounding Box и Lat/Lon Bounding Box
    5. сохранить
  11. Проверить результат в разделе Data /Layer Preview
    1. найти созданный слой (test:rotated)
    2. открыть OpenLayers  и проверить сопоставление изображения с ожидаемым диапазоном координат

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

  1. Открыть на сервере файл rtls/mapproxy/mapproxy.yaml
  2. Добавить новый источник в блок sources, в layers указать название слоя, созданного в картографическом модуле (с учетом префикса с названием рабочего пространства)
    1. * параметр coverage опционален и ограничивает диапазон координат при котором будет запрашиваться слой, bbox соответвует диапазону координат, определенному для изображения [minLon ,minLat, maxLon, maxLat] (сначала горизонтальная составляющая потом вертикальная при ориентации на север) 
        
      Code Block
      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'
  3. Указать новый слой в качестве источния для кешируемого слоя в блоке caches и параметры для работы с новым источником  (meta_size, meta_buffer) 
    Code Block
    caches:
      satellite_cache:
        grids: [webmercator]
        sources: [satellite_source, custom_map]
        meta_size: [1, 1]
        meta_buffer: 0
        cache:
          type: file
          directory_layout: tc
  4. Для  тестирования результата средствами добавить в блок  layers новый слой 
    Code Block
    layers:
    ...
      - name: custom_map
        title: custom map
        sources: [custom_map]
  5. Перезапустить модуль 
    Code Block
    docker compose restart mapproxy
  6. Проверить результат можно через веб интерфейс модуля http://srv.rtls:18081/mapproxy/demo/, в списке должен появиться новый слой custom_map
    1. проверить отображение нового слоя в нужном месте карты
    2. проверить отображение совмещенного результата на слое satellite
  7. Настроить работу BA-UI с кешированным со слоем satellite согласно инструкции Кэширование глобальной карты#Отображение слоя на глобальной карте


Добавление авторизации для доступа к слою

  1. Открыть веб интерфейс модуля картографии https://srv.rtls/geoserver , где srv.rtls адрес сервера
  2. Авторизоваться в модуль картографии (логин admin pass geoserver)
    1. в левой выбрать раздел Data / Workspaces
    2. перейти в настройки слоя с названием rotated 
    3. изменить Workspace на rtls
    4. сохранить
  3. Открыть на сервере файл rtls/mapproxy/mapproxy.yaml
    1. в блоке layers для слоя custom_map изменить параметр layers (префикс rtls) и добавить параметры авторизации, где <TOKEN> заменить на API ключ Получение данных через API#Выдача API токена
       
      Code Block
      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>
    2. сохранить
    3. перезапустить модуль
      Code Block
      docker compose restart mapproxy
       

Table of Contents
maxLevel7
minLevel1
stylenone
printablefalse