矢量瓦片地图的制图流程与矢量瓦片符号绘制方法分析
扫描二维码
随时随地手机看文章
引言
随着OSM地图、百度地图、高德地图等在线地图服务迅速普及,地图已经成为人们日常生活不可缺少的科学工具。随着地图的移动化应用逐步深入,基于栅格瓦片技术的地图服务由于受网络带宽、图片无法交互以及不支持无级缩放等限制,已难以满足用户对地图服务在交互性、高分辨率等方面的需求。矢量瓦片技术将瓦片服务的高效和矢量地图的灵活交互结合在一起,为解决上述问题提供了一种新的解决方案,客户端根据地图显示范围和地图配置样式实现地图的实时渲染:可交互式定制地图样式,满足了用户大众化、地图样式个性化的需求。因而,矢量瓦片地图逐渐被各地图平台所采用。
1矢量瓦片绘制流程
1.1符号绘制流程
与栅格瓦片不同,矢量瓦片以四叉树金字塔模型来切割矢量数据,并将矢量瓦片数据存储于服务器端,客户端根据地图显示范围以及地图样式文件定义的数据源映射获取服务器上存储的矢量瓦片、图表、字体等资源,然后按照地图样式文件定义的地图表达规则渲染输出地图。
矢量瓦片绘制流程如图1所示。
用户可重新调整字体的大小、地图符号的颜色/尺寸等属性,改变现有的地图样式。客户端负责进行地图渲染输出,服务器端只负责将矢量瓦片、符号、字体等资源传递给客户端。
1.2硬件加速绘制技术
随着图形处理器(GPU)技术的不断发展,在固定功能图形渲染流水线(Fix-functionRenderingPipeline)的基础上,增加了可编程图形渲染流水线(ProgrammableRenderingPipeline)。通过撰写着色器程序shader代码,由GPU直接在硬件层面对这些shader代码进行编译,从而实现特定的绘制效果。图2展示了典型的可编程图形渲染流水线。为了将矢量地理数据绘制到屏幕上,在图元装配阶段把原始的几何数据组织为点、线、三角形等几何图形:顶点着色器(Vertexshaders)允许通过编程实现对每个顶点属性(位置、纹理、颜色等)的计算和变换操作。栅格化和插值阶段将这些以三角形为代表的几何图形数据转换为屏幕像素。像素着色器(Fragmentshaders)同样以可编程的方式实现逐个像素的颜色等属性的计算与操作。通过着色器程序(shader)实现对GPU内部顶点和像素处理阶段的直接操纵,使得图形本身的处理速度和灵活性都得到了非常大的提高。
图2可编程图形渲染流水线
2矢量瓦片符号绘制
地图符号是直观表达空间要素特征与分布规律的主要手段,是表达地图内容、传递地理信息的主要媒介。一般会利用点状、线状、面状地图符号来描述客观世界中具有特定位置的地理对象或者现象,并通过地图制图规则将绘制结果直观、形象地展现在地图上。矢量瓦片符号渲染过程以数据为驱动,依据绘制要求对数据进行转换和处理,建立地图符号与地理要素之间的对应关系,根据属性信息以及符号样式文件,利用图形绘制API以及符号化绘制方法,在屏幕上输出地图。
2.1点状符号绘制
点状符号具有定位和定性特征,其大小并不指代地物的面积或范围,与地图的比例尺无关,如水准点、居民地、水塔、旅游景点等。
点状符号采用预先制作好的图片来代表点状地物,栅格图片填充的点状符号的主要参数包括:图片存储的路径、图片的大小、图片的位置、图片的缩放系数,图片的旋转角度等。
点状要素的符号化表达方法主要包括:单一符号化、着色符号化、等级符号化、比例符号化以及分类符号化。单一符号化,所有的点状要素都采用相同的点状符号:着色符号化,即通过颜色变化体现点状要素之间的属性差异:比例符号化,则符号的尺寸成一定的函数关系,跟随尺寸变化体现点状要素之间的属性差异:分类符号化,则可以根据点状要素的属性分类,不同类别的点状要素配置的符号不同。
2.2面状符号绘制
面状符号用于表示分布范围较广的大面积地理要素,其范围大小按比例尺显示,如行政区划、森林、湖泊等。面状符号有一条有形或者无形的闭合轮廓,主要由两部分构成:轮廓边界和内部填充。轮廓边界可以用线状符号来表示,内部填充包括颜色填充(纯色填充和渐变填充)、符号填充(点状符号填充和线状符号填充)、纹理填充。纯色填充是用一种颜色进行面域填充,是最普遍和常用的填充方式。渐变填充是颜色按照一定规律变化的面域填充方式。点状符号填充是面域内点状符号按照一定的方式排列(矩形填充、品形填充、散列填充),其填充参数主要包括点状符号、符号的缩放比例、符号的旋转角度、符号的横向间隔和纵向间隔等。线状符号填充,其填充参数主要包括线状符号、符号的填充角度、符号的间隔等。纹理填充则是利用纹理图片,基于图片旋转角度、图片缩放比例等参数进行面域填充。
3结语
当前,GPU以其明显的效率优势,成为当前地理信息可视化领域的热点。对于点状符号,将其外接矩形直接生成两个三角形,根据属性信息从纹理缓存中获取相应的纹理符号,并绑定到三角形顶点。对于线状符号,采用平行线推移算法将线状要素离散为三角形条带。对于面状符号,采用已经成熟的Delaunay三角网的剖分方法,将面状要素离散为三角形图元集合。
客户端根据地图显示的范围以及数据源从矢量瓦片数据库获取相应的矢量瓦片。通过对符号样式文件的编辑,可以动态地改变地图符号样式、实时输出地图。客户端负责数据的解析与渲染任务,缓解了服务器压力,为用户提供了一种交互式、可定制、可配置的地图制图服务。