Введение в технологии разработки ГИС-приложений

Аватар пользователя Ульянов Дмитрий
Ульянов Дмитрий

Современные тенденции в разработке программного обеспечеия имеют три направления: настольные (desktop), web и мобильные приложения. В таком порядке они перечислены не зря, поскольку он отражает возрастающую степень популярности и актуальности направления. И в наше время настольные приложения в значительной мере уступают пальму первенства web-приложениям, а те в свою очередь в определенных областях передают ей мобильным.

От теории ГИС, изложенной Алексеем Власовым в статье «Введение в ГИС: история, модели и алгоритмы», перейдем к практике и рассмотрим, какие ГИС-технологии используются в разработке программного обеспечения.

Но для начала ответим на несколько вопросов.

С какими данными работают ГИС-системы?

Большинство ГИС-систем работают с пространственными данными, наглядными примерами которых могут быть поля, леса, океаны, реки, границы городов, транспортные сети, дома, иногда даже фонарные столбы, в их картографическом представлении — как мы обычно видим их на картах атласов и глобусов. Как правило все эти объекты представляются в виде набора пространственных координат. Также пространственными координатами может быть представлено местоположение пользователя, что является еще одним популярным примером пространственной информации.

Пространственные данные на картах Google Maps

Пространственные данные на картах Google Maps

Где хранить пространственные данные или откуда их получать?

Один из очевидных и наиболее современных ответов — в базах данных. Среди баз данных прекрасно работающих с пространственными данными можно выделить:

  • PostGreSQL
  • Oracle
  • MySQL
  • MSSQL.

PostGre и MySQL являются свободно распространяемыми базами данных и имеют схожие способы хранения геометрий объектов в виде двоичного представления, а также схожий набор функционала по работе с пространственными данными.

Oracle и MSSQL стоят довольно внушительных денег.

В случае с Oracle cтандартный пакет функций для работы с пространственными данными Oracle Locator может быть расширен путем повышения до лицензии включающей в себя пакет Oracle Spatial. Хотя Oracle и хранит геометрии в группе стобцов SDO_GEOMETRY в текстовом виде, однако воспринимать этот формат все же достаточно сложно, и преобразование геометрии в WKT или GeoJSON формат (что элементарно делается в PostGre и MySQL) гораздо более читаемо.

Если же сравнивать функционал по работе с векторными пространственными данными, такой как логические операции (например лежит ли геометрия внутри другой), разного рода операции объединения, разрезания и пр., то пакет PostGIS для PostGre безусловно выигрывает и у Oracle Locator и у Oracle Spatial.

Базы данных безусловно хороши и прекрасно подходят для хранения и обработки данных, однако практика внедрения ПО в множестве различных областей показывает, что  использование файлов для этих целей все еще популярно. В целом это верно и для работы с пространственной информацией. Зачем создавать базу данных если требуется лишь отобразить геометрии из нескольких файлов?

Файлы эти можно разделить на две основные категории: векторные и растровые.

Первые служат для хранения геометрии в виде набора координат и описания характера самой геометрии — площадной объект, линия или точка. Вторые же хранят изображение, например снимок местности сделанный посредством аэрофотосъемки, привязанное к определенному положению на карте.

Векторные файлы хранят:

  • Геометрию объекта
  • Атрибутивную семантическую информацию
  • Стиль отрисовки объекта
  • Сведения о системе координат.

Примерами форматов таких файлов являются:

  • Shapefile
  • DXF
  • KML
  • GeoJSON
  • TAB
  • Mid/Mif
  • и др.

Растровые файлы содержат в себе:

  • Изображение
  • Его пространственные координаты
  • Систему координат

Примерами форматов таких файлов являются:

  • BMP, JPEG, PNG, и пр. + WORLD FILE
  • BMP, JPEG, PNG и пр. + TAB
  • ECW
  • GeoTiff
  • и др.

Также источниками пространственных данных могут служить внешние сервисы. На данный момент можно выделить две категории таких сервисов. Первые возвращают изображение слоя с данными в определенной видимой области, вторые — пространственную и семантическую информацию объектов слоя отобранных по определенному условию.

К первой группе можно отнести сервисы работающие по стандарту WebMapService (WMS) и их аналоги такие как Open Street Maps, Google Maps, Yandex Maps и другие. Примером возвращаемого изображения может служить пример приведенный ниже на котором видна одна из улиц Санкт-Петербурга.

Улица Омская, г. Санкт-Петербург на картах Google Maps

Улица Омская, г. Санкт-Петербург на картах Google Maps

Ко второй группе можно отнести WebFeatureService позволяющий получать информацию о объектах слоя в различных форматах, в зависимости от возможностей сервиса. Например, в формате GeoJSON:

В формате GeoJSON

В формате GeoJSON

Видно, что данное представление содержит в себе свойство geometry содержащее пространственное описание объекта и координаты его узлов, а так же семантические данные в свойстве properties.

Теперь когда мы получили представления о способах хранения данных встает вопрос о их визуализации.

Как визуализировать пространственные данные?

Если бы на атласах все леса были бы того же стиля оформления что и поля и реки, то было бы сложно понять что является чем. Поэтому очень важна правильная визуализация. Существует несколько способов для ее осуществления.

