地理信息系统三维管模型构建放样方法及装置与流程

文档序号:11155565阅读:757来源:国知局
地理信息系统三维管模型构建放样方法及装置与制造工艺

本申请涉及三维地理信息系统(GIS,Geography Information System)技术领域,特别地,涉及一种地理信息系统三维管模型构建放样方法及装置。



背景技术:

随着地理信息系统在社会中的普遍应用,三维场景的应用也越来越深入。其中三维管网占据很大一部分应用场景,三维管网包含了三维管点部分和三维管线部分。在市政规划建设中,对于地上地下的三维管点、三维管线的显示、管理、分析及应用等具有实用意义。

尽管一些三维系统产品或地理信息系统产品能够以三维管点模型显示的形式支持三维管网系统的展示,但是这些产品的三维管点源自模型,一般在建模软件中手工制作方式构建,然后将建模好的管点模型导入到场景中。这种构建管点的方式存在两个主要问题:一是管点模型的构建是在自己的局部坐标系中进行的,导入场景后还需要对其位置方向进行手工调整,以使得管点能与管线匹配。二是由于管线数据的采集存在的精度问题,与管点相接的管道夹角与标准值有差异,不能采用标准的多通(包括弯头、三通、四通等)模型与管线进行匹配,需要为每一种夹角角度来构建管点模型,大大增加了建模的工作量。

另外,对于三维管网数据来说,用户的数据来源往往是矢量点、线数据,如果采用模型的显示方式,无疑造成了数据冗余和额外的工作量,对于系统维护来说,也需要维护矢量点、线数据和三维管点模型两套数据。此外,在某些企业级应用场景中,管网数据非常密集,对这些密集管网进行渲染需要消耗大量硬件资源。最后,市面上的同类产品无法实现对三维管点参数化的自定义设置。

因此,无论是从技术上还是从成本的角度来看,如何实现一种数据一体化、可以自适应的管点符号系统,将是三维地理信息系统三维管线应用领域的技术技术人员迫切要解决的技术问题。



技术实现要素:

本申请提供一种地理信息系统三维管模型构建放样方法及装置,用于解决现有三维管点模型展示方案存在的上述技术问题。

本申请公开的一种地理信息系统三维管模型构建放样方法,所述地理信息系统的符号库中存储有三维管点符号,所述三维管点符号设置有场景自适应参数,所述方法包括:获取由矢量点数据和矢量线数据构成的三维几何网络拓扑数据;根据所述三维网络拓扑数据标识出的三维管点与三维管线之间的拓扑连通关系,找到与三维管点连通的三维管线;根据三维管线截面确定所述符号库中对应三维管点符号的自适应参数,并放样出所述三维管点。

优选的,所述三维管线的渲染显示方法具体包括:生成包括有管线截面上顶点相对位置信息的网格数据;以管段为单位对所述三维管线在不同位置的截面采用相应的变换矩阵重复对上述网格数据进行实例化渲染显示。

优选的,所述三维管点符号包括弯头符号和多通管点符号;所述网格数据包括完整截面管段网格和半截面管段网格,其中的完整截面管段网格用于渲染三维管线和弯头符号;半截面管段网格用于渲染三维管线和多通管点符号。

优选的,所述网格数据的生成方法具体为:以三维管线一个截面中心为原点,以管线走向为X轴,以截面上方向为Z轴建立局部三维直角坐标系;根据所述截面的形状和大小,确定截面上每个顶点在局部三维直角坐标系中的坐标Ps;所述三维管线在不同位置的截面对应的变换矩阵的生成方法具体为:根据三维几何网络拓扑数据确定当前截面的中心点在世界坐标系中的坐标,得到该中心点的平移矩阵Mt;根据当前截面中心点的世界坐标W1和沿走向方向的下一个截面中心点的世界坐标W2确定对应局部三维直角坐标系中X轴的管线走向方向向量其中,根据和世界坐标系中的上方向向量确定对应局部三维直角坐标系中Y轴的方向向量其中,将向量和单位化后生成的三个单位向量组成的矩阵Mrot作为旋转矩阵;将所述平移矩阵Mt与旋转矩阵Mrot的乘积作为当前截面的变换矩阵。

优选的,所述弯头符号的场景自适应参数包括端部厚度和转角细分数n;n为大于1的整数;所述弯头符号由截面平滑过渡的n个过渡管段组成;第一个过渡管段的第一截面与弯头一端的管线截面衔接,最后一个过渡管段的第二截面与弯头另一端的管线截面衔接。

