一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种超高效地形构建方法与流程

2021-10-27 20:58:00 来源:中国专利 TAG:高效 地形 地理信息 构建 方法


1.本发明涉及地理信息技术领域,具体涉及一种超高效地形构建方法。


背景技术:

2.地理信息系统(gis)通过数字技术描述与表达地理世界,促成了地理学理论与方法的极大变革。土石方建模是gis中极其重要的功能,其作用是将三维离散坐标点通过特定算法互相连接生成地形三维网格模型,只有生成了土石方模型才能浏览地形并进行后续操作。算法是软件的“灵魂”,好的算法应满足简洁与高效的特性。近年来,随着bim gis集成应用的发展,gis中的功能也能在bim中发挥重要作用,例如土石方建模在bim中有土石方算量、土方调配、场地规划等重要应用。
3.国外土石方建模软件起步很早且种类繁多,其中较为著名的有autodesk公司推出的civil 3d,该软件通过导入高程点xyz坐标数据可自行构网并生成地形曲面。该软件的优点有效率高、可三维浏览,但缺点是软件体积庞大(以civil 3d 2020为例,软件安装包大小3gb以上)、功能多但略显臃肿、不能定制化功能。
4.由于国内工程类软件起步晚,再加上国内工程类软件基本被国外软件公司垄断,导致了国内土石方建模软件发展迟缓。国内土石方建模软件常以插件的形式出现,例如著名的“南方cass”就是autocad的一款国产插件。该插件操作方式与civil 3d类似,也是导入高程点xyz数据后生成地形曲面。但该插件在三维浏览方面较差。
5.近十年以来,由于国外工程软件公司的垄断与干预,国产工程软件的发展一直受挫,为打破国外技术垄断积极响应国家“工程软件国产化”的号召,弥补此类工程类软件的短板,急需研发出符合我国工程建设行业的软件。
6.土石方建模在工程建设中广泛应用。例如:方案设计、场地布置、道路规划、土石方算量、边坡设计、场区排水设计等。为满足各类工程需求,急需开发出具有高性能的土石方建模软件,而开发软件必须先研究算法,故研发高性能土石方建模算法意义重大。


技术实现要素:

