Добавление пользовательских проекций в QGIS и UMN Mapserver
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 ничего о ней не знает и, соответственно, не дает добавить сервис в проект.