优选的,所述过渡管段的截面中心线在与弯头两端的管线中心线都相切的圆的圆弧上。

优选的,所述多通管点符号包括同径管点符号、变径管点符号、异面管点符号和异面方管符号;所述多通管点符号由多个半管段组成,每个半管段由所述多通管点的中心点以及与该中心点相连的管线方向确定。

本申请公开的一种地理信息系统三维管模型构建放样装置,所述地理信息系统的符号库中存储有三维管点符号,所述三维管点符号设置有场景自适应参数,所述装置包括:矢量数据获取模块,用于获取由矢量点数据和矢量线数据构成的三维几何网络拓扑数据;管线查找模块,用于根据所述三维网络拓扑数据标识出的三维管点与三维管线之间的拓扑连通关系,找到与三维管点连通的三维管线;渲染显示模块,用于根据三维管线截面确定所述符号库中对应三维管点符号的自适应参数,并放样出所述三维管点。

优选的,所述渲染显示模块具体包括:网格数据生成子模块,用于生成包括有管线截面上顶点相对位置信息的网格数据;实例化渲染子模块,用于以管段为单位对所述三维管线在不同位置的截面采用相应的变换矩阵重复对上述网格数据进行实例化渲染显示。

优选的,所述三维管点符号包括弯头符号和多通管点符号;所述网格数据包括完整截面管段网格和半截面管段网格,其中的完整截面管段网格用于渲染三维管线和弯头符号;半截面管段网格用于渲染三维管线和多通管点符号。

与现有技术相比,本申请具有以下优点:本申请优选实施例通过标识有三维管点、三维管线连通关系的三维几何网络拓扑数据,找到与三维管点连通的三维管线,并根据三维管线的截面自适应地放样出三维管点符号,实现自适应三维管点符号的可定制、可复用,能够省去人工建模以及匹配三维管点与三维管线等工作,便于数据维护,节省人力物力成本。三维管点和三维管线可通过三维几何网络拓扑数据自动生成,并可实现快速配置三维管网场景。在进一步的优选实施例中,采用实例化技术批量绘制自适应管点符号,内存、CPU、显存等资源占用少,可承载海量的三维管网数据。

附图说明

附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本申请地理信息系统三维管模型构建放样方法一实施例的流程图;

图2为本申请地理信息系统三维管模型构建放样装置一实施例的结构示意图;

图3-1为本申请三维管点符号弯头的自适应参数设置界面示意图;

图3-2和3-3分别为本申请三维管线完整截面管段和半截面管段示意图;

图4为本申请三维管线的管段截面及局部坐标系关系示意图;

图5-1为本申请弯头符号构建过程中过渡截面的平滑拐点示意图;

图5-2为本申请弯头的管线拐点的平面投影效果图;

图6-1为本申请多通管中心点划分示意图;

图6-2为本申请多通管半管对的平面投影效果图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。

参照图1,示出了本申请地理信息系统三维管模型构建放样方法一实施例的流程,所述地理信息系统的符号库中存储有三维管点符号,所述三维管点符号设置有场景自适应参数。以弯头符号为例,其自适应参数可以采用图3-1所示的方式修改预置,具体参数可以包括弯头端部的厚度和转角细分数n(n为大于1的整数)。

本方法实施例具体包括:

步骤S101:获取由矢量点数据和矢量线数据构成的三维几何网络拓扑数据。

在具体实施时,可以对多种管网采用分层次表示的方式,其中,用一个网络数据集表示一种类型的管网信息,这种数据量冗余少,又包含拓扑信息,可进行后续的空间网络分析,如爆管分析、连通性分析等。每个管线网络数据集由线子数据集和节点子数据集构成。线子数据集表示管线对象,节点子数据集表示管点对象,如弯头、三通、四通、阀门等。

步骤S102:根据所述三维网络拓扑数据标识出的三维管点与三维管线之间的拓扑连通关系,找到与三维管点连通的三维管线。

步骤S103:根据三维管线截面确定所述符号库中对应三维管点符号的自适应参数,并放样出所述三维管点。

