OGC标准介绍 19
目录
I. WMTS-切片地图Web服务
· 概述
WMTS(OpenGIS® Web Map Tile Service)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问切片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。
· WMTS的原理和操作
WMTS的切片坐标系统和其组织方式可参考图 17:
图 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个操作:
- GetCapabilities(获取服务的元信息)
- GetTile(获取切片)
- GetFeatureInfo(可选,获取点选的要素信息)
可以看到这些操作和WMS的操作非常的异曲同工。
· GetCapabilities操作
1. KVP格式请求
GetCapabilities操作需要以下的参数:
参数
是否必须
默认值
SERVICE
是
WMTS
REQUEST=GetCapabilities
是
以下是一个WMTS使用KVP格式的GetCapabilities操作示例:
http://www.maps.bob/maps.cgi?
service=WMTS&
request=GetCapabilities
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
· 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
· 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
[1] 标准文档如是说,但我觉得这个地方应该取一负值。