Web地图服务规范之栅格瓦片地图服务:WMTS(WebMapTileService,网络地图瓦片服务)、TMS(TileMapService,瓦片地图服务)和XYZ

这篇具有很好参考价值的文章主要介绍了Web地图服务规范之栅格瓦片地图服务:WMTS(WebMapTileService,网络地图瓦片服务)、TMS(TileMapService,瓦片地图服务)和XYZ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是栅格瓦片地图服务

这四种地图服务都是通过网络传输的栅格瓦片地图服务,这里有三个名词需要解释:

1、什么是栅格?

遥感影像、Dem等,就是图片。

2、什么是地图服务?

实际上,地图服务就是一个url,且这个url满足一定条件:基于这个url拼上固定参数或路由地址可以获取地图服务的元数据信息(返回结果是xml或者json);也能获得栅格瓦片地图服务的瓦片,其实就是图片。
以天地图的wmts服务为例,一般我们使用时只需要“http://t0.tianditu.gov.cn/vec_c/wmts?tk=您的密钥”这个url即可,但是通过这个url拼上固定参数即可获得这个地图服务的元数据信息:http://t0.tianditu.gov.cn/img_w/wmts?request=GetCapabilities&service=wmts,也可以获得地图瓦片:http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}
为什么查询元数据信息的时候要拼上“request=GetCapabilities&service=wmts”参数而获取地图瓦片的时候要拼上”SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=您的密钥“参数,这是OGC的规定(关于OGC,后文会有详细解释),其实就是大家约定俗称的一种规则,所有的wmts服务都要满足:查元数据信息的时候就使用”request=GetCapabilities&service=wmts“,获取地图瓦片的时候就使用”SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}“,当然你也可以使用不同的参数名但是实现相同的功能,但是地图引擎时加载不了的(别人实现的是OGC的规则,不是你自己定义的规则),除非你自己改源码。
同理,xyz、tms也是一样的。

二、什么是瓦片?为什么使用栅格瓦片地图服务?

瓦片这个词其实源自于遥感影像处理或图像处理的瓦片金字塔,熟悉Arcgis的人应该会知道,当使用Arcgis打开遥感影像数据时,软件会询问你是否构建影像金字塔,那为什么要构建影像金字塔呢?要回答这个问题,首先要理解什么是影像金字塔。影像金字塔实际上就是将影像数据分层分块,比如我将一个1tb的影像数据分为5层,第一层把原始数据分成一块,这里的块就是瓦片,其实就是图片,只用一张图片表示整个影像数据,但是这张图片的分辨率远低于原始数据;第二层把原始数据分为4块,用四张图片表示整个影像数据,这4张图片的分辨率高于第一层的分辨率但是还是低于原始数据的分辨率;第二层把原始数据分为16块,用16张图片表示整个影像数据,这16张图片的分辨率高于第2层的分辨率但是还是低于原始数据的分辨率…依次类推,直至到第五层,此时将原始影像分为1024块,所有块组合到一起表示整个影像数据,此时这些块的分辨率和原始影像分辨率一致。
zxy瓦片和栅格瓦片之间的区别,GIS原理,数据可视化,前端金字塔技术,预先在服务器上生成瓦片金字塔,可以轻松的显示整个影像数据。(这是使用栅格瓦片地图服务的原因之一)。
这种分层分块思想不仅仅用于栅格瓦片地图服务,在mapbox的矢量瓦片、cesium的terrain服务和3dtiles服务、unreal和unity的HLOD等等,都使用了这种思想。
其实在栅格瓦片地图服务(tms和wmts)之前,为了解决影像数据的显示,大家使用的都是WMS服务(Web Map Service),在前端渲染地图时,会把当前显示的地理范围传递给服务器,然后服务器去影像数据上搜索这个范围并导出为合适分辨率的图片,然后返回给前端进行显示,但是这种策略耗时不稳定,有时长有时短,因而促生了栅格瓦片地图服务。(使用栅格瓦片地图服务的另一个原因)。

三、为什么有三种栅格瓦片地图服务?