在进一步的优选实施例中,本申请根据管线实际上是由大体上相似而位置、方向略有不同的管段组成的这一特点,采用实例化技术批量绘制自适应管点符号,减少对内存、CPU、显存等系统资源的占用,使得本申请方案可承载海量的三维管网数据。在实例化过程中,将管线的线几何对象上两个截面中心点之间的线段对应的管段作为一个渲染单位,每个管段由两个截面构成,只要能够确定管段的两个截面上顶点的位置,就可以确定一整条管线。

实例化渲染是指在不同的位置使用不同的参数对一个网格数据进行多次渲染。其中:所有实例共享一个顶点缓冲区,顶点缓冲区用于存储将被多次实例化的单一网格数据;实例缓冲区用来存储每个对象的实例数据,包含多种信息,比如变换矩阵、颜色数据或者光照数据等。渲染过程中结合顶点缓冲区和实例缓冲区来进行实例渲染。

为了适应弯头管点和多通管点符号的实例化渲染,上述网格数据采用图3-2所示的完整截面管段网格形式和图3-3所示的半截面管段网格形式,其中的完整截面管段网格用于渲染三维管线和弯头符号;半截面管段网格用于渲染三维管线和多通管点符号。

不同管段实例之间的区别在于两端截面的位置、放缩大小、方向不同,这些参数可用两个变换矩阵MBottom和MTop来表示。将两个矩阵的各三行三列共18个浮点数存储到实例缓冲区中,而管段的网格数据存储到顶点缓冲区中,此外在顶点缓冲区的顶点属性中还需要存储这个顶点属于前后哪一个矩阵。最后在顶点着色器中将静态网格的顶点与矩阵相乘就可以计算出管线的顶点位置。

在具体实施时,上述网格数据的生成方法具体包括:

以三维管线一个截面中心为原点,以管线走向为X轴,以截面上方向为Z轴建立局部三维直角坐标系,如图4所示;

然后,根据所述截面的形状和大小,确定截面上每个顶点在局部三维直角坐标系中的坐标Ps

相应的,三维管线在不同位置的截面对应的变换矩阵的生成方法具体包括:

根据三维几何网络拓扑数据确定当前截面的中心点在世界坐标系中的坐标,得到该中心点的平移矩阵Mt

根据当前截面中心点的世界坐标W1和沿走向方向的下一个截面中心点的世界坐标W2确定对应局部三维直角坐标系中X轴的管线走向方向向量其中,

根据和世界坐标系中的上方向向量(对应局部坐标系中的Z轴)确定对应局部三维直角坐标系中Y轴的方向向量其中,另外,对于纵向管,其“上”方向与走向是相同或相反的,此时,可以使用前一个截面计算出的作为当前截面的或者指定与走向垂直的任意方向作为

将向量和单位化后生成的三个单位向量组成的矩阵Mrot作为旋转矩阵;

将所述平移矩阵Mt与旋转矩阵Mrot的乘积作为当前截面的变换矩阵。

利用上述平移矩阵Mt与旋转矩阵Mrot,可以计算获得Ps在世界坐标系中的坐标Pw:Pw=Ps·Mrot·Mt

通过上述手段,不仅能够使截面与管线走向垂直,并且能够使管线截面的上方向与世界坐标系中的上方向一致。

下面具体说明本申请弯头模型符号的构建方法。

弯头位于管线拐点处,构建弯头相当于对管线拐点进行平滑处理。对拐点前后相连的管段的截面的旋转矩阵进行处理,插入若干个截面平滑过渡的管段,使得前后两个截面能够衔接上,并且原始的两个管段需要向后退第一段距离,以与平滑管段相接,如图5-1所示。其中,拐点平滑出的截面矩阵可以采用如下算法计算:

将拐点相接的两条管线投影到两条线所在的平面中。在平面中做一个圆与两条线相切,如5-2图所示,弧段AB即为过渡管段截面中心线所在的位置,在这个弧段上取的过渡截面点越多,则拐点越平滑。而切点A到拐点O的长度即管线截面需要退后的长度M。由圆的半径不能大于管线宽度W的约束,可以得到M=tanθ*W。

将向量OA记为向量OB记为则通过以下方法可以求出圆心坐标(Xc,Yc,Zc)。

其中,表示向量的y分量。

由圆心坐标(Xc,Yc,Zc),可以进而通过简单的数学运算得出圆弧上插入的过渡截面的位置。

