一种基于模板阴影技术的线标绘贴地方法及系统与流程

文档序号:24489181发布日期:2021-03-30 21:14阅读:64来源:国知局
一种基于模板阴影技术的线标绘贴地方法及系统与流程

本发明涉及地理信息系统技术领域,具体涉及一种基于模板阴影技术的线标绘贴地方法及系统。



背景技术:

空天大数据可视化技术主要解决以统一时空框架为基础,对遥感数据、地形数据、gis数据、三维模型、动态数据等各类空天大数据进行综合显示、量测、标绘、分析等内容。在大数据态势显示方面,多用图形标绘进行展示。

目前,图形标绘多采用主流数字地球引擎作为基础框架,这决定了标绘显示效果,而对于矢量标绘尤为明显。主流引擎中所提供的矢量数据与地形结合的方法主要有两种,一是将矢量数据转换成纹理,利用纹理中的颜色替换对应地形上的像素颜色,二是通过细分矢量数据,采样对应地理坐标的高程数据,通过修改细分顶点的高程,将态势矢量拟合到地形上。

这两种方法的问题在于,利用纹理的方法当地球缩放较近时,沿着边界产生明显的锯齿,可视化效果不佳。这可以通过制作更大的纹理来解决,但纹理不可以过大,过大容易导致内存占用过高,同时地图影像精度越高,需要的纹理也越精细;而细分矢量数据的方法,其地形拟合程度的高低依赖于细分顶点的多少,细分顶点越多,则拟合程度越好,但顶点计算则越耗时,在大数据量的态势可视化需求下,这一类方法在效率上难以达到要求。



技术实现要素:

本发明的目的在于提出一种基于模板阴影技术的线标绘贴地方法及系统。

实现本发明目的的技术解决方案为:一种基于模板阴影技术的线标绘贴地方法,包括:

获取矢量标绘所有顶点,并筛查去除重合顶点,得到去重后顶点集合;

基于所述去重后顶点集合,将每个顶点沿着矢量线前进方向的两侧延长,得到一组原始扩张点集合,闭合扩张点得到原始线标绘多边形扩张平面;

基于所述原始线标绘多边形扩张平面,对所有顶点进行去交叉优化,得到去交叉优化后多边形扩张平面顶点集合;

基于去交叉优化后多边形扩张平面顶点集合,进行轮廓提取和排序,完成阴影体构建;

基于所述阴影体,进行两次渲染,完成贴地矢量标绘。

进一步的,所述获取矢量标绘所有顶点,并筛查去除重合顶点,得到去重后顶点集合,具体方法为:

步骤1.1,检查组成矢量标绘的所有顶点的坐标,若有相邻两点重合,即坐标相同,则从这两个重合点中选取任意一个删除,这一步即完成筛查去除重合顶点;

步骤1.2,完成上述筛查去除重合顶点步骤后,对剩余矢量标绘的顶点组成的图形,按照图形是否闭合,分两种情况处理,若图形首尾顶点不闭合,则不做处理;若图形首尾顶点闭合,则进行回溯截取处理,从闭合图形尾端顶点沿着上一个顶点的方向回退不超过上一段连线长度的距离,截取并将尾端顶点移至该处。

更进一步的,步骤1.2中,对于上述回溯截取处理,设最后一段顶点线段长度为d,则回退长度应满足:不超过线段长度d,且跨越地理距离的经度与纬度均不超过两度。

进一步的,所述基于所述去重后顶点集合,将每个顶点沿着矢量线前进方向的两侧延长,得到一组原始扩张点集合,闭合扩张点得到原始线标绘多边形扩张平面,具体方法为:

步骤2.1,将顶点坐标高度提升到当前坐标下地形高程的高度值以上;

步骤2.2,细分线标绘顶点间线段,使相邻两个顶点之间经纬度分别相差不超过两度;

步骤2.3,从线标绘一端起依次取顶点,做一个经过该顶点以及下一个顶点连线即主轴的平面,该平面垂直地面;

