2.10. WMTS-切片地图 Web 服务

2.10.1. 概述

WMTS(OpenGIS® Web Map Tile Service)当前版本是 1.0.0。 WMTS 标准定义了一些操作,这些操作允许用户访问切片地图。 WMTS 可能是 OGC 首个支持 RESTful 访问的服务标准。

2.10.2. WMTS 的原理和操作

WMTS 的切片坐标系统和其组织方式可参考图 23:

image0

图 23 WMTS 的坐标系统和组织方式

如果知道一个请求的边界范围,可以根据以下的算法获取切片的序号:

// 计算切片序号范围
epsilon = 1e-6[1] //一个不影响坐标精度的小数值
tileMinCol = floor((bBoxMinX - tileMatrixMinX) / tileSpanX + epsilon)
tileMaxCol = floor((bBoxMaxX - tileMatrixMinX) / tileSpanX - epsilon)
tileMinRow = floor((tileMatrixMaxY - bBoxMaxY) / tileSpanY + epsilon)
tileMaxRow = floor((tileMatrixMaxY - bBoxMinY) / tileSpanY - epsilon)
// 避免超出范围
if (tileMinCol < 0) tileMinCol = 0
if (tileMaxCol >= matrixWidth) tileMaxCol = matrixWidth-1
if (tileMinRow < 0) tileMinRow = 0
if (tileMaxRow >= matrixHeight) tileMaxRow = matrixHeight-1

在一个 WMTS 服务中包括以下 3 个操作:

  1. GetCapabilities (获取服务的元信息)

  2. GetTile (获取切片)

  3. GetFeatureInfo (可选,获取点选的要素信息)

可以看到这些操作和 WMS 的操作非常的异曲同工。

2.10.3. GetCapabilities 操作

1. KVP 格式请求

GetCapabilities 操作需要以下的参数:

Table 2.11 Frozen Delights!

参数

是否必须

默认值

SERVICE

WMTS

REQUEST=GetCapabilities

以下是一个 WMTS 使用 KVP 格式的 GetCapabilities 操作示例:

http://www.maps.bob/maps.cgi?
service=WMTS&
request=GetCapabilities

标准文档如是说,但我视得这个地方应该取一负值。

Note

上面这句话原文有,不知道是指什么。

2.SOAP格式请求

以下是一个WMTS使用SOAP格式的GetCapabilities操作示例:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<GetCapabilities service="WMTS"
xmlns="http://www.opengis.net/ows/1.1">
<AcceptVersions>
<Version>1.0.0Version>
AcceptVersions>
<AcceptFormats>
<OutputFormat>application/xmlOutputFormat>
AcceptFormats>
GetCapabilities>
soap:Body>
soap:Envelope>

3.RESTful格式请求

GetCapabilities返回的就是服务的元信息(ServiceMetadata), 因此 RESTful 格式请求就是一个指向元信息的资源地址, 下面是一个 WMTS 使用 RESTful 格式的GetCapabilities操作示例:

http://www.maps.bob/1.0.0/WMTSCapabilities.xml

2.10.4. GetTile 操作

1. KVP 格式请求

GetTile 操作需要以下的参数:

参数

是否必须

默认值

SERVICE

WMTS

REQUEST=GetTile

VERSION

1.0.0

LAYER

STYLE

FORMAT

TILEMATRIXSET

TILEMATRIX

TILEROW

TILECOL

Sample dimensions 参数

以下是一个WMTS使用KVP格式的GetTile操作示例:

http://www.maps.bob/maps.cgi?
service=WMTS&
request=GetTile&
version=1.0.0&
layer=etopo2&
style=default&
format=image/png&
TileMatrixSet=WholeWorld_CRS_84&
TileMatrix=10m&
TileRow=1&
TileCol=3

2.SOAP格式请求

以下是一个WMTS使用SOAP格式的GetTile操作示例:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<GetTile service="WMTS" version="1.0.0"
xmlns="http://www.opengis.net/wmts/1.0">
<Layer>etopo2Layer>
<Style>defaultStyle>
<Format>image/pngFormat>
<TileMatrixSet> WholeWorld_CRS_84TileMatrixSet>
<TileMatrix>10mTileMatrix>
<TileRow>1TileRow>
<TileCol>3TileCol>
GetTile>
soap:Body>
soap:Envelope>

3.RESTful格式请求

以下是一个WMTS使用RESTful格式的GetTile操作示例:

http://www.maps.bob/etopo2/default/WholeWorld_CRS_84/10m/1/3.png

2.10.5. GetFeatureInfo 操作

1. KVP 格式请求

GetFeatureInfo 操作需要以下的参数:

参数

是否必须

默认值

SERVICE

WMTS

REQUEST=GetFeatureInfo

VERSION

1.0.0

GetTile 请求参数

I

J

INFOFORMAT

以下是一个WMTS使用KVP格式的GetFeatureInfo操作示例:

http://www.maps.bob/maps.cgi?
service=WMTS&
request=GetFeatureInfo&
version=1.0.0&
layer=coastlines&
style=default&
format=image/png&
TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3&
J=86&I=132&
InfoFormat=application/gml+xml; version=3.1

2.SOAP格式请求

以下是一个WMTS使用SOAP格式的GetFeatureInfo操作示例:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<GetFeatureInfo service="WMTS" version="1.0.0"
xmlns="http://www.opengis.net/wmts/1.0">
<GetTile service="WMTS" version="1.0.0"
xmlns="http://www.opengis.net/wmts/1.0">
<Layer>etopo2Layer>
<Style>defaultStyle>
<Format>image/pngFormat>
<TileMatrixSet> WholeWorld_CRS_84TileMatrixSet>
<TileMatrix>10mTileMatrix>
<TileRow>1TileRow>
<TileCol>3TileCol>
GetTile>
<J>86J>
<I>132I>
<InfoFormat>application/gml+xml; version=3.1InfoFormat>
GetFeatureInfo>
soap:Body>
soap:Envelope>

3.RESTful格式请求

以下是一个WMTS使用RESTful格式的GetFeatureInfo操作示例:

http://www.maps.bob/etopo2/ default/WholeWorld_CRS_84/10m/1/3/86/132.xml