MS RFC 30:支持WMS 1.3.0

日期

2007/06/15

作者

丹尼尔·莫里塞特

联系

在mapgears.com的dmorissette

作者

叶旺沃森阿塞法

联系

位于dmsolutions.ca的Yassefa

最后编辑

2009/02/11

状态

采用

版本

MAPServer 5.4

概述

此RFC记录了将MapServer的OGC WMS支持升级到规范1.3.0版本所需的更改。

MapServer已经包含了支持多个WMS版本的机制(并且已经支持WMS版本1.0.0、1.1.0和1.1.1),因此理论上,这种升级应该是简单的,不需要RFC。不幸的是,WMS 1.3.0包含一些棘手的变化,虽然它们不是完全向后兼容的,但很可能会使WMS用户的生活变得悲惨。

此RFC主要用于记录这些更改以及MapServer处理它们的方式。

坐标系和轴方向

WMS 1.3.0引入的主要问题是它处理多个SRS轴顺序的方式发生了变化。这对WMS请求和功能文档中指定bbox的方式以及ConnectionType WMS代码如何与远程服务器交互有影响。

在早期版本的WMS中,对于任何SRS,第一个轴是东距(x或lon),第二个轴是北距(y或lat)。从WMS 1.3.0开始,一些SRS(如非常流行的EPSG:4326)的轴反转,轴顺序变为LON、LAT而不是LAT、LON。WMS 1.3.0中的这一更改是为了与EPSG数据库中的定义保持一致(这是使WMS成为ISO规范的一项要求)。

这一改变肯定会混淆简单的客户机,这些客户机以前用相同的方式处理所有SRS。MAPServer和PROJ需要扩展以携带所有EPSG SRS代码的轴顺序信息,并使用正确的轴顺序对其进行处理。

WMS 1.3.0还添加了新的CRS代码,如CRS:XXXX和Auto2:XXXX,这些代码需要MapServer支持。注意:规范支持两种类型的层CRS标识符:“label”和“url”标识符。目的是在这一点上支持标签类型CRS。

计划支持的CRS列表如下:

  • CRS:84(WGS 84经度纬度)

  • CRS:83(最低经度83纬度)

  • CRS:27(经度纬度NAD27)。

  • 自动2:42001自动2:42002自动2:42003自动2:42004自动2:42005

CRS:1(像素坐标)目前不受支持(有一张票据讨论此问题https://github.com/MapServer/MapServer/issues/485)

epsg codes:当广告(例如层elemnt的boundingbox)或在请求(例如getmap/getfeatureinfo)中使用crs元素时,使用epsg code>=4000和<5000的元素将被假定具有反向轴。

所有上述工作都需要以允许继续支持较旧版本的WMS规范(1.0.0到1.1.1)的方式完成,并且对现有的WMS服务影响最小。

反向轴的实现将与已经为WCS1.1支持(https://mapserver.org/development/rfc/ms-rfc-41.html)所做的工作密切相关

WMS与SLD

所有对SLD支持的引用都已从WMS 1.3.0规范中删除。它已被两种规格所取代:

  • Web地图服务的样式化层描述符配置文件

  • 符号编码实现规范

样式化的层描述符配置文件允许:

  • 扩展WMS以支持其他操作(DescribeLayer、GetLegendgraphic)

  • 与支持getmap的sld相关的其他参数

  • 宣传SLD支持。

本规范将在当前实现中得到支持。请注意,第一阶段可能不支持GetStyles操作(在WMS 1.1.1中可用)

符号编码实现基本上代表了不同符号的定义。我们需要升级当前的SLD支持来支持这个规范。

HTTP Post支持

HTTP Post支持是可选的,目前由MapServer WMS 1.1.1支持。WMS 1.3.0定义如果支持POST,则请求消息将被构造为XML文档。虽然这是高度可描述的,但是WMS 1.3.0的第一个实现可能不支持XML POST请求。

OCG符合性测试

OGC合规性和互操作性测试倡议(CITE)http://cite.opengeospatial.org/test_engine/wms/1.3.0/提供自动测试来验证实施。短期打算将此服务用作第一个验证工具。长期目标是让MapServer WMS 1.3.0完全兼容。

其他音符

  • getCapabilities仅公布文本/xml格式。在请求期间,我们不分析可选的格式参数。它始终设置为文本/XML

MapScript含义

一个也没有。这只影响WMS服务器接口和WMS连接类型。

受影响的文件

mapwms.c
mapwmslayer.c
mapfile.c
mapows.c/h
mapogcsld.c

向后兼容性问题

  • 轴顺序处理方式的改变可能会导致很多混乱。

臭虫识别码

投票历史

与+1一起从:tomk、woodbridge、assefa、morissette通过

审查期间的问题/意见

  • 问:libxml2能否用于生成XML响应以继续在mapowscommon.c中启动的工作?

    答:在实现过程中,我会记住libxml2,但我不打算重构并冒险破坏任何代码,将其转换为libxml2作为升级的一部分。

    由于WMS 1.3.0没有实现OWS common,因此它不会从已经使用libxml2的任何代码中受益。实际上,它将主要重用已经过良好测试和工作的现有基于printf的代码。我认为,为WMS切换到libxml2的正确时机是,它将支持OWS common,然后通过重用mapowscommon.c中的函数将有真正的好处。