步骤2.4,对于所做平面,分别从两顶点延伸出垂直该平面的垂线,根据所需宽度截取垂线段,那么每条垂线段的端点就是扩张形成的新顶点;

步骤2.5,顺次连接两个顶点和新扩张的四个顶点,形成两个四边形;

步骤2.6,顺次对线标绘的每组顶点做一次扩张,得到的新的四边形组成原始线标绘多边形扩张平面。

进一步的,所述基于所述原始线标绘多边形扩张平面,对所有顶点进行去交叉优化,得到去交叉优化后多边形扩张平面顶点集合,具体方法为:

步骤3.1,顺次选取线标绘顶点,如果为起点时,则不做处理,继续选择下一个顶点p1;

步骤3.2,沿前进反方向,取顶点p1前一个相邻顶点p0;

步骤3.,3,在p0处做垂线l0,l0垂直于经过线段p0p1的垂直于地面的平面,l0长度等于扩张宽度;

步骤3.4,从l0扩张出的另一端点为q0,在q0出做射线s0垂直于l0,方向与向量同向;

步骤3.5,沿前进方向,取p1的下一个相邻顶点p2;

步骤3.6,在p2处做垂线段l1,l1垂直于经过线段p1p2的垂直于地面的平面,l1长度等于扩张宽度;

步骤3.7,从l1扩张出的另一端点为q1,在q1处做射线s1垂直于l1,其方向与向量反向;

步骤3.8,射线s0与s1的交点即为顶点p1的扩张点,至此,顶点p1的去交叉优化处理完成,接下来,选取线标绘中顶点p1的下一个相邻顶点p2,对p2做步骤3.2至步骤3.7所述去交叉优化处理,处理完成后,继续顺次选取下一个相邻顶点,做去交叉优化处理,直至选取到线标绘最后一个顶点为止,对最后一个顶点不做处理,完成所有顶点的去交叉优化处理;

步骤3.9,若射线s0与s1没有交点,则线标绘需从顶点p1处分为两部分点集,从起始顶点直至顶点p1组成集合为a,a包含p1与起始顶点之间所有点和对应的扩张出的顶点,从顶点p1直至最后一个顶点组成集合为b,b包含p1与最后一个顶点之间所有点和对应的扩张出的顶点,集合a中顶点可独立建立阴影体,集合b中顶点需再次经过去交叉优化处理直到最后一个顶点扩张完成,得到去交叉优化后多边形扩张平面顶点集合。

进一步的,所述基于去交叉优化后多边形扩张平面顶点集合,进行轮廓提取和排序,完成阴影体构建,具体方法为:

步骤4.1,确定光源方向,一般光源方向垂直于扩张平面并指向地面的反方向;

步骤4.2,依次取扩张平面中的一条线段,求得线段两侧多边形面的法线n1、n2;

步骤4.3,将光源向量分别与法线n1、n2求夹角余弦a1、a2,若a1、a2同号则该线段不是轮廓边,若异号则该线段是轮廓边,加入轮廓线段集合h;

步骤4.4,取轮廓线段集合h中一条轮廓边c0c1,并将集合h中删除c0c1得到子集h1;

步骤4.5,在集合h1中依次选取轮廓边与c0c1较,若选取线段r0r1的起点r0与c1重合,则该线段为c0c1的下一段连接线,此时对照线段换为r0r1,集合h1中删除线段r0r1,得到子集h2,再在h2中选取线段与r0r1比较直至所有线段排序完成;若r0不与c1重合,则该线段不是c0c1的下一段连接线,则重新在集合h1中选取轮廓边重复上述比较方法,直至排序完成;

步骤4.6,从排序后的轮廓边集合h中依次选取一条轮廓边c0c1;

步骤4.7,分别将顶点c0、c1沿光源方向的反方向朝向地面拉伸至地下得到对应顶点d0、d1;

步骤4.8,按照c0、d0、d1、c1的顺序将四个顶点插入到阴影体顶点集合中,直至所有轮廓边完成向下拉伸;

步骤4.9,对去交叉优化后多边形扩张平面顶点集合进行多边形绘制,得到扩张形成多边形平面,将这一个平面作为阴影体的上底面;

