企业网站首页设计公司,wordpress电子邮件怎么设置,广州app客户端开发,成品短视频软件推荐下载免费一、什么是栅格瓦片地图服务
这四种地图服务都是通过网络传输的栅格瓦片地图服务#xff0c;这里有三个名词需要解释#xff1a;
1、什么是栅格#xff1f;
遥感影像、Dem等#xff0c;就是图片。
2、什么是地图服务#xff1f;
实际上#xff0c;地图服务就是一个u…一、什么是栅格瓦片地图服务
这四种地图服务都是通过网络传输的栅格瓦片地图服务这里有三个名词需要解释
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?requestGetCapabilitiesservicewmts也可以获得地图瓦片http://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x} 为什么查询元数据信息的时候要拼上“requestGetCapabilitiesservicewmts”参数而获取地图瓦片的时候要拼上”SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x}tk您的密钥“参数这是OGC的规定(关于OGC后文会有详细解释)其实就是大家约定俗称的一种规则所有的wmts服务都要满足查元数据信息的时候就使用”requestGetCapabilitiesservicewmts“获取地图瓦片的时候就使用”SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x}“当然你也可以使用不同的参数名但是实现相同的功能但是地图引擎时加载不了的(别人实现的是OGC的规则不是你自己定义的规则)除非你自己改源码。 同理xyz、tms也是一样的。
二、什么是瓦片为什么使用栅格瓦片地图服务
瓦片这个词其实源自于遥感影像处理或图像处理的瓦片金字塔熟悉Arcgis的人应该会知道当使用Arcgis打开遥感影像数据时软件会询问你是否构建影像金字塔那为什么要构建影像金字塔呢要回答这个问题首先要理解什么是影像金字塔。影像金字塔实际上就是将影像数据分层分块比如我将一个1tb的影像数据分为5层第一层把原始数据分成一块这里的块就是瓦片其实就是图片只用一张图片表示整个影像数据但是这张图片的分辨率远低于原始数据第二层把原始数据分为4块用四张图片表示整个影像数据这4张图片的分辨率高于第一层的分辨率但是还是低于原始数据的分辨率第二层把原始数据分为16块用16张图片表示整个影像数据这16张图片的分辨率高于第2层的分辨率但是还是低于原始数据的分辨率…依次类推直至到第五层此时将原始影像分为1024块所有块组合到一起表示整个影像数据此时这些块的分辨率和原始影像分辨率一致。 金字塔技术预先在服务器上生成瓦片金字塔可以轻松的显示整个影像数据。(这是使用栅格瓦片地图服务的原因之一)。 这种分层分块思想不仅仅用于栅格瓦片地图服务在mapbox的矢量瓦片、cesium的terrain服务和3dtiles服务、unreal和unity的HLOD等等都使用了这种思想。 其实在栅格瓦片地图服务(tms和wmts)之前为了解决影像数据的显示大家使用的都是WMS服务(Web Map Service)在前端渲染地图时会把当前显示的地理范围传递给服务器然后服务器去影像数据上搜索这个范围并导出为合适分辨率的图片然后返回给前端进行显示但是这种策略耗时不稳定有时长有时短因而促生了栅格瓦片地图服务。(使用栅格瓦片地图服务的另一个原因)。
三、为什么有三种栅格瓦片地图服务
正如前文所述wmts是OGC定义的地图服务标准tms是OSGeo定义的。 1OGC中文名为开放地理空间信息联盟这个组织就和前端的W3C一样是一个标准制定组织。它定义了wmts、wfs、wms、3dtiles等等地图服务标准其官网地址https://www.ogc.org/ OGC的wmts服务标准地址https://www.ogc.org/standard/wmts/ (我的评价是垃圾贼难看不如百度看网页博客) 2OSGeo中文名为开源空间信息基金会是一个全球性非营利性组织目标是支持全球性的合作建立和推广高品质的空间信息开源软件。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 (哎呦不错哦) 3XYZ并不是某个组织定义的而是大家约定俗成的一种风格像wmts和tms它们不仅仅提供了地图瓦片同时还提供元数据信息等查询服务但XYZ不是它只提供地图瓦片实际上把wmts的地图瓦片文件拷贝到任何一台服务器上按照XYZ风格给出地图瓦片的地址这就是一个XYZ风格的地图瓦片服务把TMS的地图瓦片拷贝到任何一台服务器上按照XYZ风格给出地图瓦片的地址这也是一个XYZ风格的地图瓦片服务。
四、异同点
1、相同点
1瓦片尺寸相同
实际上WMTS定义的瓦片尺寸是矩形TMS定义的是正方形但是绝大多数的瓦片尺寸都是256x256少数是512x512我没见过不是正方形的瓦片我觉得这也是一种约定俗成的标准无论哪种栅格瓦片地图服务都使用正方形瓦片。原因(来自ChatGPT)
2两者的地图切片原理是相同的(都是瓦片金字塔)下面介绍两种地图切片方案
aWGS84(4326经纬度坐标系)方案(把4490带入也是一样的)
坐标范围经度[-180180]纬度[-90,90] 切片方式在地理坐标系中瓦片是根据经纬度划分的每个瓦片代表一个经度范围和纬度范围即一个矩形区域(正方形是特殊的矩形)。按照四叉树分割第一层切分为两个瓦片经度范围为[-180,0]、经度范围为[-90,90]和经度范围为[0,180]、纬度范围为[-90,90]第二层把第一层的瓦片再进行切分成八块以此类推。
bWeb-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。 KVPkey-value-pair查询字符串风格例如http://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x} SOAP:简单对象访问协议以xml作为数据传送的格式(没人用了)。 Restful就不说了。
2原点和轴向
TMS:原点在左下角Y轴自下向上X轴自左向右 WMTS:原点在左上角Y轴自上向下X轴自左向右 XYZ原点不固定(可能在左上角也可能在左下角)Y轴方向不固定(取决于原点位置可能自下而上也可能自上而下)X轴自左向右
3url模板
WMTShttp://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x} 其中TileMatrixSet代表坐标系TileMatrix代表瓦片层级TileRow和TileCol代表瓦片在TileMatrix层级下的行列号 TMShttps://tile.openstreetmap.org/{z}/{x}/{y}.png 其中{z}代表瓦片层级{x}{y}代表瓦片在z层级下的位置 XYZhttps://ip:port/{z}/{x}/{y}.png 其中{z}代表瓦片层级{x}{y}代表瓦片在z层级下的位置
4元数据
WMTSGetCapabilities接口用于获取元数据 TMS一般来说TMS的地址会指向一个名称是tilemapresource.xml的文档 XYZ无
5要素查询
WMTSGetFeatureInfo接口用于获取要素位置及属性信息。 TMS无 XYZ无
五、个人观点
个人认为这三种地图服务的主要的不同点就是瓦片编号的方案不同主要有以下几种流派 1谷歌XYZZ表示缩放层级ZzoomXY的原点在左上角X从左向右Y从上向下。 2TMSZ的定义与谷歌相同XY的原点在左下角X从左向右Y从下向上。 3QuadTree微软Bing地图使用的编码规范Z的定义与谷歌相同同一层级的瓦片不用XY两个维度表示 而只用一个整数表示该整数服从四叉树编码规则。(别人都是y轴方向不同就它特殊呸) 4百度XYZZ从1开始在最高级就把地图分为四块瓦片XY的原点在经度为0纬度位0的位置X从左向右Y从下向上。 5天地图4490的WMTS服务Z从1开始。但是它的web墨卡托的wmts服务的Z是从0开始的 …
六、各种标准的地图厂商
1xyz:osm、mapbox、google maps 2tms:osm、mapserver、mapnik 3wmts:arcgis online、osm、google maps
参考资料
1、Web地图服务规范(WMS、WMTS、TMS)简析 2、几种互联网地图服务背后的解读WMSWFSWMTSTMS 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地图切片加载 如有不足之处欢迎大家批评指正。