WMS-C
WMS-C全称是Web Mapping Service - Cached,对它完整的定义来源于OSGeo Wiki,2006年在FOSS4G会议上提出讨论,目的在于提供一种预先缓存数据的方法,以提升地图请求的速度,自始至终该标准都没有写入OGC之中。WMSC通过bbox和resolutions去决定请求的地图层级,为了更加直观的请求地图瓦片,一些软件做了一些改进,例如WorldWind在请求中使用level/x/y三个参数,直观明了。典型的基于WMSC的实现是TileCache,另外一个关于WMSC的参考:http://wiki.osgeo.org/wiki /WMS_Tiling_Client_Recommendation
wmts
WmtsMTS-切片地图Web服务
· 概述
WMTS(OpenGIS® Web Map Tile Service)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问切片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。
· 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的操作非常的异曲同工。
TMS
TMS是tile map service的缩写,是一种瓦片地图服务,也称之为WMTS(web map tile service),具体的标准可以见OGC网站。TMS的算法很简单,就是把投影后的世界地图按照层级进行四叉树(待验证)切割,切割后的瓦片数量随层级呈金字塔型,数量和层级关系如下表所示:
0 | 1 tile covers whole world | 1 tile |
1 | 2 × 2 tiles | 4 tiles |
2 | 4 × 4 tiles | 16 tiles |
n | 2n × 2n tiles | 22n tiles |
12 | 4096 x 4096 tiles | 16.777.216 |
16 | Maximum zoom for OpenCycleMap (mostly) | 232 = 4.294.967.296 tiles |
17 | Maximum zoom for Osmarender layer | 17.179.869.184 tiles |
18 | Maximum zoom for Mapnik layer | 68.719.476.736 tiles |