步骤4.10,对拉伸至地面的顶点进行多边形绘制,得到一个新的多边形平面,将其翻转使其正面朝下,为阴影体的下底面;

步骤4.11,对阴影体顶点集合中四元顶点组进行四边形绘制,作为阴影体侧面;

步骤4.12,完成阴影体的整体绘制工作,此时的阴影体是一个封闭的三维实体。

进一步的,所述基于所述阴影体,进行两次渲染,完成贴地矢量标绘,具体方法为:

步骤5.1,定义多边形顶点逆时针绘制的一面为正面,顺时针绘制的一面为背面,设定所有像素的模板值为0;

步骤5.2,对阴影体执行第一遍渲染,包括深度测试和模板检测,对于组成阴影体的多边形的背面,当深度测试失败时该像素的模板值加一,对于组成阴影体的多边形的正面,当深度测试失败时该像素的模板值减一;

步骤5.3,对阴影体执行第二遍渲染,包括模板测试、颜色缓存和深度测试,保留所有模板值不为0的像素,去除阴影体与地形重叠部分,进行颜色渲染,从而完成线标绘贴地渲染过程。

进一步的,在对每个顶点进行扩张的同时,进行去交叉优化。

一种基于模板阴影技术的线标绘贴地系统,包括:

重合点筛查模块,用于获取矢量标绘所有顶点,并筛查去除重合顶点,得到去重后顶点集合;

线标绘扩张模块,用于基于所述去重后顶点集合,将每个顶点沿着矢量线前进方向的两侧延长,得到一组原始扩张点集合,闭合扩张点得到原始线标绘多边形扩张平面;

去交叉优化模块,用于基于所述原始线标绘多边形扩张平面,对所有顶点进行去交叉优化,得到去交叉优化后多边形扩张平面顶点集合;

阴影体构建模块,用于基于去交叉优化后多边形扩张平面顶点集合,进行轮廓提取和排序,完成阴影体构建;

贴地线标绘模块,用于基于所述阴影体,进行两次渲染,完成贴地矢量标绘。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的线标绘贴地方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的线标绘贴地方法。

本发明与现有技术相比,其显著优点为:1)贴地线标边缘无锯齿,极近距离观察没有模糊现象;2)贴地精度与影像精度无关,不会因低精度影像底图导致低精度的贴地现象。

附图说明

图1是本发明基于模板阴影技术的线标绘贴地方法的流程图;

图2是传统纹理贴地方法和本发明方法的效果对比图。

图3是将原始线标绘各个顶点提升至地形高程之上的前后效果对比图。

图4是线标绘顶点扩张出新顶点的效果图。

图5是线标绘顶点扩张出新顶点构成扩张多边形的效果图。

图6是线标绘对扩张顶点实施去交叉优化的过程示意图。

图7是线标绘扩张平面确定光源方向的示意图。

图8是确定主轴两侧扩张平面法线方向的示意图。

图9是基于线标绘扩张平面构建的阴影体的示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。

为了解决目前主流三维数字地球引擎中线标绘贴地存在锯齿边缘的模糊效果和插值拟合的低效率问题,本发明从图形阴影角度提供一种基于模板阴影技术的线标绘贴地方法。如图1所示,具体实施步骤如下:

步骤一:重合点筛查

1.1,检查组成矢量标绘的所有顶点的坐标,若有相邻两点重合,即坐标相同,则从这两个重合点中选取任意一个删除,这一步即完成筛查去除重合顶点。

1.2,完成上述筛查去除重合顶点步骤后,对剩余矢量标绘的顶点组成的图形,按照图形是否闭合,分两种情况处理。若图形首尾顶点不闭合,则不做处理。若图形首尾顶点闭合,采取回溯截取方法进行处理,其原理为,从闭合图形尾端顶点沿着上一个顶点的方向回退不超过上一段连线长度的距离,截取并将尾端顶点移至该处。

对于上述回溯截取方法,本发明还提出一种策略。设最后一段顶点线段长度为d,则回退长度应满足:不超过线段长度d,且跨越地理距离的经度与纬度均不超过两度。

