基于符号结构的线型地图符号反走样绘制方法技术

技术编号:13370708 阅读:52 留言:0更新日期:2016-07-19 18:41
本发明专利技术涉及GIS领域和数字地图制图领域的一种符号化渲染技术,给出了一种基于符号结构信息的线型矢量要素反走样绘制方法,利用GPU可编程流水线和Shader语言实现了基于该方法的线状矢量要素高质量绘制。该方法包括以下步骤:首先根据线宽构造三角化后的线Mesh,将沿线走向的U参数和垂直于线走向的V参数传递给Mesh中的每个顶点;接着根据需要填充的地图符号单元生成颜色结构表,确定反走样阈值,并将此颜色结构表、反走样阈值和U-V参数传递到Shader程序中;利用Shader语言,根据每个顶点的U-V值,判读当前像素是否在反走样阈值内,在阈值内则先进行U方向的反走样颜色混合计算,再进行V方向的反走样颜色混合计算;最后得到需要填充的颜色,对线要素进行逐像素绘制。

【技术实现步骤摘要】

本专利技术涉及GIS领域和数字地图领域的一种符号化渲染技术,给出了一种基于符号结构的线型地图符号反走样绘制方法,利用GPU(GraphicsProcessingUnit)可编程流水线和Shader语言实现了基于该方法矢量线要素的高质量绘制。设计了颜色结构表来对线型地图符号进行有效映射和表达,提高了矢量线要素的绘制效率和符号化的灵活性。
技术介绍
矢量数据是对空间实体抽象表达的一种重要形式,而利用不同的颜色、尺寸、形状等参数来对矢量数据进行符号化呈现是将空间实体信息利用地图传递给用户的重要手段。由于符号化显示的结果最终是在一个个离散的像素上显示的,原始数据的数学连续特性无法直接映射到这些像素坐标中,即形成了锯齿化的效果。为了更加清晰的表达空间信息,对于矢量要素的反走样绘制一直都是GIS领域和数字地图制图领域的研究热点。相比于点符号和面符号,线型符号由于需要沿线绘制这一关键特性,其绘制过程往往比较复杂。如何进行线段的反走样绘制,随着计算机可视化技术的发展,诸多方法被研究和发展。但这些方法要么是利用纯软件方法进行反走样计算(桂丽娟,申闫春.《基于亚像素精度的任意宽度直线反走样算法》.《计算机仿真》,2013,30(9):244-247),如GDI+,AGG,Cairo等图形绘制方法库,要么采用全屏反走样和绘制后处理来对线的边界实现反走样(如果多重纹理采样方法MSAA,快速近似抗锯齿FXAA,增强型子像素形态学反锯齿SMAA等方法)。这两大类方法,前者不能适应于现代硬件加速绘制的技术体系,绘制效率低下;后者需要另外构建独立的显存来进行多重采样和过滤绘制(属于全屏后处理反走样),对于线的反走样绘制只能在边界处理,所以要求将一个矢量要素按照符号结构多次绘制,同样会引起整体效率问题。论文《基于边界反走样算法的地图可视化研究》(梅洋,李霖,贺彪.《武汉大学学报·信息科学版》,2008,7:759-761)给出了一种基于Wu反走算法的地图符号反走样绘制方法,但这种仍然只关注于线边界的反走样,对矢量线内部的反走样并没有考虑。而利用GPU的可编程流水线和Shader来进行线状要素的绘制能够将原本需要多次绘制的矢量线要素,用Shader编程的方式一次性绘制。名称为“基于GPU的地图线形符号绘制方法及系统”,申请号201310125110.6的中国专利,在分析地图线形符号绘制的难点的基础上,公开了一种在Shader程序里面定制线型地图符号的绘制方法。但这种方法严格依赖于Shader编程,不同的线型符号需要在Shader里面大量的编程才能实现绘制;对于如何将各种各样的复杂线型地图符号映射到GPU像素计算的方面并没有给出方法,对于如何进行矢量线要素的反走样绘制亦没有给出方法。因而,如何对符号化的矢量线要素进行反走样绘制是计算机地图绘制中的一个亟待解决的问题。这种反走样绘制需要适应于多种线型地图符号,且不仅仅是在线的边界反走样,对于线要素的内部也需要进行反走样,从而实现线要素的清晰表达。
技术实现思路
本专利技术的目的是在GPU可编程流水线和着色器技术的基础上,针对矢量线要素的反走样绘制问题,突破传统的软件反走样和全屏后处理的方式,实现基于符号结构的矢量线要素的边界与符号内部一致的反走样绘制。本专利技术的技术方案是:基于符号结构的线型地图符号反走样绘制方法,包括下列步骤:步骤1初始化需要绘制的线状要素的点集序列,根据线宽生成需要绘制的三角形几何三角网:确定需要绘制的矢量线要素的线宽参数,遍历线要素中的每一个顶点,按照半个最大线宽向两边扩展,同时生成相应的三角形集合,并为每个三角形的每个顶点赋予沿线走向的长度值U值和垂直于线走向的长度值V值,即U-V值;最终得到最后一个顶点的U值作为整条线最大的U值MaxU;步骤2确定需要沿线重复填充的符号单元的颜色结构表:将需要填充的符号单元按照纵向-横向的结构进行分解,用列优先的二维数组和相应的符号单元属性来结构化映射一个符号单元;步骤3在着色器中根据符号颜色结构表确定当前像素的位置信息:在着色器中基于传递到着色器里面的顶点U-V值,动态确定每个像素的U-V值,即像素在水平方向上到线起点的距离u'值和像素在垂直方向上到线的上边界的距离v'值,由此确定每一个像素在符号颜色结构表中属于哪一个单元;根据所属单元的行列值,得到一个像素在沿线走向上占单元的比例u_Percernt和在垂直于线走向上占单元的比例v_Percernt;步骤4首先判断步骤3确定的比例u_Percernt是否在反走样阈值范围内,如果在范围内则进行当前单元的左单元和右单元的颜色混合;再对比例v_Percernt判断是否在反走样阈值范围内,如果在范围内则进行当前单元的上单元和下单元的颜色混合;最后利用计算得到的颜色对线要素进行逐像素绘制。所述步骤1中,将V值从0至最大线宽的范围内归一化到0至1的范围内,U值通过每个顶点距离起始点的距离除以最大线宽得到。所述步骤2中,A.符号的颜色结构表:将符号单元按照其结构分解为几个列,每一列都包含其相应的行,每一行都包含其相应的四个角的颜色值,由此形成一系列的颜色单元来映射特定的符号;B.颜色结构表的单元属性:对于一个符号的颜色结构表,其每一列都包含相应的宽度属性和所包含的行数属性,每一行都包含相应的高度属性,每一列都包含一个布尔值来指明该列是否为背景列,整个颜色结构表包含总列数、总宽度和总高度属性。所述步骤3中确定当前像素的位置信息,具体步骤为:在着色器中根据当前像素的u'值,利用公式U(p)=u'-SL×[u'/SL],计算其在符号颜色结构表中的位置,其中U(p)表示在颜色结构表中的U值,SL表达符号的总宽度,[u'/SL]表示对u'/SL的结果进行取整得到小于u'值的SL的整数倍;然后根据当前像素的v'值,迭代判断其在颜色结构表中所处的具体行,并结合U(p)值确定该像素在符号颜色结构表中所处的具体列;根据得到的具体行和列即可确定当前像素所处的单元;所述比例u_Percernt的计算公式为:u_Percent=U(p)/ColumnWidth,其中ColumnWidth为像素所在单元的宽度;所述比例v_Percernt的计算公式为:v_Percent=v'/RowHeight,其中RowHeight为像素所在单元的高度。所述步骤4中,判断比例u_Percernt是否在反走样阈值范围内的具体步骤为:设传到着色器里面的反走样阈值为aa_Buffer,如果比例u_Percent小于本文档来自技高网
...

