22. 使用OGC/ISO协议

开放地理空间联盟(OGC)是一个国际组织,在全球拥有300多个商业、政府、非营利和研究组织的成员。其成员制定和实施地理空间内容和服务、地理信息系统数据处理和交换的标准。

为了描述地理特征的基本数据模型,OGC开发了越来越多的规范,以满足包括地理信息系统在内的可互操作的位置和地理空间技术的特定需求。欲了解更多信息,请访问https://www.ogc.org/.。

QGIS支持的重要OGC规范包括:

OGC服务越来越多地被用于在不同的地理信息系统实现和数据存储之间交换地理空间数据。QGIS可以作为客户端处理上述规范, SFS (通过PostgreSQL/PostGIS数据提供程序的支持,请参阅部分 PostGIS图层 )。

您还可以使用的Web服务器通过WMS、WMTS、WFS、WFS-T和WCS协议共享地图和数据 QGIS Server 、安装了UMN MapServer或Geoserver。

22.1. WMS/WMTS客户端

22.1.1. WMS支持概述

QGIS目前可以作为WMS客户端,理解WMS 1.1、1.1.1和1.3服务器。特别是,它已经在可公开访问的服务器(如Demis)上进行了测试。

WMS服务器响应客户端(例如,QGIS)对具有给定范围、一组层、符号化样式和透明度的栅格地图的请求。然后,WMS服务器咨询其本地数据源,栅格化地图,并以栅格格式将其发送回客户端。对于QGIS,此格式通常为JPEG或PNG。

WMS一般是REST(表述性状态转移)服务,而不是成熟的Web服务。因此,您实际上可以获取QGIS生成的URL,并在Web浏览器中使用它们来检索QGIS内部使用的相同图像。这对于故障排除很有用,因为市场上有几个品牌的WMS服务器,它们都有自己的WMS标准解释。

可以非常简单地添加WMS层,只要您知道访问WMS服务器的URL,您就有到该服务器的可服务连接,并且服务器将HTTP理解为数据传输机制。

此外,只要GetCapables请求未被触发,QGIS就会缓存您的WMS响应(即图像)24小时。GetCapables请求在每次调用 Connect 按钮中的 WMS/WMTS 对话框用于检索WMS服务器功能。这是一个自动功能,旨在优化项目加载时间。如果使用WMS图层保存工程,则下次打开工程时将从缓存加载相应的WMS瓦片,只要这些瓦片不超过24小时。

22.1.2. WMTS支持概述

QGIS还可以充当WMTS客户端。WMTS是用于分发平铺地理空间数据集的OGC标准。这是一种比WMS更快、更高效的数据分发方式,因为使用WMTS时,瓦片集是预先生成的,并且客户端只请求瓦片的传输,而不是它们的生产。WMS请求通常涉及数据的生成和传输。用于查看平铺地理空间数据的非OGC标准的一个著名示例是Google Maps。

为了以接近用户可能需要的各种比例显示数据,WMTS切片集以几个不同的比例级别生成,并可供地理信息系统客户端请求。

下图说明了平铺集的概念:

../../../_images/concept_wmts.png

图 22.1 WMTS瓦集的概念

QGIS支持的两种类型的WMTS接口是通过键值对(KVP)和RESTful。这两个接口是不同的,您需要在QGIS中以不同方式指定它们。

  1. 为了访问 WMTS KVP 服务,QGIS用户必须打开WMS/WMTS界面,并将以下字符串添加到WMTS切片服务的URL中:

    "?SERVICE=WMTS&REQUEST=GetCapabilities"
    

    这类地址的一个示例是:

    https://opencache.statkart.no/gatekeeper/gk/gk.open_wmts?service=WMTS&request=GetCapabilities
    

    为了测试这个WMTS中的TopO2层,它工作得很好。添加此字符串表示要使用WMTS Web服务而不是WMS服务。

  2. 这个 RESTful WMTS 服务采用一种不同的形式,一个简单的URL。OGC建议的格式为:

    {WMTSBaseURL}/1.0.0/WMTSCapabilities.xml
    

    此格式可帮助您识别它是REST风格的地址。在QGIS中,只需在表单的URL字段中添加其在WMS设置中的地址,即可访问REST风格的WMTS。以奥地利底图为例,此类地址的示例为:

    https://maps.wien.gv.at/basemap/1.0.0/WMTSCapabilities.xml
    