本申请多通管点符号可以包括同径管点符号、变径管点符号、异面管点符号、异面方管符号等;在构建多通管点模型符号时,可以采用由多个半管段组成的方式,其中每个半管段由所述多通管点的中心点以及与该中心点相连的管线方向确定,如图6-1所示。

上述半管段也称为“半管对”(HalfPipePair)。其结构如下所示:

StructHalfPipePair

{

Vector3FirstPt;

Vector3CenterPt;

Vector3SecondPt

}

可以定义半管对是由管线X>0一侧的截面构成的,其走向为FirstPt→CenterPt→SecondPt。

通过以下算法找到组成多通管点所需要的半管对:

1)遍历每两个管线上的点A、B,计算它们与中心点O构成的平面P;

2)遍历除A、B外的其他管线点C,计算C点投影到平面P上的位置Cp,以布尔值needAtoB和needBtoA记录是否需要A→O→B的半管对和B→O→A的半管对,初始值为true;

3)判断Cp与∠AOB的关系,如果Cp落在∠AOB内侧,则needAtoB=false;如果Cp落在∠AOB外侧,则needBtoA=false;

4)遍历完成A、B外的其他点后,如果needAtoB为true则记录半管对A→O→B,如果needBtoA为true则记录半管对B→O→A。

一个半管对可分解为两个管段单元,与管线相接的截面的矩阵计算可以参照上述管线模型的方式构建。两个管段交接面的矩阵计算如以下:

如图6-2所示,两管段的交接面为∠AOB的角平分线,走向为可以参照管线模型构建求出旋转矩阵。

设∠AOB的角度为α,AOB平面的法向量为与上方向的夹角为β。则可计算出交界面上的截面在局部坐标系中的Y和Z轴的放缩比例ScaleY和ScaleZ,以及放缩矩阵Mscale。半管段上的顶点位置为Pw=Ps·Mscale·Mrot·Mt

关于颜色数据的渲染,可以采用以下形式的OpenGL着色语言(GLSL,OpenGL Shading Language)的顶点着色器代码。

attribute vec4vertex;

attribute boolisTop;//当前顶点是否属于Top截面,存在静态网格顶点属性

attribute mat3topMatrix;//Top截面矩阵,实例化缓冲区中

attribute mat3bottomMatrix;//Bottom截面矩阵,实例化缓冲区中

void main(void)

{

mat4worldMatrix;

if(isTop){

worldMatrix=topMatrix;

}

else{

worldMatrix=bottomMatrix;

}

worldMatrix[3]=vec4(0,0,0,1);

vec4worldPos=vertex*worldMatrix;

gl_Position=gl_ModelViewProjectionMatrix*worldPos;

}

经测试,采用实例化渲染方式在帧率、CPU占用、显存占用上均有大幅度性能提升,使得海量三维管线场景性能更加稳定、流畅。

对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

本申请还公开了一种在其上记录有用于执行上述方法的程序的计算机可读记录介质。所述计算机可读记录介质包括配置为以计算机(以计算机为例)可读的形式存储或传送信息的任何机制。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。

参照图2,示出了本申请地理信息系统三维管模型构建放样装置一实施例的结构框图,所述地理信息系统的符号库10中存储有三维管点符号,所述三维管点符号设置有场景自适应参数,所述装置包括:

矢量数据获取模块11,用于获取由矢量点数据和矢量线数据构成的三维几何网络拓扑数据;

管线查找模块12,用于根据所述三维网络拓扑数据标识出的三维管点与三维管线之间的拓扑连通关系,找到与三维管点连通的三维管线;

渲染显示模块13,用于根据三维管线截面确定所述符号库中对应三维管点符号的自适应参数,并放样出所述三维管点。

在进一步的优选实施例中,渲染显示模块13具体包括:

网格数据生成子模块,用于生成包括有管线截面上顶点相对位置信息的网格数据;

实例化渲染子模块,用于以管段为单位对所述三维管线在不同位置的截面采用相应的变换矩阵重复对上述网格数据进行实例化渲染显示。

具体实施时,所述三维管点符号可以包括弯头符号和同径管点符号、变径管点符号、异面管点符号、异面方管符号等多通管点符号。上述的网格数据具体包括完整截面管段网格和半截面管段网格,其中的完整截面管段网格用于渲染三维管线和弯头符号;半截面管段网格用于渲染三维管线和多通管点符号。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上对本申请所提供的一种地理信息系统三维管模型构建放样方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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