现行的web地图是如何处理的

Web地图服务规范(WMS、WMTS、TMS) 1.概况 Web地图服务规范包括WMS(网络地图服务)、WMTS(网络地图瓦片服务)、TMS(瓦片地图服务)等。WMTS服务和WMS服务都是由开发地理信息联盟(OGC)指定。其不同在于,WMTS服务采用缓存技术能够缓解WebGis服务器端数据处理的压力。TMS服务由开源空间信息基金会(OSGEO)指定

Web地图服务规范(WMS、WMTS、TMS)

1.概况

Web地图服务规范包括WMS(网络地图服务)、WMTS(网络地图瓦片服务)、TMS(瓦片地图服务)等。WMTS服务和WMS服务都是由开发地理信息联盟(OGC)指定。其不同在于,WMTS服务采用缓存技术能够缓解WebGis服务器端数据处理的压力。TMS服务由开源空间信息基金会(OSGEO)指定。TMS与WMTS服务的差异主要体现在:

  • TMS是纯Restful,而WMTS可以有KVP、SOAP和Restful三种。
  • TMS瓦片是正方形的,而WMTS是矩形的(正方形是特殊的矩形)
  • 在纵轴方向上方向相反,TMS瓦片以左下角为原点,WMTS瓦片以左上角为原点。
  • WMTS中对应的不同比例尺瓦片可以尺寸不同。

在地图服务中,为了处理方便,瓦片均采用正方形,一般像素为256(居多)或者512。

这里需要说明一下,256的意思是对应瓦片(图片)是由横方向有256行像素点,纵方向256个像素,也就是说,对于256的一个瓦片,总共有256^2=65536个像素。由此也可以算出一个瓦片的大小,一个像素有RBG三个颜色通道组成,每个通道范围为0~255(即三个字节),也就是说一个像素为9个字节,那么一个瓦片的大小是589,824B。不过jpg,png等都采用了压缩技术,实际大小要小很多。

2. 基本知识

本次记录不是简单的介绍一下这三个协议,而是要要对地址做一下解析说明,这样可以更好的理解Web服务协议。为了更好的说明,这里需要引入几个知识点,以EPSG:4326网格集为例。

2.1 地球平面化

地球是一个球体,如果把其展开,可以近似看成一个矩形。宽近似为周长的一半。所以就有了如下图:

在这里插入图片描述

2.2 瓦片形成

为了满足TMS协议,瓦片采用正方形存放,所以,在切瓦片之前应该在中间先切一刀,保证基础为正方向。

在这里插入图片描述

此时沿着每个区域横方向和总方向各切一刀,这样就出现8块图片,也就是0级别有8块瓦片。

在这里插入图片描述

按照如此方式,每增加一个层级,每个瓦片就被分成4分。所以,层级1有8*4=32块瓦片。

在这里插入图片描述

而在实际tif切瓦片的过程中,他是从最高一级往下切。比如一个tif文件可切成0-10级瓦片,他会先切10级瓦片,然后通过融合的方式把4×4的瓦片合并为一张瓦片,依次类推。

3. Web地图服务地址解析

地图服务提供的服务地址分别为:

  • WMS:http://ip:port/geo/service/wms?layer={layername}&TILED=true

  • WMTS:http://ip:port/geo/service/wmts?layer={layername}

  • TMS:http://ip:port/geo/service/tms/1.0.0/{layername}@EPSG:4326@png

然而,如果要获取一个瓦片,需要如下的地址:

  • WMS:http://ip:port/geo/service/wms?layer={layname}&TILED=true&version=1.3.0&request=GetMap&format=image/png&transparent=true&width=256&heigh=256&CRS=EPSG:4326&styles=&bbox=minx,miny,maxx,maxy

  • WMTS:http://ip:port/geo/service/wmts?layer={layname}&tilematrixset=EPSG:4326&service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix=EPSG:4326:2&TileCol=5&TileRow=1

  • TMS:http://ip:port/geo/service/tms/1.0.0/{layname}@EPSG:4326@jpeg/2/6/1.jpeg

我们知道,一个瓦片是通过层级范围、瓦片X坐标和瓦片Y坐标,对于WMTS和TMS,我们很容易找到这三个要素,然而WMS就没有那么容易了。下面就做一一分析。

3.1 WMTS

通过上的地址我们分析到,WMTS服务三要素体现在TileMatrix=EPSG:4326:2&TileCol=5&TileRow=1。其中层级范围为2(EPSG:4326:2),瓦片X坐标为TileCol=5,瓦片Y坐标为TileRow=1。现在我们取层级范围为3,第三列第六行的瓦片,那么参数应该就是(注意瓦片编号从0开始):

TileMatrix=EPSG:4326:3&TileCol=2&TileRow=5

3.2 TMS

通过上的地址我们分析到,TMS服务三要素体现在/2/6/1.jpeg,其中2为层级范围,6为瓦片X坐标,1为瓦片Y坐标。由上面说到,TMS的原点在左下角,所以如果取到和上面WMTS一样的瓦片,地址应该为:

/3/2/2.jpeg

那么WMTS和TMS的关系是什么呢?

层及范围和X坐标(也就是行号一致),Y坐标是,这两个的Y坐标相加等于2^(层级范围)-1,上面层级范围为3,所以两者相加等于7即可。

3.3 WMS

通过上面观察我们发现这个地址中并没有这三个要素,但是我们发现有个参数是bbox.这里传入了瓦片的左下角和右上角的坐标。那么通过这两个坐标就可以计算出三要素。需要注意的事,参数如果传入有偏差,将不会反返回正确结果。那么我们现在在算一下上面相同的瓦片的坐标该是多少呢?

  • 首先,层级范围为3,应该有16列,8行瓦片。

在这里插入图片描述

  • 那么我们现在计算黄色瓦片的左下角和右上角的坐标。对于X轴,总共有16个瓦片,长度为360°,所以每个瓦片的角度为22.5°。
    • 对于X轴方向:最左边的坐标为-180°,所以黄色块的左下角X坐标为-180+22.5*2=-135;右上角X坐标为加一个瓦片的度数,为-112.5。
    • 对于Y轴方向:最下边的坐标为-90度,所以黄色块的左下角Y坐标为-90+22.25*2=-45.5;右上角Y坐标为加一个瓦片的度数,为-56.25。

所以通过上面分析,WMS的参数中的Bbox参数应该为:

bbox=-135,-67.5,-112.5,-56.25
知秋君
上一篇 2024-07-05 07:36
下一篇 2024-07-05 07:02

相关推荐