备注

您仍然可以找到一些称为WMS-C的旧服务。这些服务与WMTS非常相似(即,目的相同,但工作方式略有不同)。您可以像管理WMTS服务一样管理它们。只需添加 ?tiled=true 在URL的末尾。有关此规范的更多信息,请参阅https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification。

当你阅读WMTS时,你通常也会想到WMS-C。

22.1.3. 选择WMS/WMTS服务器

第一次在QGIS中使用WMS/WMTS功能时,没有定义任何服务器。

然后,您需要创建到目标服务器的连接:

  1. 转到 WMS WMS/WMTS 选项卡中的 Data Source Manager 对话框,通过以下方式之一:

    • 单击 DataSourceManager Open Data Source Manager 按钮(或按下 Ctrl+L )并启用该选项卡

    • 单击 AddWmsLayer Add WMS layer 按钮上的 Manage Layers 工具栏

    • or selecting Layer ► Add Layer ► AddWmsLayer Add WMS/WMTS Layer... menu

  2. 新闻发布会 NewLayers 标签。这个 Create a New WMS/WMTS Connection... 此时会出现一个对话框。

    小技巧

    右键单击 WMS WMS/WMTS 中的条目 Browser panel 并选择 New Connection... 还会打开 Create a New WMS/WMTS Connection... 对话框中。

  3. 然后输入参数以连接到所需的WMS服务器,如下所示:

    ../../../_images/add_connection_wms.png

    图 22.2 创建到WMS服务器的连接

    • Name :连接的名称。此名称将在服务器连接下拉框中使用,以便您可以将其与其他WMS服务器区分开来。

    • URL :提供数据的服务器的URL。这必须是可解析的主机名--与您用于打开Telnet连接或ping主机的格式相同,即仅限基本URL。例如,您不应该有像这样的片段 request=GetCapabilitiesversion=1.0.0 在您的URL中。

    • Authentication (可选):使用 stored configuration 或使用的基本身份验证 UsernamePassword

      警告

      进入 usernamepasswordAuthentication 选项卡将在连接配置中保留不受保护的凭据。那些 credentials will be visible 例如,如果您与某人共享了项目文件。因此,建议将凭据保存在 Authentication configuration 取而代之的是 (Configurations 选项卡)。看见 认证系统 了解更多详细信息。

    • HTTP Referer

    • WMS DPI-Mode :可用选项包括 alloffQGISUMNGeoServer

    • WMTS server-side tile pixel ratio :渲染WMTS层时,允许根据设备屏幕DPI放大或缩小平铺。可用选项包括 Undefined (not scaled)Standard (96 DPI)High (192 DPI)

    • 未选中 Ignore GetMap/GetTile/GetLegendGraphic URI reported in capabilities :如果选中,则使用 URL 上面的字段。

    • 未选中 Ignore GetFeatureInfo URI reported in capabilities :如果选中,则使用 URL 上面的字段。

    • 未选中 Ignore reported layer extents :由于栅格层报告的范围可能小于可渲染的实际区域(特别是对于符号系统占用的空间大于数据范围的WMS服务器),选中此选项可避免将栅格层裁剪到其报告的范围,从而导致这些层的边界上的符号被截断。

    • 未选中 Ignore axis orientation (WMS 1.3/WMTS)

    • 未选中 Invert axis orientation

    • 未选中 Smooth pixmap transformation

  4. 新闻发布会 OK

一旦创建了新的WMS/WMTS服务器连接,它将被保留以供将来的QGIS会话使用。

If you need to set up a proxy server to be able to receive WMS services from the internet, you can add your proxy server in the options. Choose Settings ► Options and click on the Network tab. There, you can add your proxy settings and enable them by setting 复选框 Use proxy for web access. Make sure that you select the correct proxy type from the Proxy type 选择字符串 drop-down menu.

22.1.4. 加载WMS/WMTS图层

一旦您成功地填写了参数,就可以使用 Connect 按钮以检索所选服务器的功能。这包括图像编码、层、层样式和投影。由于这是一个网络操作,响应的速度取决于您到WMS服务器的网络连接的质量。从WMS服务器下载数据时,下载进度显示在QGIS主对话框的左下角。

