WMTS服务中TileMatrix 与 ScaleDenominator的理解

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就可以计算某个坐标点的屏幕坐标了。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值