Добавление пользовательских проекций в QGIS и UMN Mapserver: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Статья|Черновик}}
{{Статья|Черновик}}
{{Аннотация|Описан процесс добавления пользовательских проекций в QGIS и UMN Mapserver для коррекной работы с WMS-сервисом}}


== 1. Введение ==
== 1. Введение ==


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


== 2. Проблема ==
== 2. Проблема ==


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


== 3. Решение ==
== 3. Решение ==
Строка 16: Строка 17:
   <99999> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=-11111 +y_0=-1111111 +ellps=krass +units=m +no_defs
   <99999> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=-11111 +y_0=-1111111 +ellps=krass +units=m +no_defs


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


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


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

Текущая версия от 12:02, 22 ноября 2012

Эта страница является черновиком статьи.


Описан процесс добавления пользовательских проекций в QGIS и UMN Mapserver для коррекной работы с WMS-сервисом

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-сервиса и, соответственно, мы видим координаты в МСК.