Your screen should now look a bit like 图 22.3, which shows the response provided by a WMS server.

../../../_images/connection_wms.png

图 22.3 用于添加WMS服务器的对话框,并在可用图层上进行过滤

的上半部分 Layers 该对话框的选项卡显示了一个树结构,该树结构可以包括嵌入层的层组以及服务器提供的与其关联的图像样式(S)。每一项都可以通过以下方式进行标识:

  • 一个 ID

  • 一个 Name

  • 一个 Title

  • 和一个 Abstract

该列表可以使用 搜索 右上角的小工具。

Image Encoding

这个 Image encoding 部分列出了客户端和服务器都支持的格式。根据您的图像精度要求选择一种。

小技巧

Image Encoding

您通常会发现,WMS服务器为您提供了JPEG或PNG图像编码的选择。JPEG是一种有损压缩格式,而PNG会忠实地复制原始栅格数据。

如果您希望WMS数据在本质上是照相的,并且/或者您不介意图像质量有所下降,请使用JPEG。与PNG相比,这种权衡通常会将数据传输要求降低五倍。

如果您想要原始数据的精确表示,并且不介意增加的数据传输要求,请使用PNG。

Options

该对话框的选项区域提供了配置WMS请求的方法。您可以定义:

  • Tile size 如果要设置平铺大小(例如,256x256)以将WMS请求拆分为多个请求。

  • Request step size :如果要减少平铺边框上剪切标签的影响,增加步长将创建更大的请求、更少的平铺和更少的边框。默认值为2000。

  • 这个 Maximum number of GetFeatureInfo results 从服务器

  • 根据WMS服务器的能力,每个WMS层可以呈现在多个CRS中。如果从列表中选择WMS,则会出现一个带有Web服务器提供的默认投影的字段。按下按钮 集合投影 Select CRS 用WMS服务器支持的另一个CRS替换WMS的默认投影的小部件。

    A dialog similar to the one shown in 图 10.4 will appear. The main difference with the WMS version of the dialog is that only those CRSs supported by the WMS server will be shown.

  • 最后,您可以激活 复选框 Use contextual WMS Legend 如果WMS服务器支持此功能。则只会显示当前地图视图范围的相关图例,因此不会包括您在当前地图中看不到的项目的图例项目。

在该对话框的底部,一个 Layer name 文本字段显示所选项目的 Title 。您可以随意更改名称。此名称将出现在 Layers 面板在您按下 Add 按钮,并将该图层(S)加载到QGIS.

您可以一次选择多个层,但每个层只能选择一个图像样式。当选择多个层时,它们将在WMS服务器上合并,并作为单个层一次性传输到QGIS。默认名称为斜杠 (/ )分开的原始标题列表。但是,您可以选择 复选框 Load as separate layers

Layer Order

这个 Layer Order 选项卡列出了当前连接的WMS服务器中可用的选定图层。

服务器渲染的WMS图层按中列出的顺序进行叠加 Layers 选项卡,从列表的顶部到底部。如果要更改覆盖顺序,可以使用 UpDown 的按钮 Layer Order 标签。

Transparency

这个 Global transparency 设置来自 Layer Properties 硬编码为在可用的情况下始终打开。

22.1.5. 瓷砖集

使用WMTS(缓存的WMS)服务时,您可以浏览 Tilesets 服务器给出的标签。此表中列出了磁贴大小、格式和支持的CR等其他信息。

# example of WMTS service

https://opencache.statkart.no/gatekeeper/gk/gk.open_wmts?service=WMTS&request=GetCapabilities

选择要加载的层,也可以应用 Interpretation method ,将其转换为单波段浮点类型的栅格图层,即可使用QGIS常规设置样式 raster renderers

与此功能结合使用时,您可以通过选择 View ► Panels (或 KDE Settings ► Panels ),然后选择 Tile Scale Panel 。这为您提供了可从瓷砖服务器与一个漂亮的滑块对接的比例。

22.1.6. 使用识别工具

添加WMS服务器后,如果WMS服务器中的任何图层是可查询的,则可以使用 识别 Identify 工具来选择地图画布上的像素。针对所做出的每个选择向WMS服务器进行查询。查询的结果以纯文本形式返回。此文本的格式取决于使用的特定WMS服务器。

