WMTS-切片地图 Web 服务 ============================= 概述 ------ WMTS(OpenGIS® Web Map Tile Service)当前版本是 1.0.0。 WMTS 标准定义了一些操作,这些操作允许用户访问切片地图。 WMTS 可能是 OGC 首个支持 RESTful 访问的服务标准。 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 的操作非常的异曲同工。 GetCapabilities 操作 ---------------------- 1. KVP 格式请求 ~~~~~~~~~~~~~~~ ``GetCapabilities`` 操作需要以下的参数: .. csv-table:: Frozen Delights! :header: "参数", "是否必须", "默认值" ``SERVICE`` , 是 , WMTS ``REQUEST=GetCapabilities`` , 是 , 以下是一个 WMTS 使用 KVP 格式的 ``GetCapabilities`` 操作示例: :: http://www.maps.bob/maps.cgi? service=WMTS& request=GetCapabilities 标准文档如是说,但我视得这个地方应该取一负值。 .. note:: 上面这句话原文有,不知道是指什么。 2.SOAP格式请求 ~~~~~~~~~~~~~~~~ 以下是一个WMTS使用SOAP格式的GetCapabilities操作示例: :: 1.0.0Version> AcceptVersions> 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操作示例: :: etopo2Layer>