10.1. Занятие: Сервисы веб-карт

Сервисы веб-карт (WMS) - это сервис, размещенный на удаленном сервере. Как и в случае с веб-сайтом, вы можете получить к нему доступ, если у вас есть соединение с сервером. Используя QGIS, вы можете загрузить WMS прямо на свою существующую карту.

Как вы помните из урока по плагинам, можно, например, загрузить новое растровое изображение из Google. Тем не менее, это разовая операция: после того, как вы загрузили изображение, оно не меняется. WMS отличается тем, что это интерактивный сервис, который автоматически обновляет свой вид при панорамировании или масштабировании карты.

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

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

Для выполнения данного упражнения вы можете использовать либо базовую карту, которую вы создали в начале курса, или же просто создать новую карту и загрузить в нее некоторые существующие слои. В приведенном примере мы использовали новую карту и загрузили исходные слои places, landuse и protected_areas и скорректировали условные обозначения:

../../../_images/new_map.png
  1. Загрузите эти слои на новую карту или используйте свою исходную карту с только этими слоями.

  2. Перед тем, как добавить слой WMS, отключите проекцию «на лету» (вкладка Project ► Properties… ► CRS, отметить No CRS (or unknown/non-Earth projection). Это может привести к тому, что слои больше не будут правильно перекрываться, но не волнуйтесь: мы это исправим позже.

  3. Для того, чтобы добавить слои WMS, кликните на кнопку dataSourceManager для того, чтобы открыть диалоговое окно Data Source Manager и включить вкладку addWmsLayer WMS/WMTS.

    ../../../_images/datasourcemanager_wms.png

    Вспомните, как вы подключались к базе данных SpatiaLite или GeoPackage в начале курса. Слои landuse, buildings и roads хранятся в базе данных. Для того, чтобы использовать эти слои, вам надо было сперва подключиться к базе данных. WMS используется аналогичным образом, за исключением того, что слои находятся на удаленном сервере.

  4. Для того, чтобы создать новое подключение к WMS, надо кликнуть на кнопку New.

    Для продолжения работы вам нужен адрес WMS. Существует несколько бесплатных серверов WMS. Один из них `terrestris `_ , который использует набор данных `OpenStreetMap `_ .

  5. Для того, чтобы воспользоваться этим WMS, настройте ее в вашем текущем диалоговом окне следующим образом:

    ../../../_images/new_wms_connection.png
    • Значение поля Name должно быть terrestris.

    • Значение поля URL должно быть https://ows.terrestris.de/osm/service.

  6. Кликните на кнопку OK. Вы должны увидеть в списке новый WMS-сервер:

    ../../../_images/new_connection_listed.png
  7. Кликните на Connect. В списке ниже вы должны увидеть эти новые загруженные записи:

    ../../../_images/new_wms_entries.png

    Это все слои, размещенные на этом сервере WMS.

  8. Кликните один раз на слой OSM-WMS. Появится его Coordinate Reference System:

    ../../../_images/osm_wms_selected.png

    Так как мы не используем WGS 84 для нашей карты, давайте посмотрим все CRS, из которых нам нужно выбрать.

    1. Кликните на кнопку Change…. Вы увидите стандартное диалоговое окно Coordinate Reference System Selector.

    2. Нам нужна проецированная CRS, так что давайте выберем WGS 84 / Pseudo Mercator.

      1. Введите значение pseudo в поле Filter:

      2. Выберите WGS 84 / Pseudo Mercator (с epsg: 3857) из списка.

        ../../../_images/pseudo_mercator_selected.png
      3. Кликните на кнопку OK. Система координат, связанная с записью, изменилась.

  9. Кликните на Add и появится новый слой на вашей карте как OpenStreetMap WMS - by terrestris.

  10. Закройте диалоговое окно Data Source Manager, если оно не закрылась автоматически.

  11. На панели Layers кликните и перетащите в конец списка.

  12. Уменьшите масштаб для того, чтобы получить общий вид слоев. Вы заметите, что ваши слои расположены неправильно (рядом с западной Африкой). Это произошло потому, что проецирование «на лету» отключено.

    ../../../_images/reprojection_off.png
  13. Давайте снова включим пере-проецирование, но используя ту же проекцию, что и в слое OpenStreetMap WMS т.е. WGS 84 / Pseudo Mercator.

    1. Откройте вкладку Project ► Properties… ► CRS.

    2. Снимите флажок No CRS (or unknown/non-Earth projection).

    3. Выберите WGS 84 / Pseudo Mercator из списка.

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

  14. Теперь кликните правой кнопкой мыши на одном из ваших слоев в панели Layers и кликните на Zoom to layer extent. Вы увидите местность Swellendam:

    ../../../_images/wms_result.png

Обратите внимание, как перекрываются улицы слоя WMS и наши улицы. Это хороший знак!

10.1.1.1. Сущность и ограничения WMS

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

Так работает WMS: это карта, похожая на обычную бумажную карту, которую вы получаете в виде изображения. У вас есть векторные слои, которые QGIS отображает как карту. Но при использовании WMS эти векторные слои находятся на сервере WMS, который отображает их как карту и выдает эту карту вам как изображение. QGIS может показать это изображение, но не может изменять его условные обозначения, потому что все это обрабатывается на сервере.

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

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

Этот вопрос будет рассмотрено в следующем уроке. Сначала давайте добавим еще один слой WMS из сервера WMS terrestris.

10.1.2. basic Попробуйте сами

  1. Надо скрыть слой OSM-WSM в панели Layers.

  2. Добавьте «ZAF CGS 1M Bedrock Lithostratigraphy» WMS сервер в: URL: http://196.33.85.22/cgi-bin/ZAF_CGS_Bedrock_Geology/wms.

  3. Загрузите слой BEDROCKGEOLOGY на карту (вы также можете использовать кнопку Layer ► Add Layer ► addWmsLayer Add WMS/WMTS Layer… для того, чтобы открыть диалоговое окно the Data Source Manager). Надо проверить, находится ли она той же WGS 84 / World Mercator проекции как и остальная часть вашей карты!

  4. Вы можете настроить его Encoding на JPEG и его Tile size опцию на 200 на 200, чтобы она загружалась быстрее:

    ../../../_images/bedrock_geology_layer.png

Проверьте свои результаты

10.1.3. moderate Попробуйте сами

  1. Скройте все остальные слои WMS, чтобы они не отображались в фоновом режиме без надобности.

  2. Добавьте «OGC» WMS-сервер на: http://ogc.gbif.org:80/wms.

  3. Добавьте слой bluemarble.

Проверьте свои результаты

10.1.4. hard Попробуйте сами

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

  • Найдите новую WMS на `directory.spatineo.com `_ (или еще где-то в интернете) без надобности оплаты каких-либо услуг или без ограничений и он должен охватывать всю территорию исследования Swellendam.

    Помните, что для использования WMS вам нужен лишь адрес сайта (и желательно какое-то описание).

Проверьте свои результаты

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

Используя WMS, вы можете добавлять неактивные карты в качестве фона для ваших существующих картографических данных.

10.1.6. Дополнительные материалы для чтения

  • `Spatineo Directory `_

  • `OpenStreetMap.org list of WMS servers `_

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

После того как вы добавили неактивную карту в качестве фона, вы будете рады узнать, что вы также можете добавлять объекты (например, другие векторные слои, которые вы добавляли ранее). Добавление объектов с удаленных серверов возможно с помощью веб-сервисов объектов (WFS). Это тема следующего урока.