Добавление пользовательских проекций в QGIS и UMN Mapserver

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница является черновиком статьи.


1. Введение

На пост советском пространстве сохранилась "добрая" традиция вести карты населенных пунктов в так назваемых "местных системах координат" (МСК). Данные системы координат представляют собой как правило искаженную СК42 (обычно сдвинутую на константы по x и у). В местных системах координат работаю земельные и архитектурные отделы городов и соответвтвенно весь картографический материал требуют сдавать именно в этих системах. Западные ГИС об этих системах координат не имеют никакого понятия (кстати координаты в МСК сами по себе не являются секретными на ключи перехода в СК42 засекречены). И вот в процессе реализации ГИС для одного из малых городов Украины мы столкнулись с проблемой задания пользовательской системы координат (описывающей МСК для данного города) для WMS-сервиса на базе UMN MapServer и QGIS которы должен обращаться к этому сервису.

2. Проблема

Попытка описать параметры МСК в разделе PROJECTION map-файла ни к чему не привела WMS-сервис это описание игнорировал. Обращение к официальной документации вскрыло проблему - WMS-сервис требует задания проекции с указанием ее кода в proj4 т.е. описания вида EPSG:4326. В свою очередь QGIS при загрузке WMS-сервиса требует указать проекцию для него.

3. Решение

Немного погуглив выясняем что описания прокций proj4 для UMN MapServer хранятся в обычном текстовом файле /usr/local/share/proj/epsg (для ОС FreeBSD в нашем случае). Добавляем в конец файла описание для нашей МСК (параметры изменены в целях соблюдения вышеупомянутой секретности, любое совпадение с реальной МСК является случайным :) )

 #MSK for N town
 <99999> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=-11111 +y_0=-1111111 +ellps=krass +units=m +no_defs

Число в угловых скобках это код проекции в системе EPSG (наша МСК к этой системе не имеет никакого отношения но надо же ее куда-то записать). Главное условие чтобы этот код не совпадал с кодами уже существующих прокций.

Далее в нашем map-файле указываем вновь созданную проецию

 PROJECTION
   "init=epsg:99999"
 END

Теперь наш WMS-сервис уже не ругается на отсутствие проеции но QGIS ничего о ней не знает и, соответственно, не дает добавить сервис в проект. Отучим его от этого. Описания проекций QGIS хранятся уже не в текстовом файле, а в базе данных SQLite /usr/share/qgis/resources/srs.db. Голым тестовым редактором его уже не возьмешь, но прогресс не стот на месте, браузер Firefox имеет замечательный плагин SQLite Manager. Устанавливаем его и открываем базу данных проекций QGIS. Верная Ubuntu бдительно охраняет хозяйское добро и не дает просто так менять файлы в системе поэтому предварительно даем разрешения своему пользователь на доступ к каталогу и файлу с проекциями. И, как пишут умудренные опытом (который сын ошибок трудных :) ), не забудте сделать резервную копию. В базе присутствует таблица tbl_srs в которую и нужно добавть строчку с описанием МСК

Addsrs.png

Код проекции должен совпадать с ранее добавленным в UMN MapServer. Теперь QGIS без проблем подхватывает проекцию WMS-сервиса и, соответственно, мы видим координаты в МСК.