УДК: 004.428.4
Баранов Д.А.1, Влацкая И.В.1, Панкратьев П.В.1, Петрищев В.П.12, Степанов А.С.1
1Оренбургский государственный университет 2Институт степи УрО РАН, Оренбург E-mail: [email protected]
ПРОГРАММНАЯ ПЛАТФОРМА ПОСТРОЕНИЯ ИНТЕРАКТИВНЫХ КАРТОГРАФИЧЕСКИХ СЕРВИСОВ
Картографические сервисы становятся неотъемлемой частью современного быта. Они находят применение в самых разных сферах жизнедеятельности человека. Некоммерческие картографические сервисы для качественной работы требуют привлечение услуг квалифицированных программистов для изменения программного кода. Стоимость коммерческих картографических сервисов, оперирующих большими объёмами данных не позволяет их использовать в большинстве некоммерческих проектов.
В ходе выполнения проекта по созданию портала экологической безопасности Оренбургской области разработана универсальная программная платформа для построения картографических сервисов, позволяющая значительно снизить трудоёмкость процесса их разработки. от существующих решений платформа выгодно отличается применением свободных и открытых программных продуктов в своей основе. При разработке платформы использовался фреймворк Django на языке Python (версия - 1.8.). Приложения строятся согласно паттерну проектирования «Модель-представление-контроллер» (Model View Controller, MVC). Основная часть используемых картографических данных хранится в СУБД PostgreSQL с расширением PostGIS. Результатом работы представления является HTML-страница, однако это могут быть и данные в другом формате - PNG, JSON, XML и т. д. для разработки портала экологической безопасности Оренбургской области был выбран GIS Geoserver. Запросы на визуализацию данных к Geoserver осуществляется по протоколам Web Feature Service (WFS) и Web Map Service (WMS) для векторных и растровых данных соответственно.
Первым проектом, реализованном на платформе стал Информационный картографический портал экологической безопасности Оренбургской области, объединивший в себе данные об экологическом состоянии природных комплексов и техногенных объектов Оренбургской области. Использование универсальной программной платформы позволит создавать качественные картографические сервисы не требующие значительных затрат в программное обеспечение.
Ключевые слова: ГИС, геоинформационные системы, web-приложения, интерактивные карты, Geoserver, PostGis.
Картографические сервисы становятся неотъемлемой частью современного быта. Они находят применение в самых разных сферах жизнедеятельности человека: от образовательной [1] и здравоохранительной [2] до космического мониторинга [3]. Под картографическим сервисом обычно подразумевается разновидность геоинформационной системы с пользовательским интерфейсом в виде веб-приложения. Разработка подобных продуктов в последнее время существенно упростилась благодаря готовым решениям, вроде OpenStreetMap и МарВох, однако всё ещё требует существенных усилий множества людей, в том числе программистов. Поэтому, в ходе выполнения проекта по созданию портала экологической безопасности Оренбургской области было принято решение о разработке универсальной программной платформы, приспособленной для быстрого создания разнообразных картографических сервисов на её основе.
Назначением платформы является упрощение разработки картографических сервисов, оперирующих большими объёмами данных. Так, платформа предоставляет гибкие возможности по наполнению сервиса контентом и настройке его визуального представления без необходимости изменения программного кода. в основе разработанной платформы лежит свободное программное обеспечение с открытым исходным кодом: Django [4], Geoserver [5], PostgreSQL [6] с расширением PostGIS. Ниже приведено краткое описание данных продуктов и их назначение в проекте.
Django является фреймворком для разработки веб-приложений любой сложности на языке Python. При разработке платформы использовалась последняя на данный момент версия фреймворка - 1.8. Django-приложения строятся согласно паттерну проектирования «Модель-представление-контроллер» (Model View Controller, MVC) [7]-[8]. Данный паттерн
Баранов д.А. и др.
Программная платформа построения интерактивных.
позволяет отделить данные от управляющей логики и процесса визуализации, что особенно важно в приложениях, работающих с картографическими данными. Разработанная платформа включает следующие основные модели:
Map (карта) - содержит базовую информацию о карте: название, адрес, раздел, к которому относится карта.
Section (раздел) - тематически объединяет набор карт.
Layer (слой) - ключевая модель, описывающая слой векторных или растровых картографических данных. Включает такие данные, как название, тип данных, состояние (активен/ неактивен), Z-индекс, атрибуты для фильтрации и т. д.
Feature (атрибут) - атрибут слоя, по которому возможна фильтрация. Включает правило фильтрации, порядок следования и размер отображаемого в легенде символа.
Diagram (диаграмма) - модель диаграммы, визуализирующей информацию об объектах конкретного слоя. Включает тип диаграммы (круговая, гистограмма и т. д.), слой, к которому она относится, выводимые атрибуты, размеры и цветовую палитру.
Table (таблица) - модель таблицы, представляющей подробную информацию об объектах конкретного слоя. Включает список выводимых атрибутов и размеры таблицы.
Платформа так же включает ряд вспомогательных моделей, не представленных в данном списке. Экземпляры моделей приложения преобразуются в таблицы реляционной базы данных посредством механизма Object Relation Mapping (ORM, Объектно-реляционное отображение) [9], встроенного в Django. Следует заметить, что любое приложение, написанное на Django, вклю-чает ряд служебных моделей для представления таких объектов как пользователи, сессии, права доступа и т. д.
Django поддерживает работа с большим количеством систем управления базами данных (СУБД), среди которых MySQL, SQLite и PostgreSQL. При разработке платформы была выбрана СУБД PostgreSQL. Данную СУБД принято считать сложной в освоении (относительно прочих), однако она обладает рядом существенных преимуществ над конкурентами. В частности, в PostgreSQL присутствует встроенная
поддержка вложенных транзакций, бинарных журналов c технологией обеспечения целостности данных Write-Ahead Logging (WAL), полнотекстовый поиск а также разграничение данных внутри базы данных посредством выделения схем (Schema).
Вторым компонентом паттерна MVC является представление (View), отвечающее за представление информации клиенту. Как правило, в случае веб-приложения, результатом работы представления является HTML-страница, однако это могут быть и данные в другом формате - PNG, JSON, XML и т. д. Удобство MVC заключается в том, что одни и те же модели могут представляться различным способом с помощью разных представлений. Так, в панели управления сервисом используется одно представление, позволяющее добавлять, удалять и редактировать данные, а в пользовательском интерфейсе используется представление для визуализации данных в виде карты. Представления, разработанные для платформы, максимально универсальны. Например, для всех карт используется единое представление, способ визуализации слоёв (векторный или растровый, точки или полигоны и т. д.) при этом настраивается через панель управления, т. е. хранится в модели. Это допустимо, поскольку эти параметры являются жёстко привязанными к слоям.
На рисунках 1 и 2 приведены примеры интерфейса двух представлений одной модели данных Map: панели управления и непосредственно карты.
Третьим компонентом паттерна MVC являются контроллеры (Controller). Контроллер отвечает за обработку данных и действий пользователя. Фактически, в Django контроллеры логически объединены с представлениями, т. е. каждому представлению соответствует контроллер. Данная практика является достаточно распространённой и достаточно удобной. Например, добавление новых карт доступно только через представление панели управления, поэтому соответствующая логика может быть помещена в класс представления без необходимости дублирования кода.
Работа с картографическими данными (геоданными) включает ряд сложных задач, таких, как преобразование систем проекций
и систем координат, отсечение, визуализация и стилизация (настройка внешнего вида визуализируемой карты), наложение слоёв и т. д. Для решения данных задач, как правило, используют специализированное программное обеспечение. для разработки портала экологической безопасности Оренбургской области был выбран продукт под названием Geoserver.
Данный продукт выгодно отличается от аналогичных открытостью и бесплатностью (в отличии от ESRI ArcGis Online), активной разработкой (в отличии от MapServer) и широким набором функций и форматов (в отличии от QGis server).
Важной особенностью Geoserver является то, что он непосредственно не хранит геодан-
Рисунок 1. Пример представления для визуализации модели Map в виде карты
Рисунок 2. Пример представления для визуализации модели Map в виде панели управления
Баранов д.А. и др.
Программная платформа построения интерактивных...
ные, а лишь использует внешние хранилища. Список доступных форматов хранилищ достаточно широк: ShapeFile, GeoTIFF, Spatial, слои PostGIS и т. д. При этом независимо от типа используемого хранилища доступна возможность перепроецирования данных "на лету" - по запросу пользователя.
Пример графического интерфейса с диалогом настроек параметров слоя приведён на рисунке 3.
Geoserver поддерживает как векторные так и растровые данные. Запросы на визуализацию
данных к Geoserver осуществляется по протоколам Web Feature Service (WFS) и Web Map Service (WMS) для векторных и растровых данных соответственно. Данные протоколы работают поверх HTTP, что удобно при разработке веб-приложений.
Так же поддерживается их стилизация с помощью языка Styled Layer Description (SLD), стандартизированном Open Geospatial Consortium (OGC). Ниже приведён фрагмент SLD-файла, содержащий правило для визуализации водного линейного объекта:
<se:Rule>
^е^ате>Линия раздела внутренних водоёмов<^е^ате> <se:Description>
^е:ТШе>Линия раздела внутренних водоёмов<^е:ТШе> </se:Description> <ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>dnn_code</ogc:PropertyName> <ogc:Literal>300013</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <se:LineSymbolizer> <se:Stroke>
<se:SvgParameter name="stroke">#efa85d</se:SvgParameter> <se:SvgParameter name="stroke-width">0.26</se:SvgParameter> <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter> <se:SvgParameter name="stroke-linecap">square</se:SvgParameter> </se:Stroke> </se:LineSymbolizer> </se:Rule>
Рисунок 3. Пример интерфейса Geoserver
Основная часть используемых картографических данных хранится в СУБД PostgreSQL с расширением PostGIS. Такое решение обладает всеми преимуществами СУБД PostgreSQL, а расширение PostGIS предоставляет удобные прототипы картографических данных и функции для их обработки. Тем не менее, реляционные базы данных не предназначены для хра-
#!/Ь1п/ЬаБЬ
нения бинарных данных, поэтому растровые геоданные хранятся во внешнем файловом хранилище в формате GeoTIFF.
Следует заметить, что установка расширения PostGIS производится для каждой базы геоданных вручную. Чтобы автоматизировать данный процесс был написан следующий скрипт на языке Bash ("Bourne again shell"):
sudo -u postgres psql -d $1 -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
sudo -u postgres psql -d $1 -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial ref sys.sql
sudo -u postgres psql -d $1 -f /usr/share/postgresql/9.1/contrib/postgis comments.sql
sudo -u postgres psql -d $1 -c «GRANT SELECT ON spatial_ref_sys TO PUBLIC;»
sudo -u postgres psql -d $1 -c «GRANT ALL ON geometry columns TO $2;»
sudo -u postgres psql -c «GRANT ALL ON DATABASE $1 TO $2;»
sudo -u postgres psql -d $1 -c «GRANT ALL ON ALL TABLES IN SCHEMA public TO $2;»
где $1 - аргумент командной строки (передаваемый при вызове скрипта), соответствующий имени базы данных; $2 - аргумент командной строки, содержащий имя пользователя базы данных.
Данный скрипт аутентифицируется в СУБД как главный пользователь, т. к. ему необходима возможность установки расширений и прав. Скрипт должен быть запущен от имени суперпользователя.
Поскольку во многих проектах, связанных с геоинформационными системами [10]-[12], исходные картографические данные поступают из разных источников, в разных форматах и в разных проекциях/системах координат, разработчикам часто приходится сталкивать-
ся с задачами преобразования и конвертации картографических данных. в данном проекте для решения этих задач использовался программный продукт ogr2ogr из состава пакета GDAL (Geospatial Data Abstraction Library -библиотека абстракции гео-пространственных данных). Функциональность этого продукта заключается в преобразовании данных между форматами с некоторыми преобразованиями. Поддерживается большое количество различных форматов, проекций и систем координат. в данном проекте ключевой задачей было преобразование данных из Shape-файлов в базу геоданных на основе PostGIS с одновременным перепроецированием в систему координат EPSG:4284:
GEOGCS["Pulkovo 1942", DATUM["Pulkovo 1942", SPHEROID["Krassowsky 1940", 6378245.0, 298.3, AUTHORITY["EPSG","7024"]], TOWGS84[43.822, -108.842, -119.585, 1.455, -0.761, 0.737, 0.549], AUTHORITY["EPSG","62 8 4"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4284"]]
Программная платформа построения интерактивных...
Баранов д.А. и др.
Такой выбор обусловлен ориентированностью разрабатываемого портала на Оренбургскую область.
Как и в любом веб-приложении, взаимодействие с пользователем осуществляется с помощью веб-браузера, поэтому графический пользовательский интерфейс реализован с применением технологий, поддерживаемых современными веб-браузерами, таких как JavaScript, AJAX, WebSocket, LocalStorage и т. д. Фактически, пользовательский интерфейс является отдельным приложением и взаимодействует с серверной частью посредством технологии REST (Representational State Transfer, передача репрезентативного состояния) поверх HTTP.
В основе пользовательского интерфейса, так же как и в серверной части, лежит паттерн MVC, реализуемый в данном случае фреймворком BackboneJS, который в свою очередь основан на таких библиотеках, как UnderscoreJS и JQuery.
Ключевыми моделями пользовательского интерфейса являются модели слоя и его атри-
бутов. Представления данных моделей обеспечивает основную часть взаимодействия с пользователем. Структура представлений гибко настраивается через поля модели. Так, в случае наличия атрибутов и соответствующего параметры, представление слоя выведет дочерние представления, содержащие атрибуты слоя. При этом в модели слоя может быть указано как отображать эти атрибуты: с возможностью деактивации (отключения), тип, цвет, источник легенды и т. д.
Представление слоя состоит из двух основных частей: управляющих элементов и карты, на которой представлены данные, загруженные из Geoserver. Любое взаимодействие с элементами управления вызывает немедленную реакцию карты. Тип элементов управления так же зависит от параметров слоя. Например, слои могут активироваться совместно или по взаимоисключающему правилу. на рисунке 4 изображены примеры панели управления.
Панель управления позволяет добавлять в текущий экстент карты данные текущего слоя
^ 0 Металлы О ■ Железо О В Золото О 0 Медь О 0 Медь молибден О 0 Медь цинк О И Медь цинк свинец О В Медь, свинец О 0 Медь, цинк О 0 Никель О 0 Никель, кобальт О 0 Хром ^ 0 Неметаллы
Й - Глины буровые, малое Й * Глины буровые, среднее
4) В Каолин, глины огнеупорные, крупное
^ 1 Кварц и кварциты,среднее ^ В Магнезит, малое А В Сера, крупное А 0 Сера, среднее А - Сера, малое
ЕЁ И Минеральные краски, крупное Ш * Кварц оптический, малое ^ 0 Кварц и кварциты, крупное Й Е Кварцит, крупное А 2 Известняк, крупное
Слои
у В Лесистость территорий □ 0.0000 - 2.0000%
□ 2.0000 - 4.0000%
□ 4.0000 - 6.0000%
□ б .0000 - 8.0000% □ 8.0000 - 10.0000% □ 10.0000-12.0000%
□ 12.0000 - 14.0000%
□ 14.0000 - 16.0000% ■ 16.0000-18.0000% ■ 18.0000 - 20.0000% ■ 20.0000-22.0000% ■ 22.0000 - 23.0000%
у Общие слои 0 Основа
/ Границы районов ■ Районные центры ) Водные объекты > Дороги ) Растительность
Слои
Acanthis Flavirostris Accipiier Brevipes Acipenser Mudiventris Acipcnser Ruthenus Aegypius Monaciius Albumoides Bipunctatus Rossieus Anax Imperator Anser Erythiopus Anthropoides Virgo Aphodius Bimakulatus Aquila Chiysaetos Aquila Heliaca Aquila Nipalensis Aqulia Clanga Bubo Bubo Buteo Rufinus Callisthenes Reticularis * Calosoma Svcophanta Caspiorayzon Wagnei i Chettusia Qregaria Cieonia Nigra Circaetus Qallicus Circus Macrourus Cottus Gobio Cygnus Bewick ii Dendroeopos Medius Medius Desmana Moschata Eliomys Qiiercinus Eremophila Alpes tri s Brandti
Рисунок 4. Примеры панели управления представлениями слоёв
в виде точечных объектов (например расположение месторождений полезных ископаемых с указанием его типа) или отображать слой с полигональными объектами (например ареал обитания представителя Красной книги Оренбургской области).
В результате была разработана универсальная программная платформа для построения картографических сервисов, позволяющая значительно снизить трудоёмкость процесса их разработки. от существующих решений платформа выгодно отличается применением сво-
бодных и открытых программных продуктов в своей основе. Первым проектом, реализованном на платформе стал Информационный картографический портал экологической безопасности Оренбургской области, объединивший в себе данные об экологическом состоянии природных комплексов и техногенных объектов Оренбургской области. Дальнейшее использование универсальной программной платформы позволит создавать качественные картографические сервисы не требующие значительных затрат в программное обеспечение.
8.04.2016
Исследование выполнялось при поддержке Министерства образования Оренбургской области (областной грант №33 от 30.06.2015)
Список литературы:
1. Качалов Я.Н., Ростовцева В.М. Использование геоинформационных систем в профессиональной подготовке студентов современного вуза // Вестник ТГПУ. — 2011. — №10.
2. Жукова Н.В. Использование геоинформационных систем в здравоохранении // Ученые заметки ТОГУ. —2013. —Т. 4, N»4. — С. 1715-1726.
3. Волков Н.В., Донцов А.А., Лагутин А.А. Разработка геопортальной системы для решения задач регионального космического мониторинга // Известия АлтГУ. — 2013. — N1 (77).
4. Django [Электронный ресурс]: The web framework for perfectionists with deadlines. — режим доступа: http://djangoproject. com
5. Geoserver [Электронный ресурс]: Open source server for sharing geospatial data. — режим доступа: http://geoserver.org.
6. PostgreSQL [Электронный ресурс]: PostgreSQL: The world's most advanced open source database. — режим доступа: http:// postgresql.org.
7. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма [и др.]. — СПб.: Питер, 2001.
8. Фримен Э., Сьерра К., Бейтс Б. Паттерны проектирования. — СПб.: Питер, 2011.
9. Roebuck K. Object-Relational Mapping (Orm): High-Impact Strategies - What You Need to Know: Definitions, Adoptions, Impact, Benefits, Maturity, Vendors. — Emereo Pty Limited, 2011.
10. Giseco [Электронный ресурс]: Портал экологической безопасности Оренбургской области. — режим доступа: http://giseco56. ru (дата обращения: 1.12.2015).
11. Петрищев, В. П. Географические и земельные информационные системы / В. П. Петрищев ; ОГУ - Оренбург: ИПК ГОУ ОГУ, 2009. - 114 с. - ISBN 978-5-7410-0844-7. - 700 экз. - Усл. печ. л. 7,1.
12. Петрищев, В. П. ГИС-интерпретация стоимостной оценки квартирной недвижимости в городе Оренбурге / В. П. Петрищев, А. В. Блажевичус // Многопрофильный университет как региональный центр образования и науки: материалы Всерос. науч.-практ. конф. - Оренбург, 2009. — 2126-2132.
13. Петрищев, В. П. Геоинформационное обеспечение паспортизации городских улиц / В. П. Петрищев, Н. Б. Осина // Вестн. Оренб. гос. ун-та. - 2009. - N2. - С. 144-145.
Сведения об авторах:
Баранов Дмитрий Александрович, преподаватель кафедры компьютерной безопасности и математического обеспечения информационных систем Оренбургского государственного университета 460018, г. Оренбург, пр-т Победы, 13, e-mail: [email protected] Влацкая Ирина Валерьевна, заведующий кафедрой компьютерной безопасности и математического обеспечения информационных систем Оренбургского государственного университета,
кандидат технических наук, доцент 460018, г. Оренбург, пр-т Победы, 13, e-mail: [email protected] Панкратьев Пётр Владимирович, заведующий кафедрой геологии, доктор геолого-минералогических наук, профессор 460018, г. Оренбург, пр-т Победы, 13, e-mail: [email protected] Петрищев Вадим Павлович, заведующий кафедрой городского кадастра, доктор географических наук, доцент 460018, г. Оренбург, пр-т Победы, 13, e-mail: [email protected] Степанов Алексей Сергеевич, заведующий межкафедральной лабораторией геоинформационных технологий, кандидат технических наук 460018, г. Оренбург, пр-т Победы, 13, e-mail: [email protected]