10.2. Занятие: Веб-сервисы объектов

Веб-сервисы объектов (WFS) дают своим пользователям данные ГИС в форматах, которые можно загрузить непосредственно в QGIS. В отличие от WMS, которая предоставляет вам только карту, которую вы не можете редактировать, WFS дает вам доступ к самим объектам.

Цель этого урока: Использовать WFS и понять, чем он отличается от WMS.

10.2.1. basic Идем дальше: Загружаем слои WFS

  1. Запустите новую карту. Вы делаете это для демонстрационных целей и не будете ее сохранять.

  2. Кликните на кнопку dataSourceManager Open Data Source Manager.

  3. Включите вкладку wfs WFS / OGC API - Features.

  4. Кликните на кнопку New.

  5. В появившемся диалоговом окне надо ввести Name в виде nsidc.org и адрес сайта URL https://nsidc.org/cgi-bin/atlas_south?version=1.1.0.

    ../../../_images/new_wfs_connection.png
  6. Кликните на кнопку OK и появится новое соединение в вашем Server connections.

  7. Кликните на Connect. Появится список доступных слоев:

    ../../../_images/wfs_connection_layers.png
  8. Снимите флажок Only request features overlapping the view extent внизу списка слоев, так как текущий холст вашей карты может не покрывать интересующую нас местность: Антарктида.

  9. Найдите слой antarctica_country_border. Вы можете использовать ячейку Filter на верхней части.

  10. Кликните на слой, чтобы выбрать его:

  11. Найдите и выберите также слой south_poles_wfs. Вам надо удерживать Ctrl.

    ../../../_images/south_poles_wfs.png
  12. Кликните на Add.

    Загрузка слоев может занять некоторое время. После загрузки они появятся на карте, показывая очертания Антарктиды и несколько точек над ней.

    ../../../_images/antarctica_border.png

    В чем отличие от слоя WMS?

  13. Выберите любой из слоев и вы заметите, что включены инструменты выбора объектов и таблицы атрибутов. Это векторные слои.

  14. Выберите слой south_poles_wfs и откройте его таблицу атрибутов. Вы должны увидеть это:

    ../../../_images/poles_attribute_table.png

    Так как точки имеют атрибуты, мы можем пометить их, а также изменить их условные обозначения. Вот пример:

    ../../../_images/labelling_example.png

Отличия от слоев WMS

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

10.2.2. moderate Идем дальше: Запрашиваем слои WFS

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

Например, на сервере WFS, который мы сейчас используем, есть слой, который называется countries (excluding Antarctica). Предположим, что мы хотим знать, где находится Южная Африка по отношению к слою south_poles_wfs (и, возможно, также слой antarctica_country_border), который уже был загружен.

Есть два способа сделать это. Вы можете загрузить весь слой countries …, а затем создайте запрос, как обычно, после его загрузки. Но передача данных по всем странам мира и последующее использование данных только по Южной Африке кажется немного расточительным с точки зрения пропускной способности. В зависимости от скорости вашего подключения, загрузка этого набора данных может занять несколько минут.

Альтернативным вариантом является создание запроса в качестве фильтра еще до загрузки слоя с сервера.

  1. Включите вкладку WFS / OGC API Features в диалоговом окне Data Source Manager.

  2. Подключитесь к серверу, который мы использовали раньше, и вы должны увидеть список доступных слоев.

  3. Найдите и дважды кликните по слою countries (excluding Antarctica). Название слоя такое country_borders_excluding_antarctica. Вы также можете выбрать слой и кликнуть на кнопку Build query в нижней части диалогового окна:

    ../../../_images/select_country_filter.png
  4. В появившемся диалоговом окне введите следующий запрос SELECT * FROM country_borders_excluding_antarctica WHERE "Countryeng" = 'South Africa' в  ячейке SQL Statement.

    ../../../_images/country_sa_builder.png
  5. Кликните на кнопку OK.

  6. Использованное выражение будет отображено как Sql значение целевого слоя:

    ../../../_images/country_filter_enabled.png
  7. Кликните на Add с выбранным слоем, как было показано выше. Только страна с Countryeng значением South Africa загрузится из этого слоя:

    ../../../_images/antarctica_sa.png

    Вы заметили indicatorFilter значок рядом со слоем country_borders_excluding_antarctica? Это указывает на то, что загруженный слой отфильтрован и не отображает в проекте все свои объекты.

  8. Вам не обязательно это делать, но если вы попробуете оба метода, вы заметите, что это намного быстрее, чем загружать все страны перед их фильтрацией!

О доступности WFS

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

Поэтому наиболее распространенный тип WFS, с которым вы столкнетесь, вероятно, будет находиться в локальной сети или даже на вашем собственном компьютере, а не в Интернете.

10.2.3. В заключении

Слои WFS предпочтительнее чем слои WMS, если вам нужен прямой доступ к атрибутам и геометрии слоев. Тем не менее, с учетом объема данных, которые необходимо загрузить (что приводит к проблемам со скоростью, а также к отсутствию легкодоступных серверов WFS), не всегда возможно использовать WFS вместо WMS.

10.2.4. Что дальше?

Далее вы увидите, как использовать QGIS Server для предоставления услуг OGC.