【技术保护点】
基于符号结构的线型地图符号反走样绘制方法,其特征是,该方法包括下列步骤:步骤1初始化需要绘制的线状要素的点集序列,根据线宽生成需要绘制的三角形几何三角网:确定需要绘制的矢量线要素的线宽参数,遍历线要素中的每一个顶点,按照半个最大线宽向两边扩展,同时生成相应的三角形集合,并为每个三角形的每个顶点赋予沿线走向的长度值U值和垂直于线走向的长度值V值,即U‑V值;最终得到最后一个顶点的U值作为整条线最大的U值MaxU;步骤2确定需要沿线重复填充的符号单元的颜色结构表:将需要填充的符号单元按照纵向‑横向的结构进行分解,用列优先的二维数组和相应的符号单元属性来结构化映射一个符号单元;步骤3在着色器中根据符号颜色结构表确定当前像素的位置信息:在着色器中基于传递到着色器里面的顶点U‑V值,动态确定每个像素的U‑V值,即像素在水平方向上到线起点的距离u'值和像素在垂直方向上到线的上边界的距离v'值,由此确定每一个像素在符号颜色结构表中属于哪一个单元;根据所属单元的行列值,得到一个像素在沿线走向上占单元的比例u_Percernt和在垂直于线走向上占单元的比例v_Percernt;步骤4首先判断步骤3确定的比例u_Percernt是否在反走样阈值范围内,如果在范围内则进行当前单元的左单元和右单元的颜色混合;再对比例v_Percernt判断是否在反走样阈值范围内,如果在范围内则进行当前单元的上单元和下单元的颜色混合;最后利用计算得到的颜色对线要素进行逐像素绘制。...

