㈠ WebGIS 瓦片地图引擎实现之——地图瓦片加载计算原理介绍
在地图瓦片技术使用之前,用户使用在线地图,都是客户端将要显示的地理范围传送到服务端,服务端获取地理范围内数据渲染成图片返回给客户端。然而,此方法存在服务器IO操作和网络传输耗时、服务器资源占用大、数据传输耗时长等问题。为解决这些问题,谷歌地图提出了TMS服务,预先在服务端分层切片全量渲染,使用Web-Mercator投影,将地图按照不同显示级别切分成瓦片坐标图片。用户访问时,根据地理范围映射到瓦片索引,请求图片,客户端渲染图片,体验明显提升。TMS服务成为WebGIS工业标准,推动了OGC发布基于TMS的WMTS服务规范,多家地图厂商基于此技术生产切片地图服务。
栅格瓦片与矢量瓦片分别指的是地图瓦片和使用矢量数据组织的瓦片。栅格瓦片广泛使用,但存在瓦片预切图耗时、数据更新不便、服务端资源要求高、存储冗余、地图样式单一等问题。为此,Mapbox提出MVT矢量瓦片切片技术,地图定制化方便,技术流行,受此影响,三维数据也诞生了3DTiles。
为了更好地使用瓦片服务,需了解瓦片地图生产过程。以栅格瓦片为例,数据投影及配图包括数据投影,将大地坐标系转换为Web墨卡托投影,计算简单,精度可忽略不计,地图投影在256*256像素图片上。地图配图对数据分层级配置,处理数据细节,如样式配置,专业软件如ArcGIS、QGIS等可用。接着,地图切片根据瓦片坐标系统,将Web墨卡托地图转换为瓦片坐标,坐标转换过程涉及经纬度坐标转瓦片坐标,公式推导如经纬度->米->像素坐标->瓦片坐标。
瓦片地图服务发布后,瓦片文件通过目录结构组织,客户端请求对应瓦片,解析瓦片服务流程需满足高可用性,支持瓦片增量更新和对称子午线地图重复,瓦片连贯显示。渲染流程将拼接好的瓦片数据渲染,还需考虑矢量瓦片数据特殊处理及数据拾取等细节。详细代码实现和更多关注信息请参考链接。