You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Для добавления локальной подложки необходимо сделать несколько шагов

Создание информации о координатах подложки - файла WordImage

Сначала будет краткое описание формата.
WorldImage похож на world file с небольшими отличиями. Подробнее про формат world file можно посмотреть (https://en.wikipedia.org/wiki/World_file).

Заводить подложку можно в разных системах координат.
В данном примере рекомендуется использовать wgs84 (широта/долгота).
Системы координат имеют разные единицы измерения (например для wgs84 - это градусы широты/долготы).
Эти единицы измерения в дальнейшем будут именоваться "юниты".

Worldfile состоит из шести строк, содержащих по одной величине в следующем порядке: A, D, B, E, C, F:

A: Размеры по оси x в юнитах на пиксель
D: Поворот по оси y
B: Поворот по оси x
E: Размеры по оси y в юнитах на пиксель
C: Координата x центра левого верхнего пикселя
F: Координата y центра левого верхнего пикселя


Значения D и B отвечают за поворот.
Рекомендуется загружать карту у которой нет поворота (предварительно повернуть ее самим в редакторе изображений).
Иначе будет сложно посчитать парметры A и E.

Если нам известны координаты углов карты которую мы хотим загрузить и размеры изображения в пикселях:

maxx, minx, maxy и miny - минимальные и максимальные координаты по X и Y
xpix ширина в пикселях
ypix высота в пикселях


То файл выглядит:

A = (maxx-minx)/xpix
D = 0
B = 0
E = -(maxy-miny)/ypix
C = minx
F = maxy


Например, для загрузки следующего изображения кремля:

minx = 37.610154
maxx = 37.621650
miny = 55.749170
maxy = 55.755155
xpix = 736
ypix = 685


Файл будет выглядеть следующим образом:

0.000015619565217392747
0
0
-0.000008737226277376017
37.610154
55.755155


Название файла должно совпадать с названием изображения. Расширения файла зависит от расширения изображения. Для .png надо использовать .pgw, для .jpg надо использовать .jgw.

Загрузка файлов на сервер

1. Создать папку rtls/srv/geoserver-data/custom-map.

2. Скопировать файлы custom_map.png и custom_map.pgw в эту папку.

3. Открыть https://srv.rtls/geoserver/web где srv.rtls - адрес сервера.

4. Залогинится (по умолчанию admin/geoserver).

5. Открыть Stores и выбрать Add new store.

6. В открывшемся окне выбрать WorldImage.

7. В качестве Data source name указать custom_map, в Connection Parameters нажать на Browse и выбрать загруженный файл png/jpg, затем нажать Save.

8. В открывшемся окне нажать Publish.

9. В открывшемся окне в блоке Coordinate Reference System нажать кнопку Find и найти там 4326.

10. В этом же блоке поменять SRS handling на Force declared.

11. Нажать Save.

Создание API ключа

1. Открыть CToolUI, открыть Системная конфигурация, внутри API ключи, и нажать зеленую кнопку "+".

2. В качестве названия можно ввести любое, оно используется только для того, чтобы идентифицировать ключ в таблице (чтобы ее можно было бы удалить).

3. Скопировать ключ в буфер обмена. После закрытия попапа содержимое ключа будет нельзя посомтреть.

Настройки MapProxy

1. Открыть rts/mapproxy/mapproxy.yaml.

2. В блок sources добавить следующее:

  custom_map:
    type: wms
    req:
      url: http://srv.rtls:8080/geoserver/wms
      layers: custom_map
      transparent: true
    supported_srs: ['EPSG:4326']
    http:
      headers:
        Authorization: Bearer APIKEY

В Authorization надо заменить APIKEY на ключ полученный на предыдущем шаге.

Например строчка будет выглядеть так:

        Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI4aUNkOVp6VGc0TWlYR3BPa19uM182WFJTTUcyUUhaUGpybnJ1QjY0a3gwIn0.eyJleHAiOjIwNzA0NTI1NjQsImlhdCI6MTc1NTA5MjU2NCwianRpIjoiYzQ2ZjBmZDYtMDkyMS00ZDkyLTg1N2EtOTJiNjNjNDZjNGE5IiwiaXNzIjoiaHR0cDovL2tleWNsb2FrLnJ0bHM6ODA4MC9yZWFsbXMvcnRscy1hcGkiLCJzdWIiOiIzNjdmMGYzYi03ZDA4LTQ4ZjQtOWE4Ni01ZTNkMGNkYWZiNzMiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJydGxzL01hcHByb3h5IiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJkZWZhdWx0LXJvbGVzLXJ0bHMtYXBpIiwiYXBpIiwicnRsc19lbmdpbmVlciIsInJ0bHNfYmFfYWRtaW4iXX0sInNjb3BlIjoiZW1haWwgcnRsc19yb2xlcyBwcm9maWxlIiwiY2xpZW50SG9zdCI6IjE3Mi4yMy4wLjYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImNsaWVudElkIjoicnRscy9NYXBwcm94eSIsInJvbGVzIjpbImRlZmF1bHQtcm9sZXMtcnRscy1hcGkiLCJhcGkiLCJydGxzX2VuZ2luZWVyIiwicnRsc19iYV9hZG1pbiJdLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtcnRscy9tYXBwcm94eSIsImNsaWVudEFkZHJlc3MiOiIxNzIuMjMuMC42In0.WNF8W2f_Q-uuoLLD7k29m_YfJYf1XAlWUTHEVHGMgSshMuRbw8MZHfzr5F4owTzwpzq0-tl2evoSpxNuRfVdGkW_sfKFSy9w6uY613exHEKelC0V8N-0T1b-yI3l0A-Bb8bfPoRfltORLGjxXQ8J0nSAgsEO5M7eQLyscRDaJ3hdhW1esYCGqhgd6MSkLvqaf2M1rCHBzUA1tWL6kKQZYDEeAMtrgR5pzgCuxRO7VJyYKjZmkS9mPA1iBmJc99YkuFJaB4sJnOvFz76bwyRL5G6KIxKwtbtMrZ7AVqPzU04oRwFeBbO4lGS7wSXpr29GgZeQFGHyy3_fxHrpVXkZLw

3. Поменять satellite_cache, добавив в sources новый custom_map.

Также нужно добавить meta_size: [1, 1] и meta_buffer: 0, без этого MapProxy не сможет совмещать данные из двух разных источников.

Результат должен выглядеть вот так

caches:
  satellite_cache:
    grids: [webmercator]
    sources: [satellite_source, custom_map]
    meta_size: [1, 1]
    meta_buffer: 0
    cache:
      type: file
      directory_layout: tc

4. Сохранить файл.

5. Старый кэш придется удалить и сгенерировать заново. Для удаления кэша можно использовать:

rm -rf rtls/mapproxy/cache_data/

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


  • No labels