Wmts Xyz Tms

default

概要

WMTS、TMS、XYZ 三种瓦片系统,都是用于地图的瓦片系统,但是它们之间有什么区别呢?

特性 WMTS XYZ TMS
标准组织 OGC 官方标准 Google 事实标准 OSGeo 社区标准
URL 复杂度 复杂(KVP)或中等(REST) 简单 简单
坐标系支持 多种坐标系 仅 Web Mercator 多种坐标系
原点位置 可配置 左上角(西北) 左下角(西南)
y 轴方向 可配置 向下 向上
业界支持 广泛(企业级) 非常广泛 较广泛(GIS领域)
额外功能 时间维度、样式、版本控制 有限
性能 一般(URL长) 优秀 优秀

Url 格式

WMTS

restful: http://geoserver.example.com/geoserver/gwc/service/wmts/rest/{layer}/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format={format}

restful 示例: http://geoserver.example.com/geoserver/gwc/service/wmts/rest/topp:states/default/EPSG:4326/EPSG:4326:5/10/20?format=image/png

key-value(太冗长,不推荐): http://server/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER={layer}&STYLE={style}&FORMAT={format}&TILEMATRIXSET={TileMatrixSet}&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}

XYZ

http://server/layer/{z}/{x}/{y}.png

TMS

http://server/{z}/{x}/{y}.png

但是,对于传统的 TMS,这里的 y 和 XYZ 的方向是反的(转换公式见【原点和轴方向】)。新版本的 TMS 为了和 XYZ 保持一致,很多切换了 y 轴方向。

原点和轴方向

在 GeoServer 中,WMTS 默认配置与 XYZ 格式保持一致,而不是传统的 GIS 左下角原点。

原点: (0,0) = 左上角(西北角)

x 方向: 从左到右递增

y 方向: 从上到下递增(与屏幕坐标一致)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// GeoServer WMTS (默认)
原点: 左上角 (-180, 90)  // EPSG:4326
y=0: 最北边
y递增: 向南移动

// 传统 TMS
原点: 左下角 (-180, -90)  // EPSG:4326
y=0: 最南边  
y递增: 向北移动

// 转换公式
tms_y = (2^z - 1) - wmts_y

前端加载

WMTS、XYZ、TMS 需要分别用不同的组件进行加载。

WMTS 当作 XYZ 使用

GeoServer 默认的 WMTS 可以用 XYZ 来加载。

原 WMTS Url:

http://server/geoserver/gwc/service/wmts/rest/{layer}/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.{format}

转换 XYZ Url:

http://localhost:8080/geoserver/gwc/service/wmts/rest/test:roads/default/EPSG:900913/EPSG:900913:{z}/{y}/{x}.png

当 EPSG 为 4326 时,则需要进行缩放处理,不能直接当作 XYZ 加载。

Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……