Format selection

如果服务器支持多种输出格式,则具有受支持格式的组合框将自动添加到识别结果对话框中,并且选定的格式可能会存储在该层的项目中。

GML format support

这个 识别 Identify 该工具支持GML格式的WMS服务器响应(GetFeatureInfo)(在本文中,它在QGIS图形用户界面中称为Feature)。如果服务器支持并选择了“Feature”格式,则识别工具的结果是矢量特征,就像来自常规矢量层的结果一样。当在树中选择单个要素时,它将在地图中亮显,并且可以复制到剪贴板并粘贴到另一个矢量层。请参阅下面的UMN映射服务器的示例设置,以支持GML格式的GetFeatureInfo。

# in layer METADATA add which fields should be included and define geometry (example):

"gml_include_items"   "all"
"ows_geometries"      "mygeom"
"ows_mygeom_type"     "polygon"

# Then there are two possibilities/formats available, see a) and b):

# a) basic (output is generated by Mapserver and does not contain XSD)
# in WEB METADATA define formats (example):
"wms_getfeatureinfo_formatlist" "application/vnd.ogc.gml,text/html"

# b) using OGR (output is generated by OGR, it is sent as multipart and contains XSD)
# in MAP define OUTPUTFORMAT (example):
OUTPUTFORMAT
    NAME "OGRGML"
    MIMETYPE "ogr/gml"
    DRIVER "OGR/GML"
    FORMATOPTION "FORM=multipart"
END

# in WEB METADATA define formats (example):
"wms_getfeatureinfo_formatlist" "OGRGML,text/html"

22.1.7. 查看属性

添加WMS服务器后,可通过在图例中右键单击该服务器并选择 Properties 。WMS/WMTS图层属性与栅格图层属性非常相似,因此您可以在 栅格属性对话框 。然而,其中有一些不同之处,下面将对此进行说明。

22.1.7.1. 信息属性

Metadata Tab

该选项卡 Metadata 显示有关WMS服务器的大量信息,这些信息通常从该服务器返回的CAPABILITY语句中收集。通过阅读WMS标准可以收集到许多定义(请参阅中的开放地理空间联盟 文献和网络参考文献 ),但这里有几个方便的定义:

  • Server Properties

    • WMS Version -服务器支持的WMS版本。

    • Image Formats -绘制地图时服务器可以响应的MIME类型列表。QGIS支持构建底层Qt库时使用的任何格式,通常至少 image/pngimage/jpeg

    • Identity Formats -当您使用识别工具时,服务器可以使用的MIME类型列表。目前,QGIS支持 text-plain 打字。

  • Layer Properties

    • Selected -在将该层的服务器添加到该项目时是否选择了该层。

    • Visible -该层是否在图例中选择为可见(在此版本的QGIS中尚未使用)。

    • Can Identify -当在该层上使用识别工具时,它是否会返回任何结果。

    • Can be Transparent -此层是否可以透明渲染。如果是,此版本的QGIS将始终使用透明度 Yes 图像编码支持透明。

    • Can Zoom In -该层是否可以被服务器放大。此版本的QGIS假定所有WMS图层都将其设置为 Yes 。不足的层可能会呈现出奇怪的效果。

    • Cascade Count -WMS服务器可以充当其他WMS服务器的代理,以获取某个层的栅格数据。此条目显示此层的请求被转发到对等WMS服务器以获得结果的次数。

    • Fixed Width, Fixed Height -该层是否具有固定的源像素尺寸。此版本的QGIS假定所有WMS层都将此设置为零。不足的层可能会呈现出奇怪的效果。

    • WGS 84 Bounding Box -层的边界框,以WGS 84坐标表示。一些WMS服务器没有正确设置(例如,改为使用UTM坐标)。如果是这种情况,则该层的初始视图可能会被QGIS渲染为非常“缩小”的外观。应将此错误通知给WMS网站管理员,他们可能会将此错误称为WMS XML元素 LatLonBoundingBoxEX_GeographicBoundingBox 或CRS:84 BoundingBox

    • Available in CRS -WMS服务器可以渲染该层的投影。它们以WMS本机格式列出。

    • Available in style -WMS服务器可以呈现该层的图像样式。

22.1.7.2. 时态特性