【技术特征摘要】
1.基于符号结构的线型地图符号反走样绘制方法,其特征是,该方法包括下列步
骤:
步骤1初始化需要绘制的线状要素的点集序列,根据线宽生成需要绘制的三角形几
何三角网:确定需要绘制的矢量线要素的线宽参数,遍历线要素中的每一个顶点,按照
半个最大线宽向两边扩展,同时生成相应的三角形集合,并为每个三角形的每个顶点赋
予沿线走向的长度值U值和垂直于线走向的长度值V值,即U-V值;最终得到最后一
个顶点的U值作为整条线最大的U值MaxU;
步骤2确定需要沿线重复填充的符号单元的颜色结构表:将需要填充的符号单元按
照纵向-横向的结构进行分解,用列优先的二维数组和相应的符号单元属性来结构化映
射一个符号单元;
步骤3在着色器中根据符号颜色结构表确定当前像素的位置信息:在着色器中基于
传递到着色器里面的顶点U-V值,动态确定每个像素的U-V值,即像素在水平方向上
到线起点的距离u'值和像素在垂直方向上到线的上边界的距离v'值,由此确定每一个像
素在符号颜色结构表中属于哪一个单元;根据所属单元的行列值,得到一个像素在沿线
走向上占单元的比例u_Percernt和在垂直于线走向上占单元的比例v_Percernt;
步骤4首先判断步骤3确定的比例u_Percernt是否在反走样阈值范围内,如果在范
围内则进行当前单元的左单元和右单元的颜色混合;再对比例v_Percernt判断是否在反
走样阈值范围内,如果在范围内则进行当前单元的上单元和下单元的颜色混合;最后利
用计算得到的颜色对线要素进行逐像素绘制。
2.根据权利要求1所述的基于符号结构的线型地图符号反走样绘制方法,其特征
是,所述步骤1中,将V值从0至最大线宽的范围内归一化到0至1的范围内,U值通
过每个顶点距离起始点的距离除以最大线宽得到。
3.根据权利要求1所述的基于符号结构的线型地图符号反走样绘制方法,其特征
是,所述步骤2中,
A.符号的颜色结构表:将符号单元按照其结构分解为几个列,每一列都包含其相应
的行,每一行都包含其相应的四个角的...

【专利技术属性】
技术研发人员:乐松山温永宁陈旻闾国年
申请(专利权)人:南京师范大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1