步骤二:线标绘扩张

2.1,将顶点坐标高度提升到当前坐标下地形高程的高度值以上,如图3所示。

2.2,细分线标绘顶点间线段,使相邻两个顶点之间经纬度分别相差不超过两度。

2.3,从线标绘一端起依次取顶点,做一个经过该顶点以及下一个顶点连线(即主轴)的平面,该平面垂直地面。假设有abcd四个顶点,依次取a、b、c、d,分别做经过ab、bc、cd且垂直地面的平面。

2.4,对于所做平面,分别从两顶点延伸出垂直该平面的垂线,根据所需宽度截取垂线段,那么每条垂线段的端点就是扩张形成的新顶点,如图4所示。沿两顶点前进方向的两侧,做垂直于顶点连线构成的平面的垂线,截取垂线段得到4个新的顶点a0、a1、b0、b1。

2.5,顺次连接两个顶点和新扩张的四个顶点,形成两个四边形,分别位于端点连线的两侧。如图5所示,形成abb0a0和aa1b1b两个四边形,分布在主轴ab两侧。

2.6,依照该方法,顺次对线标绘的每组顶点做一次扩张得到新的四边形,所有四边形连接将组成原始线标绘多边形扩张平面。

步骤三:去交叉优化

拐角处顶点的扩张易出现两种特殊情况:一是因角度过小,该顶点与上一个顶点的连线和该顶点与下一个顶点的连线经过扩张后造成交叉重叠;二是因扩张宽度过大,相邻顶点的扩张顶点越过了相邻边的边长,导致扩张出的两个相邻四边形交叉重叠。针对以上两种情况,提出如下所述解决方案。

3.1,顺次选取线标绘顶点,如果为起点时,则不做处理,继续选择下一个顶点p1,并沿前进反方向,取顶点p1前一个相邻顶点p0。

3.2,在p0处做垂线l0,l0垂直于经过线段p0p1且垂直于地面的平面,l0长度等于扩张宽度。

3.3,从l0扩张出的另一端点为q0,在q0出做射线s0垂直于l0,方向与向量同向。

3.4,沿前进方向取p1的下一个相邻顶点p2。

3.5,在p2处做垂线段l1,l1垂直于经过线段p1p2的垂直于地面的平面,l1长度等于扩张宽度。

3.6,从l1扩张出的另一端点为q1,在q1处做射线s1垂直于l1,其方向与向量反向。

步骤3.7,射线s0与s1的交点即为顶点p1的扩张点,如图6所示。至此,顶点p1的去交叉优化处理完成。接下来,选取线标绘中顶点p1的下一个相邻顶点p2,对p,做步骤3.2至步骤3.7所述去交叉优化处理,处理完成后,继续顺次选取下一个相邻顶点,做去交叉优化处理,直至选取到线标绘最后一个顶点为止,对最后一个顶点不做处理。完成所有顶点的去交叉优化处理。

步骤3.8,若射线s0与s1没有交点,则线标绘需从顶点p1处分为两部分点集,从起始顶点直至顶点p1组成集合为a,a包含p1与起始顶点之间所有点和对应的扩张出的顶点,从顶点p1直至最后一个顶点组成集合为b,b包含p1与最后一个顶点之间所有点和对应的扩张出的顶点,集合a中顶点可独立建立阴影体,集合b中顶点需再次经过“去交叉优化处理”直到最后一个顶点扩张完成,得到去交叉优化后多边形扩张平面顶点集合。

上述方案中,在全部顶点扩张完成之后进行去交叉优化。为了提升计算效率,还可以在扩张的同时,进行去交叉判断和优化。

步骤四:阴影体构建

4.1,确定光源方向,一般光源方向垂直于多边形扩张平面并指向地面的反方向,如图7所示。

4.2,依次取扩张平面中的一条主轴线段,求得主轴线段两侧多边形面的法线n1、n2,如图8所示。

