矢量瓦片产生原因
随着大数据技术的发展,人们对电子地图的快速共享需求也越来越强烈。传统电子地图共享时,通常会通过瓦片裁剪工具获取栅格瓦片。相对于其他技术,栅格瓦片底图有其优越性,例如有效减少了传输数据体积,多级缩放等。然而,栅格瓦片底图也有一些短处,缺乏灵活性、实时性,数据完整性受损是比较突出的问题,这正是栅格数据的问题:
- 缺乏灵活性。栅格瓦片完成后,已经保存为图片格式,样式不可修改。若要多种栅格底图,需裁剪多份栅格瓦片底图;
- 缺乏实时性。由于栅格瓦片已保存为图片格式,当现实世界地物有变化时,不能实时更新,只能重新裁剪栅格瓦片;
- 丢失属性信息。栅格瓦片没有属性信息,若要查询图片的多边形的属性,需要到服务器重新请求。
优势
基于栅格瓦片底图的劣势,矢量瓦片针对矢量电子地图,按照一定的标准和技术将其保存为多种比例尺的矢量分块数据,在前端显示电子地图时,可直接调用矢量分块进行绘制。
- 可保留属性信息,在客户端进行查询时,无需再次请求服务器;
- 采用分块编码模式,客户端获取时只返回请求区域和相应级别的矢量瓦片底图,且采用实时绘制矢量模式,绘制效率更高;
- 无级缩放。矢量瓦片分辨率高达4096*4096,是栅格瓦片的16倍,可保证缩放过程中的细节高度还原,且满足高分屏绘制需求;
- 自定义渲染样式。客户端显示矢量瓦片底图时,可以按照用户赋予的样式渲染。如导航地图有白天和黑夜两种模式,只需共用一份矢量瓦片底图,利用两套样式进行渲染即可;可以通过属性过滤条件可以任意过滤筛选图元,实现个性化定制;可以编辑底图中每一个矢量图层的可见状态,调整矢量层的叠加压盖顺序,修改矢量图层的颜色、大小等显示样式。
以Mapbox矢量瓦片为例,在这个美国邮政编码区域数据集中,一共有540多万个点组成的超过33000个要素,它是在没有服务器支持的情况下,直接加载到浏览器中:
想以每秒60帧的速度渲染如此巨大的数据量是不可能的,不过幸运的是,我们并不需要这样做,因为:
- 缩放级别较低时,我们的地图不需要太过精细
- 缩放级别较高时,大量数据都在屏幕之外
针对所有缩放级别和屏幕优化数据,最好的方法就是将数据切割成矢量切片(vector tile)。传统方法里,这个步骤是使用Mapnik和PostGIS等工具在服务器上完成的。