一种基于空间数据库的二三维管网数据组织及显示方法与流程

文档序号:18401031发布日期:2019-08-09 23:53阅读:201来源:国知局
本发明涉及管网数据组织
技术领域
:,尤其涉及一种基于空间数据库的二三维管网数据组织及显示方法。
背景技术
::地下管线承担着传输信息、传输能量和排送资源的任务,是城市的生命线。传统的管线管理模式一般为基于cad或gis的二维管线管理,这种方式能够描述管线的基本属性信息和空间分布信息,但对管线的空间立体特征和相互之间的空间交错关系等难以精确直观地描述。随着应用需求的升级,三维地下管线技术已越来越多地应用到各类地下管线信息系统中。加入三维管线,能够提高管线的立体感和逼真感,有利于全面、真实反映地下综合管线的分布状况,为政府高效赶工、应对紧急事故、城市可持续发展提供辅助决策功能。然而,三维空间数据模型数据本身表达及分析技术尚不成熟,地下管线的相关三维分析与应用是依托二维空间数据模型来进行的,构建管线三维数据的工作模式通常是根据二维管线数据属性里存储的埋深、高程、材质、管径等数据以及相关特征附属物的信息,基于某种自动化三维建模工具实现管线数据的三维建模。管网数据的三维显示也是一个十分复杂的过程,主流三维场景主要在三维空间中构建节点,节点根据裁剪调度动态加载和卸载模型文件,以保证程序内存、显卡的有限调用。由于三维开发的复杂性,三维平台一般都会有一种三维数据管理方式,也可以称为三维数据库,主要用于记录三维节点的空间位置、姿态(缩放系数和旋转角度)以及动态调度的模型文件的地址。由于管网建模计算的复杂性、三维平台显示调度的复杂性,现有技术一般将两个流程分开,即原管网的二维空间数据通过空间数据库或shp文件存储管理,三维管线模型文件则通过skyline或citymaker等三维平台存储管理,在进行管线三维可视化展示时,调用三维管线模型数据,而在进行具体管线信息管理应用时,仍调用二维管线数据,这种数据库设计会导致管线数据存在冗余,并且要保证管线更新前后数据的一致性比较困难,管线查询定位、分析展示需要通过管线id关联实现,不能在底层实现真正二三维存储一体化。技术实现要素:有鉴于此,本发明提供了一种基于空间数据库的二三维管网数据组织及显示方法,利用空间数据库对二维平台的开放性,同时解决三维显示平台对管网数据建模与显示的复杂性,在底层实现真正二三维存储一体化。本发明提供一种基于空间数据库的二三维管网数据组织及显示方法,包括以下步骤:管网数据组织:a1、收集外业调查的管网数据,将所述管网数据统计至管点表和管线表中;进一步地,所述管点表包括管点号、x坐标、y坐标、地面高程、埋深、井深、组分类型、几通、设备编号、附属物、特征、附属物规模、附属物类型编码、构筑物编码、管点材质、修建年代、探查时间等属性字段;所述管线表包括管段编码、起点点号、终点点号、混接编码、管线类型、埋设方式、起点地面高程、终点地面高程、起点外顶高程、终点外顶高程、起点内底高程、终点内底高程等属性字段。进一步地,所述管点表和所述管线表的拓扑关系通过所述管线表的起点点号、终点点号关联所述管点表的管点号来建立。a2、将步骤a1中的管点表及管线表中的数据导入空间数据库,创建两个空间数据图层,即管点图层和管线图层;进一步地,所述管点图层使用管点表中的x坐标和y坐标构建几何字段,并将管点表中的其他属性保留;所述管线图层使用管线表中的起点点号和终点点号关联管点表来获取管线起点和终点的x坐标和y坐标,从而根据这些坐标构建管线的几何字段,并将管线表中的其他属性保留。索引构建与节点加载:b1、获取空间数据库中管网的空间范围;进一步地,所述空间范围为管点的几何要素、管线的几何要素所构成的矩形包围盒的并集。b2、将所述管网的空间范围划分成4l个网格,l为大于0的自然数,并构建l等级的四叉树进行网格索引;b3、在三维引擎中使用lod方式加载步骤b2中生成的四叉树的节点;进一步地,使用lod方式加载四叉树节点的具体过程为:加载四叉树的根节点lod_0,三维显示时根据当前视点距离进入lod_(l-1)节点后加载下一级别lod_l节点,所述lod_l节点为四叉树的叶子节点,lod_(l-1)节点为叶子节点关联的父节点,其中lod_l叶子节点层共具有4l个网格,l为大于0的自然数。在场景加载到最高等级的lod_l节点后进行动态管网建模与渲染:c1、根据四叉树的叶子节点在树中的层级关系计算其网格范围;c2、将所述网格范围作为约束条件在步骤a2创建的管点图层中执行空间查询,获取需要构建三维模型的第一管点集合;c3、使用所述第一管点集合中的管点号关联查询步骤a2创建的管线图层,获取与第一管点集合具有连接关系的第一管线集合;c4、使用所述第一管线集合中的起点点号、终点点号、第一管点集合中的管点号,关联查询步骤a2创建的管点图层,获取与第一管线集合具有连接关系且不包含第一管点集合的第二管点集合;c5、使用所述第二管点集合中的管点号关联查询步骤a2创建的管线图层,获取与第二管点集合具有连接关系且不包含第一管线集合的第二管线集合;c6、将第一管点集合中的管点坐标和第一管线集合中管线几何中心坐标在所述网格范围内的管点集、管线集标记为当前网格的数据拥有集合,使用管网三维化的建模计算方法对这个拓扑关系完整的集合计算每个管网设备的三维管网建模参数,即结合步骤a2中所述空间数据库中的管径、附属物、井参数、连接关系等计算管点、管线的三维管网建模参数;进一步地,所述管点、管线的三维管网建模参数为一种介于管点、管线建模计算与网格化之间的非模型文件的中间件,所述中间件为一个参数文本流,只有在三维场景渲染时才会使用中间件内的参数构建网格显示,所述参数文本流是一个轻量级别的传输介质,仅作数据传输用,不保存也不编辑。需要说明的是,参数文本流包含计算管点的中心点和管线两端中心点的绝对高程等信息,是将二维管网实体计算到三维管网实体的一个过程变量集合。c7、三维引擎调度lod节点,利用步骤c6计算得到的三维管网建模参数,构建网格lod的数据拥有集合的三角网模型并赋予材质纹理信息,最终绘制显示于三维场景当中。本发明提供的技术方案带来的有益效果是:(1)本发明提供的一种基于空间数据库的二三维管网数据组织及显示方法采用一种动态查询、计算、数据流动态传递、建模、渲染的方式,即不生成模型文件,二维管网三维化的过程在数据流过程中执行,由于无中间文件、中间数据库,本方法在管网编辑过程中可直接对空间数据库的spatialcolumn空间字段或属性字段做修改,即可达到在二维平台中编辑、三维同步更新,三维平台中编辑、二维视图中同步更新,实现真正意义上的管网数据二三维同步;(2)本发明的一种基于空间数据库的二三维管网数据组织及显示方法采用网格lod构建结合边缘多次查询方式,能够对海量管网数据实时进行三维渲染,形成三维管线场景;(3)本方法使用了开放的标准空间数据库,即在数据编辑更新上仅做数据修改,而不需要做额外的联动更新代码,因此只要支持标准空间数据库,二三维平台、b/s系统均会达到数据同步,因此具有面向多平台的特点;(4)本方法的数据组织最大限度地靠齐管网数据库标准,即照搬管网探测的数据表结构,无需舍弃表结构或者强制转化为本方法规定的某种规则。附图说明图1是本发明实施例提供的基于空间数据库的二三维管网数据组织及显示方法的流程示意图;图2是本发明实施例提供的管网范围划分时构建l=2等级四叉树的示意图;图3是本发明实施例提供的动态管网建模的边缘多次查询方法示意图;图4是本发明实施例提供的三维场景中所需显示的管点管线示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。请参考图1,本发明的实施例提供一种基于空间数据库的二三维管网数据组织及显示方法,具体步骤如下:管网数据组织:a1、收集外业调查的管网数据,将这些管网数据统计至管点表和管线表中;所述管点表包括管点号、x坐标、y坐标、地面高程、埋深、井深、组分类型、几通、设备编号、附属物、特征、附属物规模、附属物类型编码、构筑物编码、管点材质、修建年代、探查时间等属性字段;所述管线表包括管段编码、起点点号、终点点号、混接编码、管线类型、埋设方式、起点地面高程、终点地面高程、起点外顶高程、终点外顶高程、起点内底高程、终点内底高程等属性字段。管点表和管线表的拓扑关系通过管线表的起点点号、终点点号关联管点表的管点号来建立。a2、将步骤a1中的管点表及管线表中的数据导入空间数据库,创建两个空间数据图层,即管点图层和管线图层。具体地,所述管点图层使用管点表中的x坐标和y坐标构建几何字段,并将管点表中的其他属性保留;所述管线图层使用管线表中的起点点号和终点点号关联管点表来获取管线起点和终点的x坐标和y坐标,从而根据这些坐标构建管线的几何字段,并将管线表中的其他属性保留。本实施例中,利用shapefile数据载体和雨水管网数据进行管网数据组织。首先将雨水管网数据整理至管点表和管线表中,然后使用管点表中的x坐标和y坐标构建shapefile管点图层,将其命名为“雨水_nod.shp”;使用管线表中的起点点号和终点点号外接关联管点表,获取管线起点和终点的x坐标和y坐标,构建shapefile管线图层,将其命名为“雨水_lin.shp”。所述“雨水_nod.shp”和“雨水_lin.shp”即为二三维一体的数据源。至此,通过两个数据表构建了两个二维雨水管网图层,需要说明的是,这里的网使用了外业探测的属性拓扑规则,即不会生成一个计算好拓扑的网数据层,二维编辑中编辑一个管点需要使用点号查询管线表的起点点号和终点点号,同步更新管线的几何字段x坐标和y坐标。本实施例将各种类型管件的模型体以参数文本流(中间件)的形式保存于内存中,三维管网显示就是调度这些参数文本流,将参数三维网格化并显示的过程。但需考虑两个问题:(1)对于海量管网数据,将全网三维化所需的参数文本流保存在内存中不切实际;(2)如何对管网组织结构进行编辑更新,比如拾取某段管线修改其管径,该管线连接的三通管点也将会发生变化,从而导致三通连接的另外两根管线也随之改变,如此不断延续,会造成已计算的中间件全部需要重新计算而没有明确终止点,若轻易终止则可能会与全网重新三维化的计算过程不同导致结果存在差异。为解决上述问题,本实施例采用细节层次(levelsofdetail,lod)技术,结合网格化建模的方法,以及利用边缘多次查询的方法,来实现三维场景下管点和管线数据的动态查询、中间件的动态计算和保存、以及三维管网模型的实时渲染。具体步骤如下:索引构建与节点加载:b1、获取空间数据库管网范围,即管点的几何要素、管线的几何要素所构成的矩形包围盒的并集;b2、将所述管网的空间范围划分成4l个网格,l为大于0的自然数,并构建l等级的四叉树进行网格索引;请参阅图2,本发明实施例提供的管网范围划分时构建l=2等级四叉树的示意图,树中每个节点对应管网范围的一块区域,任意一个非叶子节点都有4个子节点,而且子节点的采样区域恰好将父节点四等分。如图所示,树的根节点lod_0覆盖整个管网,将根节点四等分得到4个lod_1节点,将一个lod_1节点四等分得到4个lod_2节点。b3、在三维引擎中使用lod方式加载四叉树节点。具体地,首先加载四叉树的根节点lod_0,三维显示时根据当前视点距离进入lod_(l-1)节点后加载下一级别lod_l节点,所述lod_l节点为四叉树的叶子节点,lod_(l-1)节点为叶子节点关联的父节点,其中lod_l叶子节点层共具有4l个网格,l为大于0的自然数。需要说明的是,在将lod动态加载技术应用于三维平台上的海量管网数据时,由于三维场景对过多lod的裁剪计算,会导致帧数过低甚至未加载数据达到内存上限的问题。因此,在所述步骤b2中,将整个管网范围划分成4l个网格,并建立l等级的四叉树进行网格索引,将lod一对一管网记录扩大为一对区记录,步骤b3中lod加载一个四叉树节点时将会加载一个范围区间的管网数据。问题(2)中数据编辑更新后是否需要对整个管网数据重新建模计算,依赖于lod动态查询空间数据库的查询粒度,即步骤b2中构建的四叉树的叶子节点对应的网格大小,最理想的情况是一个节点对应一个管点管线,当某个管点管线在空间数据库里的几何、关键属性发生变更时,三维场景lod重新查询计算该管点管线,生成参数流,然后进行三角网格化显示。然而,由于管点、管线间具有拓扑关系,并不能达到这一理想查询粒度。本实施例在构建网格lod的基础上采用边缘多次查询的方式来解决问题(2)。具体地,在场景加载到最高等级的lod_l节点后进行动态管网建模与渲染的步骤为:c1、根据四叉树的叶子节点lod_l在树中的层级关系计算其网格范围m;c2、将所述网格范围m作为约束条件在步骤a2创建的管点图层中执行空间查询,获取需要构建三维模型的第一管点集合p0;伪sql代码为:select*frompoint_tablewheregeom.stintersect(m.extent);c3、使用所述第一管点集合p0的管点号关联查询步骤a2创建的管线图层,获取与第一管点集合p0具有连接关系的第一管线集合l0;伪sql代码为:select*fromline_tablewhere起点号inp0.点号or终点号inp0.点号;c4、使用所述第一管线集合l0的起点点号、终点点号,第一管点集合p0中的管点号,关联查询步骤a2创建的管点图层,获取与第一管线集合l0具有连接关系且不包含第一管点集合p0的第二管点集合p1;伪sql代码为:select*frompoint_tablewhereidinl0.起点号oridinl0.终点号andidnotinp0.点号;c5、使用所述第二管点集合p1中的管点号关联查询步骤a2创建的管线图层,获取与第二管点集合p1具有连接关系且不包含第一管线集合l0的第二管线集合l1;伪sql代码为:select*fromline_tablewhere(起点号inp1.点号or终点号inp1.点号)andidnotinl0.id;请参阅图3,中间的网格为m,第一管点集合p0为网格范围m中的管点集合,与第一管点集合p0连接的第一管线集合为l0,第一管线集合l0中的管线的中心可能在网格范围m内也可能在网格范围m外,与第一管线集合l0连接的除第一管点集合p0外的其他管点集合为第二管点集合p1,与第二管点集合p1连接的除第一管线集合l0外的其他管线集合为第二管线集合l1,第二管点集合p1、第二管线集合l1一定在网格范围m外,第一管点集合p0、第一管线集合l0的连接关系是完整的,可以提供三维建模的关键拓扑属性。c6、将第一管点集合p0中的管点坐标和第一管线集合l0中管线几何中心坐标在所述网格范围m内的管点集、管线集标记为当前lod网格的数据拥有集合,使用管网三维化的建模计算方法对这个拓扑关系完整的集合计算每个管网设备的三维管网建模参数,即结合步骤a2中所述空间数据库中的管径、附属物、井参数、连接关系等计算管点、管线的三维管网建模参数;需要说明的是,所述管点、管线的三维管网建模参数为一种介于管点、管线建模计算与网格化之间的非模型文件的中间件,所述中间件为一个参数文本流,只有在三维场景渲染时才会使用中间件内的参数构建网格显示,所述参数文本流是一个轻量级别的传输介质,仅作数据传输用,不保存也不编辑,如对于圆形管线,文本流中记录了管径、螺母、纹理、封闭、起点/终点三维坐标、法线等参数,对于圆形三通管点,文本流中记录了三通的三个端点坐标、管点中心坐标、三个端点的管径等参数,以及计算管点的中心点和管线两端中心点的绝对高程等的信息,是将二维管网实体计算到三维管网实体的一个过程变量集合。计算绝对高程的具体过程为:对于高程相关信息存储在管点设备的管网,管点的中心点的绝对高程可以通过管点中存储的“地面高程-埋深-管半径”或“顶点高程-管半径”或“底点高程+管半径”得到;对于高程相关信息存储在管线设备的管网,管线两罐中心点的绝对高程可以通过管线中存储的“起点/终点地面高程-起点/终点埋深-管半径”分别计算得到。请参阅图4,网格范围m中只对椭圆包围的管点和管线构建模型体,第一管点集合p0是属于当前网格范围的需要构建的管点集合,第二管点集合p1、第二管线集合l1在网格外,因此只参与建模计算(第一管点集合p0、第一管线集合l0的部分建模属性需根据第二管点集合p1、第二管线集合l1计算获取)而不构建管件模型体,筛选第一管线集合l0中管线的中心在当前网格范围m内的管线构建管线模型体,中心不在当前范围内的管线(图中矩形包围的)属于其他网格而不需构建,目的是确保每个网格不会重复构建管线模型体。c7、三维引擎调度lod节点,利用步骤c6计算得到的三维管网建模参数,构建当前网格lod的数据拥有集合的三角网模型并赋予材质纹理信息,最终绘制显示于三维场景当中。计算绝对高程的具体过程为:对于高程相关信息存储在管点设备的管网,管点的中心点的绝对高程可以通过管点中存储的“地面高程-埋深-管半径”或“顶点高程-管半径”或“底点高程+管半径”得到;对于高程相关信息存储在管线设备的管网,管线两端中心点的绝对高程可以通过管线中存储的“起点/终点地面高程-起点/终点埋深-管半径”分别计算得到。本实施例提供的基于空间数据库的二三维管网数据组织及显示方法,在二维空间数据库的组织上,直接根据空间数据库的动态查询数据生成三角网显示,中间不生成模型文件,在底层实现真正意义上的管网数据二三维一体化存储。在不冲突的情况下,本文中上述实施例及实施例中的特征可以相互结合。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1