顾及线宽一致性的矢量地图方形虚线符号绘制方法技术

技术编号:24125439 阅读:43 留言:0更新日期:2020-05-13 04:26
本发明专利技术公开了一种顾及线宽一致性的矢量地图方形虚线符号绘制方法,包括以下步骤:对矢量线要素进行初始化,指定像素单位的线宽和虚实比例值,确定矢量线要素的世界坐标系和屏幕坐标系之间的转换规则。其次按照坐标转换规则将屏幕线宽转换为世界坐标系的线宽,将虚实比例值进行线宽映射,并在世界坐标系下对矢量线要素进行三角化操作。然后构建顾及线宽一致性的GPU状态协议,在CPU中获取初始最大线宽、地图缩放比例系数、虚实比例值等信息,利用状态协议传递到GPU中。最终,在GPU中获取状态协议后进行保持线宽一致的方形虚线符号绘制。本发明专利技术通过构建方形虚线符号绘制的状态协议,驱动CPU‑GPU协同工作,实现了高效地图矢量线要素绘制。

【技术实现步骤摘要】
顾及线宽一致性的矢量地图方形虚线符号绘制方法
本专利技术涉及数字地图制图领域和地理信息系统领域的矢量线要素绘制方法,尤其涉及一种顾及线宽一致性特征的矢量地图方形虚线符号绘制方法。
技术介绍
地图是将真实地理世界中各种空间实体信息传递给读图者的有效媒介,地图符号化既是对空间实体的抽象,也是将空间实体进行视觉表达的绘制手段。数字地图制图是通过计算机来进行地图的可视化表达,点、线和面要素的符号化绘制是生成数字地图的基础。其中,矢量线要素的符号化表达既要考虑线宽、颜色、线型等绘图要素,还需要考虑随着地图缩放线宽是否保持一致的问题。方形虚线符号是表达矢量线要素的重要方法,通常用于表达铁路线、领海基线、未确定边界等。根据地图配图的需求,方形虚线地图符号在诸多情况下都需要随地图缩放保持线宽。针对这种线宽一致性的绘图需求,现有的研究主要有两大类:(1)基于纯软件绘制的方法。例如,论文《面向GIS的矢量线状符号填充算法研究》(张海泉,潘懋,吴焕萍,等.《地理与地理信息科学》,2004,20(04):11-14.),给出了一种基于GDI+的纯软件绘制方法来表达矢量线要素。该种方法严格依赖于矢量线的屏幕坐标和屏幕宽度,当地图缩放时,需要不断的进行重新计算和绘制,严重降低了地图显示的效率。针对此效率低下的问题,后续的研究大多数集中于如何用硬件加速的方法,即GPU绘制的方法来实现矢量线符号的绘制。(2)基于GPU绘制的方法。此类方法主要是研究如何通过GPU着色器(Shader)来绘制线符号。例如,论文《Afunction-basedlinearmapsymbolbuildingandrenderingmethodusingshaderlanguage》(YueSS,YangJS,ChenM,等.《InternationalJournalofGeographicalInformationScience》,2016,30(2):143-16)提出了一种利用OpenGLShader来构建线符号并用GPU绘制。该方法依赖于一个颜色二维数组来表达符号结构,虽然能够通过数组标记来表达和绘制虚线符号,但整个方法中只是针对固定地图比例尺的绘制,对于线宽的一致性问题完全没有涉及。而论文《一种基于屏幕的三维地图线状符号渲染方法》(刘君妍,陈雅茜,高亦远,等.《地球信息科学学报》,2018,20(8):1047-1054)提出了将矢量线要素映射成为纹理数据,通过纹理数据来绘制线;该方法主要是针对线要素与地形的融合,线要素的线宽处理明确是随着地图缩放而变化的。此外名称为“基于GPU的地图线形符号绘制方法及系统”(申请号201310125110.6)的中国专利,名为“基于GPU的宽度渐变线型地图符号绘制方法”(申请号201610015703.0)的中国专利,都是在分析GPU绘制矢量线要素难点的基础上,提出了用Shader着色器来绘制线符号的方法。但是这些方法都是针对固定比例尺的线符号绘制,当地图比例尺变化时,为了保持线宽不变,前述方法都需要重新三角化和绘制。反复不断的三角化对绘制效率具有明显的影响,由此造成了地图的缩放交互仍然存在效率瓶颈。因而,如何同时满足(1)随着地图比例尺缩放保持线宽一致,(2)矢量线要素不需要重新进行三角化,是数字地图制图领域一个亟待解决的问题。对于最经常使用的方形虚线符号而言,这种顾及线宽一致性的绘制需求在本质上依赖于CPU和GPU的协调工作。GPU的绘制是依赖于三角面片的,当一个矢量线被三角化为方形虚线符号后,GPU只能拿到三角形坐标和颜色,整个绘制是无状态的。如何将方形虚线符号的地图状态传递给GPU成为解决顾及线宽一致性绘制方形虚线符号的关键。
技术实现思路
本专利技术的目的是在GPU绘制环境下,针对方形虚线地图符号的线宽一致性绘制需求,提供一种能够在地图缩放过程中不改变线宽、不重新三角化的方形虚线地图符号绘制工艺。技术方案:一种顾及线宽一致性的矢量地图方形虚线符号绘制方法,包括下列步骤:步骤1、对矢量线要素的坐标序列进行初始化,设置以像素为单位的屏幕线宽,设置方形虚线的虚实比例值;步骤2、构建矢量线要素的世界坐标系和屏幕坐标系之间的转换规则,通过此规则将屏幕线宽转换为世界坐标系的线宽,根据此世界坐标系线宽:顺序遍历矢量线要素的每个坐标,以半个世界坐标系的线宽为单位,垂直于线走向分别向两侧进行扩张,连接相邻的扩张点生成三角形集合,其中每个三角形的每个顶点都具有沿线走向的U值和垂直线走向的V值,并且还具有一个缩放方向向量D值;步骤3、组装GPU着色器的状态协议:该状态协议包括两个层次,一个是顶点层,包括U值、V值、缩放方向D值,另一个是结构层,包括最大线宽M值、地图比例缩放S值、实部比例P1值、虚部比例P2值;步骤4、在CPU中获取初始的世界坐标系线宽、地图比例尺缩放系数、虚实比例值,并分别按照状态协议中的M值、S值、P1值、P2值传递到GPU中,由此在GPU着色器中解析状态协议中的U、V、D、M、S、P1、P2值,动态计算当前线宽在屏幕上需要绘制的像素位置,并完成绘制。进一步的,所述步骤2中沿线走向的U值是根据每个顶点沿着线要素的距离计算,其中起点扩张出来的两个顶点U值均为0,终点扩张出来的两个顶点U值均为整条线的长度除以线宽,其他点扩张出来的两个顶点U值均根据长度累积值除以线宽获得;垂直线走向的V值是根据每个顶点向两侧扩张的距离计算,线要素上的每个点,其扩张出来的两个顶点位于线走向左侧的V为1,位于右侧的0;顶点缩放方向的D值是一个二维向量,指明了扩张出来的每个顶点与原始点之间的连接方向,并且不是一个归一化的向量,D值二维向量的长度是根据扩张顶点与原始点之间的距离计算获得的。进一步的,所述步骤3中最大线宽M值是根据步骤2中计算获得的世界坐标系的线宽;地图比例缩放S值是随着地图比例尺缩放动态更新的比例值;实部比例P1值可以是任意大于等于1.0的浮点数,代表方形虚线符号中需要填充颜色的长度,在传递给状态协议之前需要进行线宽映射,即将原始的P1值与线宽相除得到新的P1值;虚部比例P2值可以是任意大于0.0的浮点数,代表方形虚线符号中不需要填充颜色(即间隔)的长度,在传递给状态协议之前需要进行线宽映射,即将原始的P2值与线宽相除得到新的P2值;状态协议按照U值、V值、D值、M值、S值、P1值、P2值进行组织,其中U值和V值是一维浮点数、D值是二维浮点数、M值和S值是一维浮点数、P1值和P2值是一维浮点数,将U值、V值、D值按序组织成四维向量,将M值、S值、P1值、P2值按序组织成四维向量,最终形成的状态协议由两个向量构成:U-V-D四维向量和M-S-P1-P2四维向量,顾及线宽一致性的矢量地图方形虚线符号绘制必须严格遵从此协议,在CPU和GPU之间进行消息传递时也必须严格依照此协议进行消息组装。和现有技术相比,本专利技术具有如下显著进步:本专利技术可以充分利用GPU硬件加速的绘制性能,突破GPU仅依靠坐标和颜色的无状态绘制局限,通过定制合理的状态协议,将矢量线的走向信息、线宽信本文档来自技高网
...

