May 25, 2023 No Comments Web地图服务规范(WMS、WMTS、TMS)简析 ## 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 地球平面化 地球是一个球体,如果把其展开,可以近似看成一个矩形。宽近似为周长的一半。所以就有了如下图: ![](https://www.91vps.cc/usr/uploads/2023/05/1164029907.png) ### 2.2 瓦片形成 为了满足TMS协议,瓦片采用正方形存放,所以,在切瓦片之前应该在中间先切一刀,保证基础为正方向。 ![](https://www.91vps.cc/usr/uploads/2023/05/1673849148.png) 此时沿着每个区域横方向和总方向各切一刀,这样就出现8块图片,也就是0级别有8块瓦片。 ![](https://www.91vps.cc/usr/uploads/2023/05/3434471401.png) 按照如此方式,每增加一个层级,每个瓦片就被分成4分。所以,层级1有8\*4=32块瓦片。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415170714982.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29ZaW5IZVpoaUd1YW5n,size_16,color_FFFFFF,t_70#pic_center) 而在实际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开始**): ```html TileMatrix=EPSG:4326:3&TileCol=2&TileRow=5 ``` ### 3.2 TMS 通过上的地址我们分析到,TMS服务三要素体现在`/2/6/1.jpeg`,其中2为层级范围,6为瓦片X坐标,1为瓦片Y坐标。由上面说到,TMS的原点在左下角,所以如果取到和上面WMTS一样的瓦片,地址应该为: ```html /3/2/2.jpeg ``` > 那么WMTS和TMS的关系是什么呢? > > 层及范围和X坐标(也就是行号一致),Y坐标是,这两个的Y坐标相加等于2^(层级范围)-1,上面层级范围为3,所以两者相加等于7即可。 ### 3.3 WMS 通过上面观察我们发现这个地址中并没有这三个要素,但是我们发现有个参数是bbox.这里传入了瓦片的左下角和右上角的坐标。那么通过这两个坐标就可以计算出三要素。需要注意的事,参数如果传入有偏差,将不会反返回正确结果。那么我们现在在算一下上面相同的瓦片的坐标该是多少呢? + 首先,层级范围为3,应该有16列,8行瓦片。 ![](https://www.91vps.cc/usr/uploads/2023/05/2580470365.png) + 那么我们现在计算黄色瓦片的左下角和右上角的坐标。对于X轴,总共有16个瓦片,长度为360°,所以每个瓦片的角度为22.5°。 + **对于X轴方向**:最左边的坐标为-180°,所以黄色块的左下角X坐标为-180+22.5\*2=-135;右上角X坐标为加一个瓦片的度数,为-112.5。 + **对于Y轴方向**:最下边的坐标为-90度,所以黄色块的左下角Y坐标为-90+11.25\*2=-67.5;右上角Y坐标为加一个瓦片的度数,为-56.25。 所以通过上面分析,WMS的参数中的Bbox参数应该为: ```html bbox=-135,-67.5,-112.5,-56.25 ``` 最后更新于 2023-05-25 18:03:16 并被添加「」标签,已有 1486 位童鞋阅读过。 本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