WPS на примере Geoserver - анализ ГИС-данных на сервере


Жизненный случай: дан слой с Придорожной полосой. Имея координаты земельного участка получить координаты части этого участка, попадающей в Придорожную полосу.
Для этого можно использовать инструменты анализа в настольных ГИС, а можно использовать реализацию этих инструментов в виде специальных веб-сервисов - WPS. Рассмотрим реализацию WPS на примере геоинформационого сервера Geoserver 2.3.4.
Процесс реализующей результат пересечения - geo:intersection. Он принимает на входе 2 геометрии (GML, WKT). Одна, первая геометрия это наш участок, а в качестве другой коллекция геометрий со слоя придорожных полос.

"Наш" участок можно реализовать различными способами, главное получить список координат в используемых Geoserver WPS форматах для входной геометрии (Process inputs). Здесь рассматривается случай реализованный на Геопортале автомобильных дорог (тестовый) который отображает координаты в формате WKT.

Получение координат исходного участка реализовано в приложении для землеустройства на Геопортале автомобильных дорог (Рис.1). Пользователь рисует на карте участок и после завершения получает координаты в информационной панели.


Рис.1. Создание участка и получение его координат


Далее нужно настроить запрос в формате WPS. Для этого нужно перейти по ссылке "Demos" в панели Geoserver. На следующей странице перейти по ссылке "WPS request builder". Откроется строитель запроса показанный на Рис.2, изначально страница содержит намного меньше информации. Нужно выбрать процесс создания пересечений  geo:intersection. В качестве первого входного аргумента (Process inputs a*) необходимо через буфер обмена вставить координаты участка в формате WKT. 
В качестве второго входного атрибута будет использован другой процесс (subprocess). Для его выбора в списке Second input geometry вместо TEXT нужно выбрать SUBPROCESS и нажать на ссылку Define/Edit рядом со списком. В появившимся окне нужно выбрать процесс gs:CollectGeometries который возвращает коллекцию геометрического описания всех объектов выбранного векторного слоя. Здесь нужно указать необходимый векторный слой. В данном случае это geoportal:Wayside_ar. далее нажать Apply.

Рис.2. Создание процесса (WPS) пересечения в Geoserver


После этого можно запустить (Execute process) процесс. В зависимости от вида описания результата, результат можно получить в виде: 
  • текстового описания в формате GML полученной геометрии в отдельном окне для text/xml
  • текстового файла WKT-формата для application/wkt
  • текстового файла GML-формата для application/gml

Пример файла GML-формата:
<gml:Polygon srsDimension="2"><gml:exterior><gml:LinearRing srsDimension="2"><gml:posList>37.59691277662578 55.40345109740794 37.59709502402243 55.402968193115996 37.596075784597176 55.402633140224594 37.595510114492214 55.403025704467105 37.59674141842309 55.40340070004356 37.59691277662578 55.40345109740794</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon>
Пример с визуализацией результата из в WKT-файла в QuantumGIS:

Рис.3. Визуализация результата в QGIS

Более подробную информацию по WPS в Geoserver можно узнать тут.

Популярные сообщения из этого блога

Настройка сети в VirtualBox

Использование WFS-источника Geoserver в своём сайте на Openlayers

/usr/bin/env: node: Нет такого файла или каталога