【技术保护点】
1.一种顾及线宽一致性的矢量地图方形虚线符号绘制方法,其特征在于,包括下列步骤:/n步骤1、对矢量线要素的坐标序列进行初始化,设置以像素为单位的屏幕线宽,设置方形虚线的虚实比例值;/n步骤2、构建矢量线要素的世界坐标系和屏幕坐标系之间的转换规则,通过此规则将屏幕线宽转换为世界坐标系的线宽,根据此世界坐标系线宽:顺序遍历矢量线要素的每个坐标,以半个世界坐标系的线宽为单位,垂直于线走向分别向两侧进行扩张,连接相邻的扩张点生成三角形集合,其中每个三角形的每个顶点都具有沿线走向的U值和垂直线走向的V值,并且还具有一个缩放方向D值;/n步骤3、组装GPU着色器的状态协议:该状态协议包括两个层次,一个是顶点层,包括U值、V值、缩放方向D值,另一个是结构层,包括最大线宽M值、地图比例缩放S值、实部比例P1值、虚部比例P2值;/n步骤4、在CPU中获取初始的世界坐标系线宽、地图比例尺缩放系数、虚实比例值,并分别按照状态协议中的M值、S值、P1值、P2值传递到GPU中,由此在GPU着色器中解析状态协议中的U值、V值、D值、M值、S值、P1值、P2值,动态计算当前线宽在屏幕上需要绘制的像素位置,并完成绘制。/n...