Самый простой — сказать каждому объекту как именно он должен быть отрисован на карте — границу пунктирной жирной красной линией и заливка в сиреневый горошек. Тогда стиль станет одним из атрибутов объекта. Однако такой подход имеет ряд существенных недостатков:

  • Нужно раскрасить все объекты вручную, что может быть затруднительно при большом их числе
  • Проблематично сменить стиль всех или нескольких объектов на другой
  • Сложно контролировать соответствие внешнего вида объекта его смысловому наполнению.

Более сложным является способ внешней стилизации, когда стиль определяется не столько специализированным атрибутом объекта, а неким внешним правилом.

Самое простое из таких правил — оформлять все объекты слоя единообразно, например все моря и океаны имеют голубую заливку и темную окантовку. Это замечательный способ различать объекты разных слоев друг от друга, не различая их при этом в рамках одного и того же слоя.

Если же есть необходимость «раскрашивать» объекты по-разному в рамках одного слоя в зависимости от их смыслового наполнения, то возможно осуществлять стилизацию на основе значений атрибутивной информации. Например, хвойные леса подкрашиваются темно-зеленым цветом, лиственные светло-зеленым.

Наиболее известны два вида разбиения:

  • На основе уникальных значений атрибутов, когда каждому значению соответствует свой стиль
  • На основе разбиения на интервалы, в случае если атрибут хранит числовые значения. В таком случае каждому интервалу значений будет поставлен в соответствие стиль.

Как реализовать ГИС-систему?

Говоря коротко, большинство современных приложений реализуется на основе архитектуры клиент-сервер, когда клиентская часть приложения занимается визуализацией данных и взаимодействием с пользователем, а данные хранятся и обрабатываются на сервере.

Что же может из себя представлять сервер? В идеале базу данных для хранения информации. В целом многие desktop-клиенты способны сами отображать информацию из базы данных напрямую. Однако в случае веб-клиентов это невозможно и необходим некий сервер, который будет предоставлять клиенту данные в том виде, в котором он сможет их отобразить. В кратце назначение ГИС-сервера можно описать так:

  • Хранение данных (файлы)
  • Структуризация данных
  • (источники данных, слои, группы слоёв)
  • Предварительный просмотр слоёв
  • Предоставление сервисов WMS/WFS
  • Дополнительный функционал, например пространственная обработка и анализ, перепроецирование и пр.

Одним из примеров таких серверов является приложение GeoServer в функционал которого входит:

  • Работа с различными источниками данных (БД, файлы, сервисы)
  • Структуризация данных
  • Стилизация данных: SLD/CSS
  • Поддержка множества системами координат, перепроецирование
  • Кэширование тайлов с помощью GeoWebCache
  • Сервисы WMS, WFS, WPS, WCS
  • Некое понятие безопасности доступа к данным

Общаясь с сервисами, клиенты могут получать необходимые данные для отображения.

Функционал GeoServer очень обширен и расширяем за счет подключения плагинов. Будучи распространяемым как открытое ПО, он нашел себе широкую аудиторию пользователей.

Варианты источников данных доступные по-умолчанию на GeoServer

Варианты источников данных доступные по-умолчанию на GeoServer

Предварительный просмотр слоя на GeoServer

Предварительный просмотр слоя на GeoServer

База данных и ГИС-сервер представляют из себя серверную часть приложения. Клиентская же часть берет на себя следующий круг обязанностей:

  • Отобразить данные
  • Позволить пользователю редактировать данные
  • Общаться с сервером по другим нуждам

На данный момент клиенты можно разделить на 3 группы с ниже перечисленными наиболее яркими их представителями (с указанием языков и платформ на которых ведется разработка, а также открытости):

1. Desktop

MapXtreme .Net Платное, лицензируемое
ArcGis .Net Платное, лицензируемое
SharpMap C# .Net Открытое ПО

 2. Web

Leaflet Javascript Открытое ПО
OpenLayers Javascript Открытое ПО
MapBox Javascript Условно-бесплатное

3. Mobile

MapBox Mobile SDK iOS (Objective C), Android (Java) Условно-бесплатное
ArcGis Mobile SDK iOS (Objective C, Swift)/Android (Java) Платное, лицензируемое
NextGis Mobile SDK Android (Java) Открытое ПО
Панорама SDK Android (Qt) Бесплатно-распространяемое ПО

В случае с разработкой web-приложений всегда можно обратиться к диаграмме за авторством Лорана Жегу, который свел на ней возможности различных открытых клиентских и серверных платформ и приложений с актуальностью на 2015 год.

Открытые платформы для реализации ГИС-приложений в web

Открытые платформы для реализации ГИС-приложений в web

Видео доклада

Комментарии

Аватар пользователя Гость

Я бы ещё добавил QGIS и его компоненты как кроссплатформенное решение

Аватар пользователя Ульянов Дмитрий

В статье проводится обзор именно средств разработки. QGIS прекрасен, однако, в данном разрезе является скорее средством поддержки разработки и решения вспомогательных задач, таких как подготовка данных, их анализ и разного рода манипуляции над ними.

Отправить комментарий

Содержимое этого поля является приватным и не будет отображаться публично.
АНТИСПАМ
Этот вопрос задается для того, чтобы выяснить, являетесь ли вы человеком или представляете из себя автоматическую спам-рассылку.
X
Вы можете войти с зарегистрированным именем пользователя или вашим e-mail адресом.
Пароль чувствителен к регистру.
Загрузка