栅格 temporal properties (即 Dynamic Temporal Control )可以为WMS和WMTS层设置。默认情况下,将启用了时间维度的WMS或WMTS图层添加到项目中时,会在 Layers 面板上带有 指标临时工 Temporal Layer 它旁边的图标。它的 Temporal 属性默认为 Automatic 时态模式,这意味着该层将默认遵循时态控制器的当前时间范围。

然后,您可以通过取消选中来选择显示该图层的特定静态时间值 Dynamic Temporal Control 并选择下面的选项 Static WMS-T Temporal Range

  • Server default

  • Predefined date 其中服务器展示非连续时间范围的数据或 Predefined range 其中服务器展示了一系列可用日期。一个 Start dateEnd date 在后一种情况下是必要的。它们的预期格式可以从参考时间选项中推导出来(见下文)。取决于提供程序是否具有连续期间的数据

  • Follow project's temporal range 如项目的属性对话框中所定义

../../../_images/temporal_properties.png

图 22.4 WMTS层的时间特性

无论使用哪种时态数据控件,都有一些 WMS-T Settings 要帮助显示正确的时态数据,请执行以下操作:

  • Time slice mode 它可以是:

    • Use whole temporal range

    • Match to start of range

    • Match to end of range

    • Closest match to start of range

    • Closest match to end of range

  • Ignore time components (use dates only) :如果选中,将丢弃时间查询的时间部分,仅在服务器请求中使用日期部分。

你也可以 复选框 Use Specific WMS-T Reference Time 从层的功能中报告的时间中挑选。对于公开一组不连续的Date Time实例(而不是一系列日期)的服务器来说很方便。

22.1.7.3. QGIS服务器属性

除了栅格层之外 properties ,使用QGIS服务器发布WMS/WMTS图层时将显示以下选项:

  • WMS Print layer :允许设置应用于打印的替代WMS层(在 GetProjectSettings 答复)。方便一般不适合打印的WMTS层。

  • 复选框 Publish WMS/WMTS data source uri :允许Web客户端直接获取WMS/WMTS数据

  • 复选框 Advertise as background layer

../../../_images/server_properties.png

图 22.5 WMS/WMTS图层的QGIS服务器属性

22.1.8. 在内容列表和布局中显示WMS图例图形

QGIS WMS数据提供程序能够在内容列表的层列表和打印布局中显示图例图形。仅当WMS服务器具有GetLegendGraphic功能并且层指定了getCapability url时,才会显示WMS图例,因此您还必须为层选择样式。

如果有LegendGraphic可用,它会显示在层的下方。它很小,你必须点击它才能以真实的维度打开它(由于QgsLegendInterface的架构限制)。单击层的图例将打开一个以全分辨率显示图例的框架。

在打印布局中,图例将以其原始(下载)尺寸进行整合。可在以下项的项目属性中设置图例图形的分辨率 Legend ► WMS LegendGraphic 以符合您的打印要求。

图例将根据您的当前比例显示上下文信息。仅当WMS服务器具有GetLegendGraphic功能并且层指定了getCapability url时,才会显示WMS图例,因此您必须选择样式。

22.2. WCS客户端

WCS Web Coverage Service(WCS)提供对表单中的栅格数据的访问,这些表单对于客户端渲染、作为科学模型的输入以及其他客户端都很有用。可以将WCS与WFS和WMS进行比较。作为WMS和WFS服务实例,WCS允许客户端根据空间约束和其他查询条件选择服务器的部分信息。

QGIS有一个原生的WCS提供程序,同时支持1.0和1.1(这两个版本有很大的不同),但目前它更喜欢1.0,因为1.1有很多问题(即,每个服务器以不同的方式实现它,具有不同的特殊性)。

本地WCS提供程序处理所有网络请求并使用所有标准QGIS网络设置(尤其是代理)。如果服务器提供时间域,则还可以选择高速缓存模式(“总是高速缓存”、“首选高速缓存”、“首选网络”、“总是网络”),并且提供商还支持时间位置的选择。

警告

进入 usernamepasswordAuthentication 选项卡将在连接配置中保留不受保护的凭据。那些 credentials will be visible 例如,如果您与某人共享了项目文件。因此,建议将凭据保存在 Authentication configuration 取而代之的是 (configurations 选项卡)。看见 认证系统 了解更多详细信息。