正如前文所述,wmts是OGC定义的地图服务标准,tms是OSGeo定义的。
1)OGC中文名为开放地理空间信息联盟,这个组织就和前端的W3C一样,是一个标准制定组织。它定义了wmts、wfs、wms、3dtiles等等地图服务标准,其官网地址:https://www.ogc.org/
OGC的wmts服务标准地址:https://www.ogc.org/standard/wmts/ (我的评价是:垃圾,贼难看,不如百度看网页博客)
2)OSGeo中文名为开源空间信息基金会,是一个全球性非营利性组织,目标是支持全球性的合作,建立和推广高品质的空间信息开源软件。GIS领域的许多知名软件和库比如:GDAL、PostGIS、QGIS等等都是这个组织搞出来的,其官网地址:https://www.osgeo.org/,那为啥它要定义一个tms呢,因为当年还没有wmts,其实就和前端一样,某个特性或者”标准“大家已经约定俗成了,但是标准制定组织还没想好怎么定义呢或者还没纳入它的标准中呢,标准指定组织落后了拖后腿,那你没有我就自己定义了,当你定义的栅格瓦片地图服务标准wmts出现以后,我的标准tms已经广为流传了,就导致了今天的局面:tms和wmts并存。
OSGeo的tms服务标准地址:https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification (哎呦,不错哦)
3)XYZ并不是某个组织定义的,而是大家约定俗成的一种风格,像wmts和tms,它们不仅仅提供了地图瓦片,同时还提供元数据信息等查询服务,但XYZ不是,它只提供地图瓦片,实际上把wmts的地图瓦片文件拷贝到任何一台服务器上,按照XYZ风格给出地图瓦片的地址,这就是一个XYZ风格的地图瓦片服务;把TMS的地图瓦片拷贝到任何一台服务器上,按照XYZ风格给出地图瓦片的地址,这也是一个XYZ风格的地图瓦片服务。

四、异同点

1、相同点

1)瓦片尺寸相同

实际上,WMTS定义的瓦片尺寸是矩形,TMS定义的是正方形,但是绝大多数的瓦片尺寸都是256x256,少数是512x512,我没见过不是正方形的瓦片,我觉得这也是一种约定俗成的标准:无论哪种栅格瓦片地图服务都使用正方形瓦片。原因(来自ChatGPT):
zxy瓦片和栅格瓦片之间的区别,GIS原理,数据可视化,前端

2)两者的地图切片原理是相同的(都是瓦片金字塔),下面介绍两种地图切片方案:

a)WGS84(4326,经纬度坐标系)方案(把4490带入也是一样的)

坐标范围:经度[-180,180],纬度[-90,90]
切片方式:在地理坐标系中,瓦片是根据经纬度划分的,每个瓦片代表一个经度范围和纬度范围,即一个矩形区域(正方形是特殊的矩形)。按照四叉树分割:第一层:切分为两个瓦片,经度范围为[-180,0]、经度范围为[-90,90]和经度范围为[0,180]、纬度范围为[-90,90];第二层:把第一层的瓦片再进行切分成八块,以此类推。

b)Web-Mercator(3857,投影坐标系)方案

坐标范围:3857 坐标系中的平面直角坐标范围是 x : [-20037508.34 , 20037508.34],y : [-20037508.34 , 20037508.34],对应的经纬度范围:经度[-180°,180°],纬度[-85.051129°, 85.051129°]。可以看到这种投影方案并没有覆盖全球区域,这样设置有两个好处:1、避免将极点投影到无穷远,2、将整个投影地图变为正方形
切片方式:在Web墨卡托投影中,瓦片是根据平面直角坐标系划分的。同样是采用四叉树分割:第一层:切分为一个瓦片,x范围为 [-20037508.34 , 20037508.34],y范围为 [-20037508.34 , 20037508.34];第二层:在第一层的基础上切分为四块,以此类推。
这里多说一点,天地图的经纬度的栅格瓦片地图服务的坐标系是4490的,但是很多时候我们都会听到说:啊,4490和4326差不多,可以按照4326加载。可这是为什么呢?原因就是两者的切片方式和坐标范围是一样的,所以能加载4326的地图引擎一般都能加载4490(Cesium不行,是因为它加载的时候判断元数据信息中坐标系是不是4326或者3857,不然不给你加载,自己改源码一样可以加载);但是为什么又说差不多呢,4490和4326的参考椭球体的扁率有所差别,我们使用的地图引擎的地图引擎的扁率都是按照4326指定的,如果你使用4490的瓦片,肯定会有偏差(设想一下:你有个单位立方体,把它的表面贴图扒下来贴在一个长宽高为0.9999999的立方体上,你说能不能贴上去,贴肯定能贴,但是和原来的肯定不一样)。