7.本发明所要解决的技术问题是现有的土石方建模算法构网效率不高从而导致地形构建效率低下的技术问题,目的在于提供一种超高效地形构建方法,解决上述的问题。
8.本发明通过下述技术方案实现:
9.一种超高效地形构建方法,包括以下步骤:
10.s1:获取地形原始坐标点数据,对地形原始坐标点数据进行预处理获得处理后的地形坐标点数据;
11.s2:基于处理后的地形坐标点数据获得地形坐标点集合;
12.s3:基于地形坐标点集合构建初始线,根据地形坐标点集合和初始线循环构建三角网以获得三角形数据集合;
13.s4:将获得的三角形数据集合进行渲染获得土石方模型。
14.进一步地,步骤s1中,所述对地形原始坐标点数据进行预处理获得处理后的地形坐标点数据具体为:对地形原始坐标点数据进行去重和筛选,然后再对去重和筛选后的坐标点数据按照由小到大的顺序进行排序,排序完成后按排序的顺序对坐标点进行编号,最后将每个坐标点以编号、x、y、z的格式输出到坐标数据文本中,坐标数据文本中的数据即处理后的地形坐标点数据。
15.进一步地,步骤s2中,所述基于处理后的地形坐标点数据获得地形坐标点集合具体为:读取坐标数据文本中的每一行坐标数据,获得每一行数据后将其拆分为编号、x、y、z并通过这些数据存储得到一个地形坐标点,依次循环直到全部地形坐标点都输入到地形坐标点集合中。
16.进一步地,所述超高效地形构建方法还包括初始化线集合以及三角形集合;所述线集合用于存储计算过程中产生的直线;所述三角形集合用于存储产生的新三角形。
17.进一步地,所述步骤s3具体包括:
18.s31:将地形坐标点集合中的第一个点p1与第一个点最近的一个点p2组成第一条直线,所述第一条直线即直线l0;
19.s32:抽取线集合中的直线l0,再遍历地形坐标点集合,不断记录直线l0与地形坐标点形成的三角形中地形坐标点所对应的内角大小,遍历结束后得到能够形成最大内角的点p0,将直线l0的两个点p1与p2分别与点p0相连,得到直线l1和直线l2,并将直线l1和直线l2存入线集合中;
20.s33:对直线l0、直线l1和直线l2进行相交和重复性测试:
21.若测试通过,则生成三角形并将三角形存储到三角形集合中;然后从线集合中剔除已经使用过的直线并添加新增的直线,再判断线集合中的直线数量是否为零,若不为零,则返回步骤s31;若为零,则执行步骤s4;
22.若测试未通过,则剔除线集合中的直线并添加新增的直线;再判断线集合中的直线数量是否为零,若不为零,则返回步骤s31;若为零,则执行步骤s4。
23.进一步地,步骤s32中,还包括:遍历地形坐标点集合时,缩小地形坐标点的搜索范围,所述搜索范围限制在平均点距的1.5~2倍。由于每次循环计算需要对地形坐标点集合遍历并计算,若不对搜索范围加以控制,计算速度会随着坐标点数量的提高而显著降低,因此必须通过限制搜索范围来控制计算量,从而实现性能优化。
24.进一步地,步骤s4中,所述将获得的三角形数据集合进行渲染获得土石方模型,具体为:将获得的三角形数据集合通过directx框架或者opengl框架进行渲染获得土石方模型。
25.本发明与现有技术相比,具有如下的优点和有益效果:
26.本发明提供的一种超高效地形构建方法,可大幅降低运算量,从而提高构建效率,大大缩短了构建时间,实现了简洁与高效的特性。
附图说明
27.为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可
以根据这些附图获得其他相关的附图。在附图中:
28.图1为开发流程图;
29.图2为坐标点处理流程图;
30.图3为构网流程图;
31.图4为三角形构建过程示意图;
32.图5为通过本发明方法创建的地形模型;
33.图6为civil 3d创建的地形模型(与图5本发明方法创建的地形模型坐标点相同)。
34.图7为采用c#作为编程语言优化前时间对比图;
35.图8为采用c#作为编程语言优化后时间对比图;
36.图9为采用c 作为编程语言优化后时间对比图;
37.图10为优化前后时间对比图。
具体实施方式
38.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
39.实施例
40.软件开发平台选用visual studio 2019(最新版本)。为提高软件的开发效率与兼容性,选用c#作为编程语言进行开发。c#是由c和c 衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承c和c 强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。c#综合了vb简单的可视化操作和c 的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.net开发的首选语言。如图1所示,图1为开发流程图。
41.由于原始坐标点数据可能存在重复、错误、乱序等问题,在导入软件前需对坐标点进行处理。如图2所示,图2为坐标点处理流程:先在excel中对坐标点进行去重操作,再利用表格中的筛选功能筛选出不合理高程点(低于实际最低点或高于实际最高点)并删除。对剩下的坐标点按照由小到大的顺序进行排序,排序完成后按先后顺序对坐标点进行编号。坐标点处理完成后将坐标点以编号、x、y、z的格式输出到文本文件中,以便程序读取。
42.delaunay三角网(delaunaytriangulated irregular network,delaunay

tin)的构建通常有两种方法:一是根据其几何特性给出的依据“任意四点不共圆”特性的构建法;二是基于voroni图衍生定义的生成法。由于voronoi图算法较为复杂,效率低并且内存开销较大,如今此类方法已经很少有人使用。
43.本算法是以delaunay三角网算法为基础,通过改进与优化得到的,如图3所示,图3为构网流程图。
44.坐标点数据读取:读取坐标数据文本中的每一行坐标数据,获得每一行数据后将其拆分为编号、x、y、z并分别输入到原始坐标点集合中,依次循环直到全部坐标点都输入到原始点集合中。
45.其他数据集初始化:计算过程所需的其他变量主要是线集合与三角形集合,线集合主要是存储计算过程中产生的临时边,也是判断循环是否结束的依据。三角形集合主要
是用于存储每次计算产生的新三角形,以便最后输出显示。
46.构建初始线:首先将原始点集合中的第一个点和与其最近的一个点组成第一条直线,此时线集合中的数量为1,以线列表的数量是否等于0为循环运算结束与否的判断条件。
47.循环构建三角网:三角形构建过程示意图如图4所示。在每次循环计算中抽取线集合中的最后一个元素,即线l0,再遍历原始点集合,不断记录线与点形成的三角形中点所对应的内角大小,遍历结束后得到能够形成最大内角的点p0,将线的两个点p1与p2分别与点p0相连得到两条新边l1与l2存入线集合中。
48.对新边进行测试,全部通过后生成三角形并存储到三角形列表中。从新边列表中剔除已经使用过的边再添加新增的边,依次进行循环直到新边列表的元素为0。
49.最后,将获得的三角形数据集合发给directx 11框架进行地形渲染,获得土石方模型。
50.本发明实施例提供一种超高效地形构建方法,具体包括以下步骤:
51.s1:获取地形原始坐标点数据,对地形原始坐标点数据进行去重和筛选,然后再对去重和筛选后的坐标点数据按照由小到大的顺序进行排序,排序完成后按排序的顺序对坐标点进行编号,最后将每个坐标点以编号、x、y、z的格式输出到坐标数据文本中,坐标数据文本中的数据即处理后的地形坐标点数据;
52.s2:读取坐标数据文本中的每一行坐标数据,获得每一行数据后将其拆分为编号、x、y、z并通过这些数据存储得到一个地形坐标点,依次循环直到全部地形坐标点都输入到地形坐标点集合中;
53.s3:基于地形坐标点集合构建初始线,根据地形坐标点集合和初始线循环构建三角网以获得三角形数据集合;
54.s4:将获得的三角形数据集合进行渲染获得土石方模型。
55.所述超高效地形构建方法还包括初始化线集合以及三角形集合;所述线集合用于存储计算过程中产生的直线;所述三角形集合用于存储产生的新三角形。
56.所述步骤s3具体包括:
57.s31:将地形坐标点集合中的第一个点p1与第一个点最近的一个点p2组成第一条直线,所述第一条直线即直线l0;
58.s32:抽取线集合中的直线l0,再遍历地形坐标点集合,不断记录直线l0与地形坐标点形成的三角形中地形坐标点所对应的内角大小,遍历结束后得到能够形成最大内角的点p0,将直线l0的两个点p1与p2分别与点p0相连,得到直线l1和直线l2,并将直线l1和直线l2存入线集合中;
59.s33:对直线l0、直线l1和直线l2进行相交和重复性测试:
60.若测试通过,则生成三角形并将三角形存储到三角形集合中;然后从线集合中剔除已经使用过的直线并添加新增的直线,再判断线集合中的直线数量是否为零,若不为零,则返回步骤s31;若为零,则执行步骤s4;
61.若测试未通过,则剔除线集合中的直线并添加新增的直线;再判断线集合中的直线数量是否为零,若不为零,则返回步骤s31;若为零,则执行步骤s4。
62.步骤s32中,还包括:遍历地形坐标点集合时,缩小地形坐标点的搜索范围,本实施例中,搜索范围设定最大边长为100。由于每次循环计算需要对地形坐标点集合遍历并计
算,若不对搜索范围加以控制,计算速度会随着坐标点数量的提高而显著降低,因此必须通过限制搜索范围来控制计算量,从而实现性能优化。
63.步骤s4中,所述将获得的三角形数据集合进行渲染获得土石方模型,具体为:将获得的三角形数据集合通过directx框架或者opengl框架进行渲染获得土石方模型。
64.地形模型展示:本次以丽水机场地势设计数据为原始数据进行土石方建模,总共6611个坐标点,地形中的三角形个数为13106。
65.如图5所示,图5为通过本发明算法创建的地形模型;图6为civil 3d创建的地形模型。通过观察图5和图6可以看出通过本发明算法得到的模型与civil 3d创建的模型一致,从而验证了本发明算法的正确性。
66.性能测试:为保证测试数据的准确性,相同点数测3次,取平均值作为最终成绩。
67.表1采用c#作为编程语言进行开发,优化前性能测试数据表
[0068][0069]
表2采用c#作为编程语言进行开发,优化后性能测试数据表
[0070][0071]
表3采用c 作为编程语言进行开发,优化后性能测试数据表
[0072][0073]
表1为采用c#作为编程语言进行开发,优化前性能测试数据表,表2为采用c#优化后的性能测试数据表;表3为采用c 优化后的性能测试数据表。
[0074]
如图7

9所示,图7为采用c#作为编程语言优化前的时间对比图;
[0075]
图8为采用c#作为编程语言优化后的时间对比图,优化后性能提高了10倍左右。
[0076]
图9为采用c 作为编程语言优化后的时间对比图,与c#相比,性能还可以再提高10~14倍。
[0077]
如图10所示,通过算法优化并更换编程语言后整体性能较最初提高100倍,构建时间在可接受范围内,算法优化达到预期。
[0078]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