10.1. 课: Web地图服务

Web地图服务 (WMS) 是托管在远程服务器上的服务。与网站类似,只要连接到服务器,就可以进行访问。使用QGIS,您可以将WMS直接加载到现有地图中。

例如,从插件的课程中,您将想起,可以从谷歌加载新的栅格图像。然而,这是一次性事务:一旦您下载了图像,就无法更改。WMS不同之处在于,它是实时服务,如果您在地图上平移或缩放,就会自动刷新视图。

本课目标: 使用WMS并了解其局限性。

10.1.1. basic 跟我做: 加载WMS图层

在本练习中,您可以使用课程开始时制作的底图,也可以启动新地图并将一些现有图层加载到其中。在本例中,我们使用了新地图,加载了原始 places, landuseprotected_areas 图层,并调整了符号:

../../../_images/new_map.png
  1. 将这些图层加载到新地图中,或使用仅显示这些图层的原始地图。

  2. 开始添加WMS图层之前,请停用 "动态" 投影 (工程 ► 工程属性... ► CRS 选项卡, 勾选 无CRS (或未知/非地球投影) 。这可能会导致图层不再正确重叠,但别担心,我们稍后会解决这个问题。

  3. 要添加WMS图层,请单击 dataSourceManager 按钮打开 数据源管理器 对话框,并启用 addWmsLayer WMS/WMTS 选项卡。

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

    还记得您在课程开始时是如何连接SpatiaLite或GeoPackage数据库的吗? landuse, buildingsroads 图层存储在数据库中。要使用这些图层,首先需要连接到数据库。使用WMS与此类似,只是图层位于远程服务器上。

  4. 要创建与WMS的新连接,请单击 新建 按钮。

    您需要WMS地址才能继续。互联网上有几台免费的WMS服务器。其中一台是 terrestris ,它使用了 OpenStreetMap 数据集。

  5. 要使用此WMS,请在当前对话框中进行如下设置:

    ../../../_images/new_wms_connection.png
    • 名称 字段的值应为 terrestris

    • URL 字段的值应为 https://ows.terrestris.de/osm/service

  6. 单击 确定 。您应该会看到新的WMS服务器列表:

    ../../../_images/new_connection_listed.png
  7. 单击 连接 。在下面的列表中,您现在应该可以看到加载的这些新条目:

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

    这些都是此WMS服务器托管的图层。

  8. OSM-WMS 图层上单击一次。这将显示其 坐标参照系

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

    因为我们的地图未使用 WGS 84 ,让我们看看所有CRS并从中选择一个。

    1. 单击 更改... 按钮,您将看到一个标准 坐标参照系选择器 对话框。

    2. 我们需要一个 投影 的CRS,所以选择 WGS 84 / Pseudo Mercator

      1. 过滤器 字段中输入 pseudo 值。

      2. 从列表中选择 WGS 84 / Pseudo Mercator (带有 epsg:3857) 。

        ../../../_images/pseudo_mercator_selected.png
      3. 单击 确定 。与条目关联的坐标参照系已更改。

  9. 单击 添加 ,新图层将在地图中显示为 OpenStreetMap WMS - by terrestris

  10. 如果未自动完成,请关闭 数据源管理器 对话框。

  11. 图层 面板,单击并将其拖动到列表底部。

  12. 缩小以获得图层的全局视图。您会注意到图层的位置不正确 (靠近非洲西部),这是因为 "动态" 投影被禁用。

    ../../../_images/reprojection_off.png
  13. 再次启用重投影,但使用与 OpenStreetMap WMS 图层相同的投影,即 WGS 84 / Pseudo Mercator

    1. 打开 工程 ► 工程属性... ► CRS 选项卡

    2. 取消勾选 无CRS (或未知/非地球投影)

    3. 从列表中选择 WGS 84 / Pseudo Mercator

      ../../../_images/enable_projection.png
    4. 单击 确定

  14. 现在,在 图层 面板中您自己的一个图层上右键单击,然后单击 缩放到图层 。您应该看到 Swellendam 地区:

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

请注意WMS图层的街道和我们自己的街道是如何重叠的。这是个好兆头!

WMS的特点和局限性

到目前为止,您可能已经注意到,这个WMS图层实际上有很多要素,比如街道、河流、自然保护区等等。更重要的是,尽管看起来像是由矢量组成的,但它似乎是栅格,您无法更改其符号。为什么?

这就是WMS的工作原理:它是一张地图,类似于纸上的普通地图,您可以将其作为图像接收。通常的情况是,你有矢量图层,QGIS将其渲染为地图。但是使用WMS时,这些矢量图层位于WMS服务器,该服务器将其渲染为地图,并将该地图作为图像发送给您。QGIS可以显示此图像,但不能更改其符号,因为所有这些都是在服务器上处理的。

这有几个优点,因为您无需担心符号。这已经解决了,在任何设计得当的WMS上都可以看到。

另一方面,如果您不喜欢符号,也无法将其修改。如果WMS服务器上进行了更改,那么您的地图也随之变化。这就是为什么有时需要使用Web要素服务 (WFS),它单独提供矢量图层,而不是作为WMS样式地图的一部分。

不过,这将在下一课介绍。首先,让我们从 terrestris WMS 服务器添加另一个WMS图层。

10.1.2. basic 试一试

  1. 图层 面板隐藏 OSM-WSM 图层。

  2. 在以下URL添加 "ZAF CGS 1M Bedrock Lithostratigraphy" WMS 服务器: http://196.33.85.22/cgi-bin/ZAF_CGS_Bedrock_Geology/wms

  3. BEDROCKGEOLOGY 图层加载到地图中 (您也可以使用 图层 ► 添加图层 ► addWmsLayer 添加WMS/WMTS图层... 按钮打开数据源管理器对话框)。记得检查是否与地图的其他部分都使用的 WGS 84 / World Mercator 投影!

  4. 您可能希望将其 编码 设置为 JPEG ,并将其 瓦片大小 选项设置为 200 × 200 ,以便更快加载:

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

10.1.3. moderate 试一试

  1. 隐藏所有其他WMS图层,防止它们在后台进行不必要的渲染。

  2. 在以下URL添加 "OGC" WMS 服务器: http://ogc.gbif.org:80/wms

  3. 添加 bluemarble 图层。

10.1.4. hard 试一试

使用WMS的部分困难在于找到一个好的 (免费) 服务器。

  • directory.spatineo.com (或其他在线网站) 中查找新的WMS。不得有相关费用或限制,且必须覆盖 Swellendam 研究区域。

    请记住,使用WMS所需的只是其URL (最好是某种描述)。

10.1.5. 综上所述

使用WMS,可以将非活动地图添加为现有地图数据的后面。

10.1.6. 延伸阅读

10.1.7. 下节引言

现在,已经添加了非活动地图作为背景,您将很高兴地知道,还可以添加要素 (例如之前添加的其他矢量图层)。通过使用Web要素服务 (WFS),可以从远程服务器添加要素。这是下一课的主题。