【技术特征摘要】
1.一种顾及线宽一致性的矢量地图方形虚线符号绘制方法,其特征在于,包括下列步骤:
步骤1、对矢量线要素的坐标序列进行初始化,设置以像素为单位的屏幕线宽,设置方形虚线的虚实比例值;
步骤2、构建矢量线要素的世界坐标系和屏幕坐标系之间的转换规则,通过此规则将屏幕线宽转换为世界坐标系的线宽,根据此世界坐标系线宽:顺序遍历矢量线要素的每个坐标,以半个世界坐标系的线宽为单位,垂直于线走向分别向两侧进行扩张,连接相邻的扩张点生成三角形集合,其中每个三角形的每个顶点都具有沿线走向的U值和垂直线走向的V值,并且还具有一个缩放方向D值;
步骤3、组装GPU着色器的状态协议:该状态协议包括两个层次,一个是顶点层,包括U值、V值、缩放方向D值,另一个是结构层,包括最大线宽M值、地图比例缩放S值、实部比例P1值、虚部比例P2值;
步骤4、在CPU中获取初始的世界坐标系线宽、地图比例尺缩放系数、虚实比例值,并分别按照状态协议中的M值、S值、P1值、P2值传递到GPU中,由此在GPU着色器中解析状态协议中的U值、V值、D值、M值、S值、P1值、P2值,动态计算当前线宽在屏幕上需要绘制的像素位置,并完成绘制。


2.根据权利要求1所述的顾及线宽一致性的矢量地图方形虚线符号绘制方法,其特征在于,所述步骤2中,沿线走向的U值根据每个顶点沿着线要素的距离计算获得,其中起点扩张出来的两个顶点U值均为0,终点扩张出来的两个顶点U值均为整条线的长度除以线宽,其它点扩张出来的两个顶点U值均为长度累积值除以线宽。


3.根据权利要求1所述的顾及线宽一致性的矢量地图方形虚线符号绘制方法,其特征在于,所述步骤2中,垂直线走向的V值根据每个顶点向两侧扩张的距离计算获得,线要素上的每个点,其扩张出来的两个顶点位于线走向左侧的...

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

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

1