3)格式

png或jpeg

2、不同点

1)协议

XYZ、TMS是Restful风格的,而WMTS可以有三种:KVP、SOAP、Restful。
KVP:key-value-pair,查询字符串风格,例如:http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}
SOAP:简单对象访问协议,以xml作为数据传送的格式(没人用了)。
Restful就不说了。

2)原点和轴向

TMS:原点在左下角,Y轴自下向上,X轴自左向右
WMTS:原点在左上角,Y轴自上向下,X轴自左向右
XYZ:原点不固定(可能在左上角也可能在左下角),Y轴方向不固定(取决于原点位置,可能自下而上,也可能自上而下),X轴自左向右

3)url模板

WMTS:http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}
其中,TileMatrixSet代表坐标系,TileMatrix代表瓦片层级,TileRow和TileCol代表瓦片在TileMatrix层级下的行列号
TMS:https://tile.openstreetmap.org/{z}/{x}/{y}.png
其中,{z}代表瓦片层级,{x}{y}代表瓦片在z层级下的位置
XYZ:https://ip:port/{z}/{x}/{y}.png
其中,{z}代表瓦片层级,{x}{y}代表瓦片在z层级下的位置

4)元数据

WMTS:GetCapabilities接口,用于获取元数据
TMS:一般来说,TMS的地址会指向一个名称是tilemapresource.xml的文档
XYZ:无

5)要素查询

WMTS:GetFeatureInfo接口,用于获取要素位置及属性信息。
TMS:无
XYZ:无

五、个人观点

个人认为这三种地图服务的主要的不同点就是瓦片编号的方案不同,主要有以下几种流派:
1)谷歌XYZ:Z表示缩放层级,Z=zoom;XY的原点在左上角,X从左向右,Y从上向下。
2)TMS:Z的定义与谷歌相同;XY的原点在左下角,X从左向右,Y从下向上。
3)QuadTree:微软Bing地图使用的编码规范,Z的定义与谷歌相同,同一层级的瓦片不用XY两个维度表示, 而只用一个整数表示,该整数服从四叉树编码规则。(别人都是y轴方向不同,就它特殊,呸)
4)百度XYZ:Z从1开始,在最高级就把地图分为四块瓦片;XY的原点在经度为0纬度位0的位置,X从左向右,Y从下向上。
5)天地图4490的WMTS服务:Z从1开始。(但是它的web墨卡托的wmts服务的Z是从0开始的)

六、各种标准的地图厂商

1)xyz:osm、mapbox、google maps
2)tms:osm、mapserver、mapnik
3)wmts:arcgis online、osm、google maps

参考资料:

1、Web地图服务规范(WMS、WMTS、TMS)简析
2、几种互联网地图服务背后的解读(WMS,WFS,WMTS,TMS)
3、TMS, XYZ & WMTS的不同
4、WMTS以及TMS地图切片方案详述和比对
5、WMS、WFS、WCS、WPS、WMTS、WMSC、TMS等常见地图服务的区别
6、WMTS服务及地图瓦片原理
7、TMS和WMTS大概对比
8、OGC WebGIS 常用服务标准(WMS/WMTS/TMS/WFS)速查
9、OGC标准WMTS服务概念与地图商的瓦片编号流派-web地图切片加载
如有不足之处,欢迎大家批评指正。文章来源地址https://www.toymoban.com/news/detail-833420.html