22.3. WFS和WFS-T客户端

在QGIS中,WFS图层的行为与任何其他矢量图层非常相似。您可以识别和选择要素,并查看属性表。QGIS支持WFS 1.0.0、1.1.0、2.0和OGC API-Feature(OAPIF),包括编辑(通过WFS-T)。QGIS还支持后台下载和渐进式渲染、下载功能的磁盘缓存和版本自动检测。

实施的服务器层 OGC API - Features - Part 4: Create, Replace, Update and Delete 可以转换为编辑模式,以允许创建、修改和删除要素。请注意,每个创建/修改/删除的功能都需要专用的网络请求,因此在同时修改数百个或更多功能的情况下,性能可能会受到影响。

通常,添加WFS图层与使用WMS的过程非常相似。没有定义默认服务器,因此您必须添加自己的服务器。您可以使用WFS服务器 MetaSearch plugin 或者你最喜欢的网络搜索引擎。有许多带有公共URL的列表,其中一些得到了维护,另一些则没有。

Loading a WFS Layer

作为示例,我们使用Gateway Geomatics WFS服务器并显示一个层。

https://demo.gatewaygeomatics.com/cgi-bin/wfs_gateway?REQUEST=GetCapabilities&VERSION=1.0.0&SERVICE=WFS

要能够加载WFS层,请首先创建到WFS服务器的连接:

  1. 打开 Data Source Manager 对话框中按下 DataSourceManager Open Data Source Manager 按钮

  2. 启用 AddWfsLayer WFS / OGC API - Features 选项卡

  3. 点击 New... 要打开 Create a New WFS Connection 对话框

  4. 请输入 Gateway Geomatics AS名称

  5. 输入URL(请参见上文)

    ../../../_images/add_connection_wfs.png

    图 22.6 创建到WFS服务器的连接

    备注

    对于OGC API-Feature(OAPIF),要提供的URL应为 landing page 即可以从其导航到所有可用服务端点的主页。

  6. 在WFS设置对话框中,您可以:

    • 指明服务器的WFS版本。如果未知,请按 Detect 按钮自动检索它。

    • 定义 maximum number of features 在单个GetFetFeature请求中检索。如果为空,则不设置任何限制。

    • 并根据WFS版本指示是否执行以下操作:

      • Enable feature paging 和指定要检索的最大要素数 Page size 。如果未定义限制,则应用服务器默认设置。

      • 强行进入 Ignore axis orientation (WFS 1.1/WFS 2.0)

      • Invert axis orientation

      • Use GML2 encoding for transactions

    警告

    进入 usernamepasswordAuthentication 选项卡将在连接配置中保留不受保护的凭据。那些 credentials will be visible 例如,如果您与某人共享了项目文件。因此,建议将凭据保存在 Authentication configuration 取而代之的是 (Configurations 选项卡)。看见 认证系统 了解更多详细信息。

  7. 新闻发布会 OK 以创建连接。

请注意,您在首选项中设置的任何代理设置也会被识别。

现在我们准备好从上面的连接加载WFS层。

  1. 从以下位置选择“Gateway Geomatics” Server Connections 下拉列表。

  2. 单击 Connect

  3. 选择 Parks 列表中的层

  4. 您还可以选择是否执行以下操作:

    • 未选中 Use title for layer name ,显示在服务器上定义的层标题 Layers 面板而不是其 Name

    • 复选框 Only request features overlapping the view extent

    • Change... 该图层的CRS到服务支持的任何其他CRS

    • 或者构建查询以指定要从服务中检索的特定要素:双击该图层所在的行以打开 SQL Query Composer 对话框中。该对话框提供了一些小部件来编写高级SQL查询,这些小部件依赖于服务的可用表和列、排序和筛选以及一系列SQL函数、空间谓词和运算符。

      生成的查询将在验证后显示在 SQL 列中的 WFS / OGC API - Features 表,则过滤后的层将显示 指示器过滤器 中它旁边的图标 Layers 面板。因此,可以随时调整查询。

  5. 单击 Add 要将该层添加到地图,请执行以下操作。

../../../_images/connection_wfs.png

图 22.7 添加WFS图层

您会注意到,下载进度显示在QGIS主窗口的左下角。加载图层后,可以识别和选择几个要素并查看属性表。