10.1. Lesson: Web地图服务

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

例如,从关于插件的课程中,你会记得从Google加载新的栅格图像是可能的。然而,这是一次性的交易:一旦您下载了镜像,它就不会改变。WMS的不同之处在于,它是一项实时服务,如果您平移或缩放地图,它将自动刷新其视图。

The goal for this lesson: 使用WMS并了解其局限性。

10.1.1. 基本信息 Follow Along: Loading a WMS Layer

对于本练习,您可以使用在课程开始时制作的基本地图,也可以只开始一张新地图并加载一些现有的层。在本例中,我们使用了新地图并加载了原始地图 placeslanduseprotected_areas 层,并调整了符号系统:

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

  2. 开始添加WMS图层之前,请停用“On the Fly”投影 (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数据库的。这个 landusebuildings ,以及 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 正在使用以及数据集支持的CRS数量:

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

    因为我们没有使用 EPSG:4326 - WGS 84 对于我们的地图,让我们找到一张符合我们需求的地图。

    1. 单击 集合投影 :sup:选择CRS`按钮。您将看到一个标准 :guilabel:`Coordinate Reference System Selector 显示发布数据时使用的所有CRS的对话框。

    2. 我们想要一个 projected CRS,所以让我们选择 WGS 84 / Pseudo-Mercator 使用 EPSG:3857 。你可以用上面的 搜索 Filter 小工具。

      ../../../_images/pseudo_mercator_selected.png
      1. 单击 OK 。与该条目关联的坐标参考系已更改。

  9. 单击 Add 使用在项目中加载层的步骤 Layer name (默认为 :guilabel:`OpenStreetMap WMS - by terrestris )。

  10. 关闭 Data Source Manager 对话框(如果未自动完成)

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

  12. 缩小以获得层的全局视图。您将注意到您的层位置不正确(靠近非洲西部)。这是因为禁用了“On the Fly”投影。

    ../../../_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(s) 。您应该看到 Swellendam 区域:

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

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

WMS的性质和局限性

到目前为止,你可能已经注意到,这个WMS层实际上有很多功能。它有街道、河流、自然保护区等等。更重要的是,即使它看起来像是由矢量组成的,它似乎是一个栅格,但你不能改变它的符号系统。为什么会这样呢?

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

这有几个优点,因为您不需要担心符号系统。它已经被解决了,在任何有能力设计的WMS上看起来都应该很好。

另一方面,如果你不喜欢符号系统,你就不能改变它,如果WMS服务器上的东西改变了,那么它们也会在你的地图上改变。这就是您有时希望改用Web要素服务(WFS)的原因,它为您提供单独的矢量化图层,而不是作为WMS样式地图的一部分。

不过,这一点将在下一课中介绍。首先,让我们添加另一个WMS层。

10.1.2. 基本信息 Try Yourself

  1. 添加 eAtlas 此URL上的WMS服务器: https://maps.eatlas.org.au/maps/wms

  2. 加载为 World: Hillshading 层叠到地图中。

  3. 您可能想要设置其 EncodingJPEG 以及它的 Tile size 选项以 200 通过 200 ,因此加载速度更快。

  4. 您的地图应该如下所示(您可能需要重新排序各层,并应用一些透明度):

    ../../../_images/world_hillshading_result.png

10.1.3. 硬的 Try Yourself

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

  • 在以下位置查找新的WMS directory.spatineo.com (或其他在线的地方)。它不能有相关的费用或限制,并且必须覆盖 Swellendam 学习区。

    请记住,为了使用WMS,您只需要它的URL(最好是某种描述)。

10.1.4. 硬的 Try Yourself

  • 添加 bluemarble 图层来自 MapServer Demonstration Server 。这是一个适合我们研究区域的数据集吗?

10.1.5. In Conclusion

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

10.1.6. Further Reading

10.1.7. What's Next?

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