4.3,将光源向量分别与法线n1、n2求夹角余弦a1、a2,若a1、a2同号则该线段不是轮廓边,若异号则该线段是轮廓边,加入轮廓线段集合h。

4.4,取轮廓线段集合h中一条轮廓边c0c1,并将集合h中删除c0c1得到子集h1。

4.5,在集合h1中依次选取轮廓边与c0c1较,若选取线段r0r1的起点r0与c1重合,则该线段为c0c1的下一段连接线,此时对照线段换为r0r1,集合h1中删除线段r0r1,得到子集h2,再在h2中选取线段与r0r1比较直至所有线段排序完成;若r0不与c1重合,则该线段不是c0c1的下一段连接线,则重新在集合h1中选取轮廓边重复上述比较方法,直至排序完成。

4.6,从排序后的轮廓边集合h中依次选取一条轮廓边c0c1。

4.7,分别将顶点c0、c1沿光源方向的反方向朝向地面拉伸至地下得到对应顶点d0、d1。

4.8,按照c0、d0、d1、c1的顺序将四个顶点插入到阴影体顶点集合中,直至所有轮廓边完成向下拉伸。

4.9,对去交叉优化后多边形扩张平面顶点集合进行多边形绘制,得到扩张形成多边形平面,将这一个平面作为阴影体的上底面。

4.10,对拉伸至地面的顶点进行多边形绘制,得到一个新的多边形平面,将其翻转使其正面朝下,为阴影体的下底面。

4.11,对阴影体顶点集合中四元顶点组进行四边形绘制,作为阴影体侧面。

4.12,完成阴影体的整体绘制工作,此时的阴影体是一个封闭的三维实体,如图9所示。

步骤五:使用模板阴影绘制贴地线标绘

5.1,定义多边形顶点逆时针绘制的一面为正面,顺时针绘制的一面为背面,设定所有像素的模板值为0;

5.2,对阴影体执行第一遍渲染,包括深度测试和模板检测,对于组成阴影体的多边形的背面,当深度测试失败时该像素的模板值加一,对于组成阴影体的多边形的正面,当深度测试失败时该像素的模板值减一;

5.3,对阴影体执行第二遍渲染,包括模板测试、颜色缓存和深度测试,保留所有模板值不为0的像素,去除阴影体与地形重叠部分,进行颜色渲染,从而完成线标绘贴地渲染过程。

本发明还提出一种基于模板阴影技术的线标绘贴地系统,包括:

重合点筛查模块,用于获取矢量标绘所有顶点,并筛查去除重合顶点,得到去重后顶点集合;

线标绘扩张模块,用于基于所述去重后顶点集合,将每个顶点沿着矢量线前进方向的两侧延长,得到一组原始扩张点集合,闭合扩张点得到原始线标绘多边形扩张平面;

去交叉优化模块,用于基于所述原始线标绘多边形扩张平面,对所有顶点进行去交叉优化,得到去交叉优化后多边形扩张平面顶点集合;

阴影体构建模块,用于基于去交叉优化后多边形扩张平面顶点集合,进行轮廓提取和排序,完成阴影体构建;

贴地线标绘模块,用于基于所述阴影体,进行两次渲染,完成贴地矢量标绘。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的线标绘贴地方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的线标绘贴地方法。

实施例

为验证本发明方案的有效性,在一台配置有intel(r)coretmi7-67003.4ghz处理器,32gb内存,nvidiageforcegtx10606gb显卡的计算机上,进行如下仿真实验。

本实施例数字地球引擎采用开源osgearth2.8.0版本,带有数字高程模型的多分辨率地形。在同一地理位置,分别使用纹理贴地和本发明方案贴地,对一条从东经10度北纬40度至东经120度北纬40度,总共插值110个顶点的矢量标绘进行贴地绘制,矢量线宽度为4000米,其绘制效果如下表1所示,显示效果如图2所示。

表1.实施方案绘制效果对比

可以看出,在相同视距下观察贴地线标绘,采用纹理贴地方式的线标绘,具有明显的锯齿边缘,采用本文所述发明贴地方案的线标绘,边缘平整光滑,没有锯齿现象。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1