到了这里,关于Web地图服务规范之栅格瓦片地图服务:WMTS(WebMapTileService,网络地图瓦片服务)、TMS(TileMapService,瓦片地图服务)和XYZ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务的拆分规范和原则

    前面我们了解了什么是微服务和为什么需要做微服务架构(What Why),本文我们就来探讨如何做微服务架构的拆分(How) 微服务拆分没有一个绝对正确的方案,服务拆分的粒度完全要根据业务场景来规划,而随着业务的发展,原先的架构方案也需要做调整。既然没有标准答案,那我

    2024年01月23日
    浏览(28)
  • SSE(服务器推送事件)规范

    SSE 是指 \\\"Server-Sent Events\\\",即服务器推送事件。它是一种基于 HTTP 的服务器推送技术,允许服务器实时向客户端推送数据。SSE 规范定义了一种在客户端和服务器之间单向实时通信的方式,通常用于实现服务器向客户端推送更新、通知或实时数据。 使用 SSE,客户端可以通过简单

    2024年01月18日
    浏览(40)
  • RISC-V走向开放服务器规范

    原文:RISC-V Moving Toward Open Server Specification 作者:Agam Shah 转载自:https://www.hpcwire.com/2023/07/24/risc-v-moving-toward-open-server-specification/ 中文翻译: 2023年7月24日 RISC-V International目前正在起草一份可以标准化RISC-V服务器芯片和系统开发的规范,RISC-V International是一个处理指令集架构开

    2024年02月13日
    浏览(26)
  • 浪潮信息带头编制服务器液冷冷板标准为行业提供规范化和标准化的服务

    这些年,浪潮信息一直专注于推动技术创新及产业升级,瞄准液冷产业化发展的新趋势,浪潮信息持续推进液冷标准的建立与应用推广,并已经取得了良好的成效。 2023年2月28日,由浪潮信息牵头制定的《服务器及存储用液冷部件技术规范第1部分:冷板》团体标准在中国电子

    2024年02月11日
    浏览(80)
  • Spring Security 6.0系列【30】授权服务器篇之JOSE规范

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 本系列Spring Authorization Server 版本 1.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo

    2024年02月01日
    浏览(38)
  • 海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)

    海量数据处理项目-账号微服务和流量包数据库表+索引规范(下) 第2集 账号微服务和流量包数据库表+索引规范讲解《下》 简介:账号微服务和流量包数据库表+索引规范讲解 账号和流量包的关系:一对多 traffic流量包表 思考点 海量数据下每天免费次数怎么更新? 海量数据

    2024年03月26日
    浏览(70)
  • Leaflet 调用百度瓦片地图服务

    在使用 leaflet 调用第三方瓦片地图服务的项目,主要谷歌地图、高德地图、百度地图和 OSM 地图,与其他三种地图对比,百度地图的瓦片组织方式是不同的。百度从中心点经纬度(0,0)度开始计算瓦片,而谷歌地图是从左上角经纬度(-180,90)度开始计算瓦片;如果直接使用百度瓦片

    2024年02月08日
    浏览(33)
  • (02)Cartographer源码无死角解析-(81) ROS栅格地图→服务接收子图、cairo图像绘详解、OccupancyGrid地图发布

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文末正下方中心提供了本人 联系方式, 点击本人照片即

    2024年02月16日
    浏览(35)
  • 手把手教你搭建个人地图服务器(高德离线部署解决方案):获取地图瓦片数据、高德JS API、私有化部署和调用。。。

    众所周知,目前常见的地图(高德、百度、腾讯等)只提供在线API服务,对于一些内网应用而言,如果需要使用地图展示,则由于不能访问互联网而无法使用类似的第三方地图服务。 本文,通过将高德地图瓦片数据 和 在线JS API做了本地部署,并修改API,将其所有的网络请求

    2024年02月04日
    浏览(43)
  • Tilemap瓦片地图

    可以用Tilemap工具来构建游戏世界的地图,创建瓦片地图时, Grid组件自动作为瓦片地图的父级 ,相比于传统使用照片搭建地图的方式,使用瓦片地图用来搭建地图可以更加迅速,而且使用传统方式搭建地图时,需要添加大量的碰撞体,但是使用瓦片地图就可以避免该问题 瓦片

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包