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中的函数将有真正的好处。