公开/公告号CN106780749A
专利类型发明专利
公开/公告日2017-05-31
原文格式PDF
申请/专利权人 中国科学院武汉岩土力学研究所;
申请/专利号CN201611093321.6
申请日2016-12-02
分类号G06T17/30(20060101);
代理机构42001 武汉宇晨专利事务所;
代理人黄瑞棠
地址 430071 湖北省武汉市武昌区小洪山2号
入库时间 2023-06-19 02:19:08
法律状态公告日
法律状态信息
法律状态
2020-06-09
授权
授权
2017-06-23
实质审查的生效 IPC(主分类):G06T17/30 申请日:20161202
实质审查的生效
2017-05-31
公开
公开
技术领域
本发明涉及计算机软件开发技术领域,尤其涉及一种基于约束Delaunay TIN插值算法的表面模型构建方法,具体涉及三维可视化、地质建模、数值计算以及地质灾害评估。
背景技术
表面模型是三维可视化与工程地质建模的核心内容,其准确性将直接影响可视化效果与地质模型的正确性。同时,由于地表模型中蕴含着丰富的地理信息,在数值计算分析与地质灾害评估中经常被作为研究对象与分析结果展示的载体,若表面模型中节点高程出现畸变或者网格大小及分布不合理,那么计算与评价结果可能与实际情况相去甚远,决策方案南辕北辙,甚至导致不必要的财产损失与人员伤亡,造成不良社会影响。因此,有必要研究一种准确、优质的表面模型构建方法。
在目前的地表模型构建方法中,一方面,没有考虑网格大小及其分布的合理性,往往在局部出现细长、狭小的病态三角形面片,给表面模型的进一步处理与应用造成了极大的困难;另一方面,在高程插值过程中并未充分考虑初始点、线等准确信息的约束条件,所采用的插值方法极易造成高程值的极大化或者极小化,这种畸变几乎很难通过后续的处理手段来有效去除,并且在消除畸变时往往会引起表面模型的失真,最终导致获得的表面模型准确度较低、合理性较差。
发明内容
本发明的目的在于克服现有地表模型构建方法中经常出现病态三角形面片,未充分考虑初始点、线等准确信息的约束条件,插值获得的高程容易形成畸变,表面模型准确度较低、合理性较差等不足,提供一种基于约束Delaunay TIN插值算法的表面模型构建方法。
本发明解决其技术问题所采用的技术方案是:
读取包含表面模型点、线空间几何信息的DXF文件,在此基础上,基于Delaunay TIN网格剖分算法,充分考虑初始TIN的约束条件,根据插入点所处的点、线、面不同位置分别采用不同插值方法,实现了优化Delaunay TIN网格各节点高程的获取与表面模型的建立,并通过vtkpython对其进行可视化显示。
具体地说:
一、基于约束Delaunay TIN插值算法的表面模型构建系统(简称系统)
本系统包括数据处理单元10、表面模型生成单元20、表面模型显示单元30、输入点线数据40和输出表面模型50;
输入点线数据40、数据处理单元10、表面模型生成单元20、表面模型显示单元30和输出表面模型50依次交互;表面模型生成单元20和输出表面模型50交互。
二、基于约束Delaunay TIN插值算法的表面模型构建方法(简称方法)
本方法包括以下步骤:
①针对三维多线段DXF文件数据处理
将表面模型初始CAD图形文件中点、线转化成空间点与三维多线段,并形成空间坐标DXF文件;
通过DXF读取模块获得空间坐标DXF文件中指定图层的点、线三维坐标;
对获得的三维坐标采用数据修正模块进行调整或删除处理;
②基于约束Delaunay TIN插值算法的表面模型生成
以处理后的点、线数据作为初始约束TIN构建模块的输入,形成初始约束三角形网格;
以处理后的点、线数据作为优化Delaunay TIN生成模块的输入,形成优化后约束三角形网格;
以初始约束三角形网格为基础数据,通过优化Delaunay TIN节点高程插值模块对优化后约束三角形网格中新增节点高程进行插值;
通过Delaunay TIN表面生成模块更改优化后约束三角形网格各节点高程,形成表面模型;
③基于vtkpython的表面模型显示
提取TIN表面模型中各三角形单元几何与拓扑结构信息,采用表面模型可视化模块进行可视化展示。
本发明具有下列特点:
①在地表模型构建中,考虑网格大小、形状及其分布的合理性,尽量保证地表模型中网格质量优良;
②在高程插值过程中充分考虑初始点、线等准确信息的约束条件,根据插值点所处位置采用不同插值方法;
③生成的表面模型准确性较高、网格形状及分布合理,更适合于数值计算与灾害评估等方面的应用;
④充分利用vtkpython库提供的对象与函数,有效提高点在初始TIN网格中定位的效率。
依据上述特点和实际应用,本发明收到下列的有益效果:
①有效消除在局部出现细长、狭小的病态三角形面片的现象;
②有效消除了高程在局部产生的畸变;
③表面模型准确度较高、合理性较强,弥补了目前地表模型在约束条件下构建方法的不足。
附图说明
图1是本系统的结构方框图;
图2是数据过滤单元10工作流程图;
图3是数据处理单元20工作流程图;
图4是数据传输单元30工作流程图。
图5是表面模型显示单元30的工作流程图。
其中:
10—数据处理单元,
11—DXF读取模块,
12—数据修正模块,
13—初始CAD图形文件,
14—空间坐标DXF文件;
20—表面模型生成单元,
21—初始约束TIN构建模块,
22—优化Delaunay TIN生成模块,
23—优化Delaunay TIN节点高程插值模块,
24—Delaunay TIN表面生成模块;
30—表面模型显示单元,
31—表面模型可视化模块;
40—输入点线数据;
50—输出表面模型。
具体实施方式
以下结合附图详细说明:
一、系统
1、总体
如图1,本系统包括数据处理单元10、表面模型生成单元20、表面模型显示单元30、输入点线数据40和输出表面模型50;
输入点线数据40、数据处理单元10、表面模型生成单元20、表面模型显示单元30和输出表面模型50依次交互;表面模型生成单元20和输出表面模型50交互。
2、功能块
1)数据处理单元10
数据处理单元10包括依次交互的初始CAD图形文件13、空间坐标DXF文件14、DXF读取模块11和数据修正模块12;
表面模型初始CAD图形文件13为空间坐标DXF文件14的基础数据,DXF读取模块11将空间坐标DXF文件14读入内存,数据修正模块12完成对内存中数据的修正。
(1)初始CAD图形文件13中存储表面模型构建所需的点、线三维空间数据,其中线条为三维多线段;
(2)空间坐标DXF文件14为初始CAD图形文件13的一种文件交换格式;
(3)DXF读取模块11能够对空间坐标DXF文件14中点、线坐标及其拓扑关系进行识别并进行读取;
(4)数据修正模块12用来对DXF读取模块11获得的点、线高程值进行检查、修正以及删除。
2)表面模型生成单20
表面模型生成单20包括初始约束TIN构建模块21、优化Delaunay TIN生成模块22、优化Delaunay TIN节点高程插值模块23和Delaunay TIN表面生成模块24;
初始约束TIN构建模块21和优化Delaunay TIN生成模块22分别与优化Delaunay TIN节点高程插值模块23交互,优化Delaunay TIN节点高程插值模块23和Delaunay TIN表面生成模块24交互。
通过初始约束TIN构建模块21对处理后的点、线数据建立初始约束三角形网格;
通过优化Delaunay TIN生成模块22对处理后的点、线数据建立优化后约束三角形网格;
在初始约束TIN构建模块21与优化Delaunay TIN生成模块22基础上,通过优化Delaunay TIN节点高程插值模块23对优化后约束三角形网格中节点高程进行插值;
通过Delaunay TIN表面生成模块24形成表面模型。
(1)初始约束TIN构建模块21将处理后的点、线数据离散为PLSG格式文件,然后在不增加额外节点基础上,建立初始约束TIN;
(2)优化Delaunay TIN生成模块22将处理后的点、线数据离散为PLSG格式文件,然后根据网格质量要求,通过增加额外的节点,建立优化后的约束TIN;
(3)优化Delaunay TIN节点高程插值模块23根据优化后的约束TIN任一点在初始约束TIN所处的空间位置,分别采用不同插值方法获得该点的高程值;
(4)Delaunay TIN表面生成模块24用来更改优化后约束三角形网格各节点高程,形成表面模型。
3)表面模型显示单元30
提取优化后约束三角形网格单元几何与拓扑结构信息,通过表面模型可视化模块(31)进行可视化展示。
(1)表面模型可视化模块(31)通过vtkpython库实现对优化后约束三角形网格构成的三维表面模型进行显示。
4)输入点线数据40
从DXF文件中导入建模所需的点、线数据。
5)输出表面模型50
将获得的表面模型网格数据或者VTK场景中显示的面模型进行输出。
二、方法
1、数据处理单元10的工作流程
如图2,数据处理单元10的工作流程包括下列步骤:
A、获取DXF文件数据-101
将包含点、线三维坐标信息的DXF文件读入内存;
B、关键字判别-102
提取文件每一行的字符,根据关键字提取对应信息;
C、分为两路
C1、空间点数据获取-103
若某一行字符为“POINT”,且为所需图层,则依次获取后续关键字“10”,“20”,“30”所对应的x,y,z坐标值;
C2、三维多线段数据获取-104
若字符“POLYLINE”与“VERTEX”连续出现,且为所需图层,则依次获取后续关键字“10”,“20”,“30”所对应的x,y,z坐标值,并对点进行连续编号,形成线段拓扑信息;
D、完成信息的获取-105
依次遍历DXF文件所有数据行,完成所有点、线数据的提取;
E、高程数据的修正处理-106
将所有获取的数据点高程的异常值进行改正或删除处理;
F、交付表面模型生成单元-107
将修正后的数据传入表面模型生成单元。
2、表面模型生成单元20的工作流程
如图3,表面模型生成单元20的工作流程包括下列步骤:
a、生成PLSG文件格式-201
将获得的数据转换成为只包括点与线段的PLSG文件形式;
b、初始TIN的建立-202
以PLSG文件中的点、线为基础建立初始三维TIN;
c、优化Delaunay TIN的构建-203
以PLSG文件中的点、线为基础,通过增加更多的节点,形成优质的Delaunay TIN模型;
d、优化Delaunay TIN节点高程插值-204
通过三角形重心内插与线性插值方法获得优化Delaunay TIN中各节点的高程;
e、表面模型的生成-205
对优化Delaunay TIN中各节点赋高程值,形成表面模型;
f、交付表面模型显示单元-206
将所生成的表面各节点空间坐标与三角形拓扑结构信息传给表面模型显示单元。
3、表面模型生成单元20中优化Delaunay TIN节点高程插值204的工作流程
如图4,表面模型生成单元20中优化Delaunay TIN节点高程插值204的工作流程包括下列步骤:
ⅰ、获取优化Delaunay TIN任一节点P(x,y)-2041
历遍优化Delaunay TIN中所有节点,对于任一节点P(x,y)都要经过以下ⅰ~ⅵ步骤;
ⅱ、初始TIN中距P(x,y)最近的点Q(x,y)-2042
通过VTK中数据集合对象得到初始TIN中距P(x,y)最近的点Q(x,y);
ⅲ、判断P(x,y)与Q(x,y)是否同一点
通过所设置的两点距离容许误差,判断P(x,y)与Q(x,y)是否同一点-2043;
是则通过P(x,y)即为Q(x,y)的高程-2047进入步骤ⅵ,否则进入步骤ⅳ;
ⅳ、提取点Q(x,y) 所有邻接三角形TA
若P(x,y)与Q(x,y)为不同的点,在初始TIN中中提取与点Q(x,y)邻接的所有三角形的集合TA-2044;
ⅴ、判断点P(x,y)是否在TA内
判断点P(x,y)是否位于TA所形成的区域内-2045,是则:
*若点P(x,y)位于在TA内,且位于某三角形内部,则采用三角形中心坐标插值方法来计算点P(x,y)的高程,三角形重心内插法-2048;
*若点P(x,y)位于在TA内,且位于某一条边上,则采用线段两端点线性插值方法来计算点P(x,y)的高程,两端点线性插值法-2049;
否则通过不断扩大TA范围-20410跳转到步骤ⅳ;
ⅵ、获得点Q(x,y)的高程。
4、表面模型显示单元30的工作流程
如图5,表面模型显示单元30的工作流程包括下列步骤:
Ⅰ、VTK数据格式的生成-301
将优化、插值后的表面模型转化为vtkpython中vtkPolydata类型数据格式;
Ⅱ、表面模型的显示-302
将vtkPolydata数据通过VTK中vtkActor对象进行显示。
机译: 内表面空物体的形状,尺寸和弹性性能的测量方法,内表面空物体的三维模型的构建方法,内表面空物体的形状,尺寸和弹性性能的测量装置以及三维模型的构建内表面空洞
机译: 一种测量空心物体的内表面的形状,尺寸和弹性性能的方法,一种构建空心物体的内表面的三维模型的方法,一种用于测量内部物体的形状,尺寸和弹性性能的装置空心物体的表面,以及建立空心物体内表面的三维模型
机译: 基于网络协作修剪构建高效产品表面缺陷检测模型的方法