Как
создать свою ГИС с помощью GIS ToolKit Active
Автор:
Дарья Лунченко
Урок
11. Работа с ГИС-Сервером и подключение геопорталов
При работе над большими проектами с одними и теми же
картами часто должны работать сразу несколько ГИС-специалистов. При этом
может потребоваться также, чтобы у них были разные права доступа к тем
или иным данным проекта. В этом случае карты, растры, матрицы и связанные
с ними документы целесообразно размещать на ГИС-Сервере, к которому приложения
пользователей смогут обращаться для выполнения необходимых операций.
ГИС-Сервер - программа, предоставляющая удаленный доступ
к векторным картам, растрам, матрицам, атласам и связанным с ними документам,
разных типов (изображения, файлы Word, Excel, PDF-файлы и прочее). ГИС-Сервер
позволяет нескольким пользователям одновременно работать с одними и теми
же картой. Важным преимуществом использования ГИС-Сервер в проектах с
большим числом пользователей является возможность управления правами доступа
к данным. Все пользователи распределяются по группам, которым предоставляется
определенный набор прав по работе с картами и данными. При этом каждый
пользователь имеет свой собственный логин и пароль для входа на сервер,
что дает возможность администратору не только определять права доступа,
но и мониторить действия конкретного пользователя.
В этом уроке мы рассмотрим, как с помощью функций MAPAPI
реализовать в нашем приложении работу с данными ГИС-Серверов.
Также мы научим наше приложение подключать и отображать
пространственные данные, публикуемые популярными web-сервисами Google,
Yandex, Bing, OpenStreetMap и другими, которые поддерживают основные стандарты
передачи данных OGC, WMS, WMTS, TMS.
После этого наше ГИС-приложение будет уметь:
- получать данные, хранящиеся на ГИС-Сервере;
- подключать и отображать геопорталы;
- вызывать диалог сортировки карты;
- редактировать паспорт карты;
- изменять систему отображения координат курсора.
Внешний вид приложения представлен на рис.1.
Рисунок 1 - Внешний вид приложения
Скачать рабочий образец программы, ее исходный код, а
также примеры данных, используемые в этом уроке, можно на страничке "Дополнительные
материалы к уроку 11". Если у вас не установлен GIS ToolKit Active,
то для запуска приложения вам потребуется загрузить библиотеки GIS ToolKit,
и выполнить их регистрацию. Все необходимые библиотеки и короткая инструкция
размещены на этой же странице.
1. Организация работы приложения с ГИС-Сервером
Для организации централизованного хранения и коллективной
работы с данными используем программу ГИС-Сервер x64. Соединение приложения
с сервером выполняется по протоколу TCP/IP. Между клиентом и сервером
передаются двоичные данные, представляющие собой координаты объектов,
атрибуты, блоки данных растров и матриц. Для добавления данных на сервер,
создания списка клиентов и формирования прав доступа к ним, используется
программа ГИС-Администратор.
Если вы не знакомы с настройкой ГИС-Сервер, то узнать,
как разместить на ГИС-Сервере данные и задать права доступа пользователей,
вы можете, посмотрев этот небольшой видеоурок.
Для получения данных с ГИС-Сервера пользователю необходимо:
- Пройти регистрацию в диалоге подключения к ГИС-Серверу, введя логин
и пароль (рис.2);
- Выбрать данные из списка в виде дерева, и нажать кнопку "Открыть"
или "Добавить" для открытия или добавления данных к уже открытым (рис.3).
Рисунок 2 - Регистрация пользователя на ГИС Сервере
Рисунок 3 - Подключение данных с ГИС сервера
Реализация функции:
- создадим новый класс FGISServer.cs, в который в дальнейшем, поместим
функции для работы с ГИС-Сервером и геопорталами;
- в классе FMapAPI.cs импортируем функцию MAPAPI svOpenData для вызова
диалога выбора данных доступных пользователю на ГИС-Сервере;
- в событии по нажатию на кнопку подключения к ГИС-Серверу на главной
форме Form1.cs, вызываем импортируемую функцию;
- при нажатии кнопки "Открыть" в диалоге выбора данных см. рис.3, главному
окну приложения посылается сообщение AW_OPENDOCUN (0x623) с именем выбранных
данных;
- при работе с растрами (FRstEdit.cs) мы уже перехватывали оконные
сообщения с помощью обработчика WndProc, переходим к нему и при получении
сообщения AW_OPENDOCUN с помощью метода MapView1.MapOpen, открываем
данные;
- при условии, что в приложении уже открыты какие-либо данные, для
того чтобы активировать кнопку "Добавить" в диалоге выбора данных с
ГИС-Сервера, посылается сообщение AW_GETCURRENTDOC (0x673), в ответ
на которое необходимо вернуть указатель на идентификатор данных и идентификатор
окна с открытой картой;
- в WndProc перехватываем сообщение AW_GETCURRENTDOC и, используя небезопасный
код, передаем идентификаторы данных и окна с картой.
2. Подключение геопорталов
Диалог подключения геопорталов позволяет взаимодействовать
нашему ГИС приложению и web-сервисам. Выбранные из диалога web-сервисы
могут отображаться совместно с уже открытыми картами, растрами, матрицами
высот, что очень удобно при уточнении информации на карте, совместном
отображении с матрицами качеств определенной территории, создании карт
и т.д.
Для того чтобы подключить геопортал пользователю необходимо:
- по нажатию на кнопку подключения геопорталов, выбрать его из списка
доступных (рис.4) ;
- по нажатию на кнопку параметров открытых геопорталов (wms-растров),
установить по желанию такие параметры как: степень прозрачности, яркость,
контрастность WMS-растра (рис.5);
Рисунок 4 - Выбор геопортала
Рисунок 5 - Настройка отображения геопорталов
Реализация:
- добавляем на главную форму Form1.cs компонент axMapWMSPopupDialog
- "всплывающее меню" подключения WMS-порталов, который доступен в версии
GisToolKit Active 11.3.13;
- связываем его свойством cMapView c компонентом отображения карт axcMapView;
- в событии по нажатию на кнопку подключения геопорталов с помощью
свойств MapWMSPopupDialog.PopupLeft, MapWMSPopupDialog.PopupTop, определяем
позицию отображения диалога в окне, и используя метод MapWMSPopupDialog.Execute,
вызываем диалог подключения WMS-порталов;
Примечание: для успешного добавления геопорталов,
в каталоге проекта необходимо разместить файлы - epsg.csg, epsg.csp, epsg.csu
для обработки проекций и систем координат геопорталов, файл настроек подключения
к геопорталам wmslist.xml и директорию wmslist, содержащую иконки геопорталов.
- создаем новую форму GeoPortSettings.cs для настройки параметров отображения
геопорталов (рис. 6);
Рисунок 6 - Элементы формы параметров геопорталов
- в событии по нажатию на кнопку настройки параметров отображения геопорталов
с помощью свойства MapView1.WMScount, определяем количество открытых
геопорталов и добавляем их на форму в ComboBox для выбора, создаем список
WmsParametrs, в котором будем запоминать настроенные пользователем параметры
каждого открытого WMS-растра;
- при изменении флага "Над картой", используя метод MapView1.WMSViewOrder_set,
устанавливаем порядок отображения геопортала, передавая в метод значение
0 - под картой, 1 - над картой;
- используя свойство MapView1.WMSTransparent_set, устанавливаем степень
прозрачности геопортала: 0 - не виден, 1 - полная видимость, 2 - насыщенная,
3 - полупрозрачная, 4 - средняя, 5 - прозрачная и, записываем соответствующее
значение в список параметров WmsParametrs ;
- при изменении ползунка яркости и контраста, используя свойства MapView1.WMSBright_set,
MapView1.WMSContrast_set, устанавливаем соответствующие яркость и контрастность
геопортала в пределах от -16 до 16, записываем значения ползунков в
TextBox и в список параметров WmsParametrs;
- при выборе другого геопортала из списка уже добавленных восстанавливаем
в диалоге параметров значения, настраиваемые для каждого геопортала;
- при нажатии в диалоге настройки параметров кнопки "Отмена", сбрасываем
установленные параметры в исходные;
- при добавлении геопортала к карте на время сеанса карта принимает
проекцию геопортала, и для корректного отображения координат при передвижении
курсора мыши, свойством MapView1.WMSCount проверяем открыт ли геопортал,
и если да, то к координатам курсора мыши не добавляем значения левого
верхнего угла окна просмотра карты в пикселях;
3. Диалог просмотра и редактирования паспорта карты
При создании карты, пользователь мог не указать некоторые
параметры ее проекции, или неправильно задать какой-либо из параметров,
что, к примеру, может привести к невозможности подключения геопорталов
к карте. В таком случае ему необходимо получить доступ к паспорту карты,
что и позволит нам сделать диалог просмотра и редактирования паспорта
карты (рис.7).
Рисунок 7 - Диалог редактирования паспорта карты
Для того чтобы добавить данный диалог, создадим в панели
элементов главного окна приложения "Задачи" меню "Редактирование паспорта
карты", и по нажатию на него, используя функции MAPAPI mapGetActiveSite
- запрашиваем активную пользовательскую карту, paspViewPasp - открываем
диалог редактирования паспорта.
4. Сортировка карты
Процедура сортировки упорядочивает размещение описания
объектов в файлах метрики и семантики, что ускоряет их дальнейшую обработку
и обеспечивает правильную последовательность отображения объектов.
Также с помощью сортировки можно изменять точность хранения
данных и систему координат объектов из прямоугольной в метрах на местности
в геодезическую в радианах и наоборот.
Диалог сортировки представлен на рис. 8.
Рисунок 8 - Диалог "Сортировка объектов карты"
Для внедрения данного диалога в наше приложение, создадим
в панели инструментов "Задачи" меню "Сортировка карты" и по нажатию, используя
функцию MAPAPI MapSort, вызываем диалог сортировки объектов карты.
5. Изменение формата отображения координат курсора
При работе с картой может быть полезна функция по изменению
формата отображения координат при передвижении мыши. Далее мы рассмотрим
с вами, как перевести координаты из прямоугольных в метрах в геодезические
в системах координат СК-42 года, WGS 1984, ПЗ - 90.02 в радианах; десятичных
градусах; градусах, минутах, секундах.
Реализация:
- добавим меню в панели инструментов приложения "Параметры" и соответствующие
выпадающие списки (рис.9)
Рисунок 9 - Вид меню "Параметры"
- определим два флага cursorParam - для определения выбранной системы
координат курсора, cursorParamView - при геодезической системе координат
курсора, для определения в каких единицах измерения необходимо отображать
данные координаты;
- в событии по нажатию на меню перехода из одной системы координат
в другую, устанавливаем свои значения флагов для каждой системы координат
(СК);
- в классе FMapAPI.cs импортируем функции:
mapPlaneToMap - преобразование из метров на местности в дискреты;
mapPlaneToPicture - преобразование из метров на местности в пикселы
на изображении;
mapIsGeoSupported - запрос: поддерживается ли пересчет к геодезическим
координатам из прямоугольных и обратно;
mapPlaneToGeo42 - преобразование из метров на местности (проекция
карты) в геодезические координаты в радианах (эллипсоид Красовского,
СК-42);
mapPlaneToGeoWGS84 - преобразование из метров на местности (проекция
карты) в геодезические координаты в радианах (общеземной эллипсоид
WGS84);
mapPlaneToGeoEP903D - преобразование прямоугольных координат в метрах
из системы координат карты в геодезические координаты в радианах системы
ПЗ-90(общеземной эллипсоид ПЗ-90);
- в событии передвижения мыши по экрану MapView1_OnMapMouseMove, используя
импортируемые функции, преобразовываем координаты курсора мыши из метров
в выбранную пользователем систему координат;
- выводим полученные координаты в том же виде в строку статуса в окне
приложения или же, преобразуем в десятичные градусы или в градусы, минуты,
секунды;
Теперь мы научились работать с данными с ГИС-Серверов
и геопорталов, а также добавили в наше приложение такие полезные функции,
как сортировка карт, редактирование паспорта и работа с координатами курсора
мыши.
В следующем уроке мы рассмотрим некоторые аналитические
функции библиотеки GIS ToolKit и функции для работы с матрицами и растрами
качеств.
Смотреть: Дополнительные
материалы к уроку 11
|