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
对于本练习,您可以使用在课程开始时制作的基本地图,也可以只开始一张新地图并加载一些现有的层。在本例中,我们使用了新地图并加载了原始地图 places , landuse 和 protected_areas 层,并调整了符号系统:

将这些层加载到新地图中,或使用仅这些层可见的原始地图。
开始添加WMS图层之前,请停用“On the Fly”投影 (No CRS (or unknown/non-Earth projection) 。这可能会导致层不再正确重叠,但不要担心:我们稍后会解决这个问题。
制表符,勾选要添加WMS层,请单击
按钮以打开 Data Source Manager 对话框并启用
WMS/WMTS 标签。
请记住您在课程开始时是如何连接到SpatiaLite或GeoPackage数据库的。这个 landuse , buildings ,以及 roads 层存储在数据库中。要使用这些层,您首先需要连接到数据库。使用WMS类似,不同之处在于层位于远程服务器上。
要创建到WMS的新连接,请单击 New 纽扣。
您需要WMS地址才能继续。互联网上有几个免费的WMS服务器。其中之一是 terrestris ,它利用 OpenStreetMap 数据集。
要使用此WMS,请在当前对话框中进行设置,如下所示:
它的价值在于 Name 字段应为
terrestris
。它的价值在于 URL 字段应为
https://ows.terrestris.de/osm/service
。
单击 OK 。您应该会看到列出的新WMS服务器:
单击 Connect 。在下面的列表中,您现在应该看到加载了这些新条目:
这些都是此WMS服务器托管的所有层。
点击一下 OSM-WMS 一层。这将显示默认设置 Coordinate Reference System 正在使用以及数据集支持的CRS数量:
因为我们没有使用
EPSG:4326 - WGS 84
对于我们的地图,让我们找到一张符合我们需求的地图。单击 Add 使用在项目中加载层的步骤 Layer name (默认为 :guilabel:`OpenStreetMap WMS - by terrestris )。
关闭 Data Source Manager 对话框(如果未自动完成)
在 Layers 面板中,单击并将其拖动到列表底部。
缩小以获得层的全局视图。您将注意到您的层位置不正确(靠近非洲西部)。这是因为禁用了“On the Fly”投影。
让我们再次启用重新投影,但使用与 OpenStreetMap WMS 层,这是 WGS 84 / Pseudo Mercator 。
打开
选项卡取消选中 No CRS (or unknown/non-Earth projection)
选 WGS 84 / Pseudo Mercator 从名单上删除。
单击 OK 。
现在,用鼠标右键单击 Layers 面板,然后单击 Zoom to layer(s) 。您应该看到 Swellendam 区域:
注意WMS层的街道和我们自己的街道是如何重叠的。这是个好兆头!
WMS的性质和局限性
到目前为止,你可能已经注意到,这个WMS层实际上有很多功能。它有街道、河流、自然保护区等等。更重要的是,即使它看起来像是由矢量组成的,它似乎是一个栅格,但你不能改变它的符号系统。为什么会这样呢?
这就是WMS的工作原理:它是一张地图,类似于纸上的普通地图,你可以将其作为图像接收。通常会发生的情况是,您有向量层,QGIS会将其渲染为地图。但使用WMS时,这些矢量层位于WMS服务器上,WMS服务器会将其渲染为地图,并将地图以图像的形式发送给您。QGIS可以显示此图像,但不能更改其符号系统,因为所有操作都在服务器上处理。
这有几个优点,因为您不需要担心符号系统。它已经被解决了,在任何有能力设计的WMS上看起来都应该很好。
另一方面,如果你不喜欢符号系统,你就不能改变它,如果WMS服务器上的东西改变了,那么它们也会在你的地图上改变。这就是您有时希望改用Web要素服务(WFS)的原因,它为您提供单独的矢量化图层,而不是作为WMS样式地图的一部分。
不过,这一点将在下一课中介绍。首先,让我们添加另一个WMS层。
10.1.2.
Try Yourself
添加
eAtlas
此URL上的WMS服务器:https://maps.eatlas.org.au/maps/wms
加载为 World: Hillshading 层叠到地图中。
您可能想要设置其 Encoding 至 JPEG 以及它的 Tile size 选项以
200
通过200
,因此加载速度更快。您的地图应该如下所示(您可能需要重新排序各层,并应用一些透明度):
10.1.3.
Try Yourself
使用WMS的部分困难在于找到一个好的(免费的)服务器。
在以下位置查找新的WMS directory.spatineo.com (或其他在线的地方)。它不能有相关的费用或限制,并且必须覆盖 Swellendam 学习区。
请记住,为了使用WMS,您只需要它的URL(最好是某种描述)。
回答
Spatineo是你可以搜索OGC数据的许多地方之一。在文本区域中输入您感兴趣的名称、关键字和位置,看看是否会得到一些工作结果。对于本课程,您可能希望过滤结果以仅包括WMS。
您可能注意到,许多WMS服务器并不总是可用的。有时这是暂时的,有时是永久性的。在撰写本文时工作的WMS服务器的一个示例是 MapServer Demonstration Server Https://demo.mapserver.org/cgi-bin/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities.上的世界遗产管理系统它不需要收费,也不受准入限制,而且是全球性的。因此,它确实满足了要求。然而,请记住,这只是一个例子。还有许多其他WMS服务器可供选择。
10.1.4.
Try Yourself
添加 bluemarble 图层来自 MapServer Demonstration Server 。这是一个适合我们研究区域的数据集吗?
回答
隐藏所有其他WMS层,以防止它们在后台进行不必要的渲染。
使用与前面相同的方法添加新服务器和该服务器上托管的相应层:
如果您放大到 Swellendam 区域,您会注意到此数据集的分辨率较低:
因此,最好不要将此数据用于当前地图。蓝色大理石数据更适合全球或国家尺度
10.1.5. In Conclusion
使用WMS,您可以将非活动地图添加为现有地图数据的背景。
10.1.6. Further Reading
10.1.7. What's Next?
现在您已经添加了一个非活动地图作为背景,您会很高兴地知道还可以添加功能(例如您之前添加的其他矢量层)。可以使用Web Feature Service(WFS)从远程服务器添加功能。这是下一课的主题。