矢量地图切片技术分析

1. 什么是矢量切片

传统的栅格地图切片,是预先在Server端绘制好固定的PNG和JPG切片集合。而矢量切片是很早就已经出现,并已通过各种不同的技术手段在应用中表现出来,大多以json或二进制文件将矢量地图数据传输至前端进行绘制。例如百度地图、Google地图等都较早实现了栅格和矢量两种模式。

矢量地图切片将矢量数据通过不同的描述文件来组织和定义,通常通过自定义文件或json文件进行传输,在前端按需请求不同的矢量瓦片数据文件,并利用类似canvas等技术进行绘制。使用这种技术有不少好处,例如不再需要为不同的样式而反复进行制图、渲染、切片、更新service等过程,并且在当前各种高分屏、视网膜屏大肆发展的阶段,避开按照特定DPI和分辨率渲染的栅格图片在不同的显示设备上无法以统一清晰的效果呈现,等等。

当前,矢量切片已经广泛应用开了,现在的在OSM数据中得到了广泛的使用,例如这个站点提供了OSM Planet和分国家区域的daily下载包,并且以MBTiles文件的形式提供。

 

1.1 矢量切片规范

Mapbox提出了Vector Tile的开放规范,并遵守Creative Commons Attribution 3.0 United States License:Mapbox Vector Tile Specification,该规范用到了Google的Protocol Buffers作为数据编码规范。同样被Mapbox列入规范的还有MBTiles is a specification,作为在SQLite中存储切片数据的规范。在两者的github页面上,都可以找到对应规范的实现清单,这些实现大多是开源工具,也包含一些闭源软件,而这些所有,足以支撑起矢量切片的数据转换、数据存储、数据服务的全技术架构的基本骨架。

继续阅读矢量地图切片技术分析