WMTS XML能力描述有类似下面的内容
<TileMatrix>
<ows:Identifier>EPSG:4326:1</ows:Identifier>
<ScaleDenominator>1.3977056600717944E8</ScaleDenominator>
<TopLeftCorner>90.0 -180.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
Identifier:这个瓦片阵列的 ID
TopLeftCorner:这个瓦片的左上角位置,此处是经纬度表达(基于 EPSG:4326 坐标系)
TileWidth、TileHeight:瓦片的像素长宽,即 256 × 256 像素
MatrixWidth、MatrixHeight:代表这一级瓦片横向纵向跨度有多少个瓦片
ScaleDenominator:比例尺分母(字面翻译,其值是一个像素代表的实际距离与像素尺寸(习惯以0.28mm标定)的比值)
分辨率Resolution是指一个像素所代表的实际地面距离,单位米。WMTS 1.0.0是以像素大小0.28mm来标定的,即每英寸像素个数为0.00254/0.00028=90.71428571428571个(OGC WMTS规范中的数值)。
瓦片图片的分辨率怎么计算,以4326 切片第 0 级瓦片(256x256像素)阵列有 1 行 2 列为例,一个瓦片边长等同地球赤道的一半。地球周长以400750170m计算
一个像素代表的实际长度=(400750170/2)/256=782715.17578125m
下面可以计算
ScaleDenominator=782715.17578125/0.00028=2795411342.075893
有了ScaleDenominator,对于任意实际地表长度,我们可以计算其在屏幕上的长度。如果再已知像素大小(已知dpi),那么地表实际坐标(x, y)就可以计算出像素坐标了(当然,原点和轴向要定义好,TopLeftCorner正好用得到,定义原点了)
下面总结根据ScaleDenominator计算分辨率的公式
Resolution=(1inch/dpi)×0.0254m/inch ×ScaleDenominator
= (0.0254*ScaleDenominator)/dpi
设定x轴由西向东,原点坐标(x0, y0),瓦片大小tileSize,那么对于实际坐标(x, y),计算其在屏幕上的列坐标为
col=floor((x-x0)/(tileSzie*Resolution))
可见,知道了ScaleDenominator和显示设备的dpi就可以计算某个坐标点的屏幕坐标了。