一种利用三角形进行地图网格化的划分算法的制作方法

文档序号:25526218发布日期:2021-06-18 20:15阅读:584来源:国知局
一种利用三角形进行地图网格化的划分算法的制作方法

本发明涉及地理信息技术领域,具体为一种利用三角形进行地图网格化的划分算法。



背景技术:

地理信息是地理数据所蕴含和表达的地理含义,是与地理环境要素有关的物质的数量、质量、性质、分布特征、联系和规律的数字、文字、图像和图形等的总称;

在地理信息数据处理过程中,经常会用到网格化处理的方法,如何通过合理的方法对给定的区域进行网格化,让网格能够充分的逼近区域地图,是在网格化处理中重要的处理方法。



技术实现要素:

本发明提供一种利用三角形进行地图网格化的划分算法,可以有效解决上述背景技术中提出如何通过合理的方法对给定的区域进行网格化,让网格能够充分的逼近区域地图的问题。

为实现上述目的,本发明提供如下技术方案:一种利用三角形进行地图网格化的划分算法,采用douglas-peucker算法提取区域边界,用约束delaunay三角剖分算法得到三角区域格网;

所述采用douglas-peucker算法提取区域边界,通过多边形来拟合曲线,具体的算法步骤如下:

s1、连接曲线首尾两点a、b形成一条直线ab;

s2、计算曲线上离该直线段距离最大的点c,计算其与ab的距离d;

s3、比较该距离与预先给定的阈值threshold的大小,

s4、当所有曲线都处理完毕后,依次连接各个分割点形成折线,作为原曲线的近似。

根据上述技术方案,所述s3中阈值threshold小于threshold,则以该直线作为曲线的近似,该段曲线处理完毕;

阈值threshold距离大于阈值,则用点c将曲线分为两段ac和bc,并分别对两段曲线进行步骤s1-s3的处理。

根据上述技术方案,所述约束delaunay三角剖分算法得到三角区域格网,在完成了边界提取后,就可以开始向计算区域内插入点进行delaunay三角剖分;

所述delaunay三角剖分具体算法步骤如下:

a1、设置一个面积的控制量以便控制剖分的程度,它可以方便的控制三角网格的大小,计算三角形数组中的所有三角形面积大小;

a2、选择面积较大的三角形的最长边作为新的插入点,并将该点加到顶点数组后面;

a3、搜索整个三角形数组,找出所有插入点落在三角形外接圆中的三角形,计入优化三角形数组,并将三角形的边记入边数组,并且不能有重复边,若有重复边就要从数组中删除该边;

a4、连接插入点与边数组中每条边的两个顶点,形成新的三角形加入三角形数组;

a5、删除优化三角形数组中的三角形,更新整个三角形数组,完成一次点的插入;

a6、重复a2、a3、a4直到三角形的面积符合控制要求,结束点的插入,这样就完成了delaunay剖分。

根据上述技术方案,所述约束线段加入校验的约束delaunay剖分具体算法步骤如下:

b1、从约束线段集中取出一条约束线段p1p2;

b2、判断p1p2是否为原三角网中三角形的一条边,若是则返回上一步处理下一条约束线段,反之做下一步;

b3、在三角网中查找与p1p2相交的三角形,得到p1p2的影响区域mt={t1,t2,…,tn};

b4、处理约束线段通过三角网中三角形顶点的情况,在搜索p1p2影响区域的同时,判断p1p2是否通过三角形顶点(除p1和p2的顶点),若是则在该顶点处把约束线段p1p2分成若干条约束子线段,并将约束子线段加入到约束线段集中;

b5、处理约束线段的影响区域内有其他约束线段的情况,判断p1p2的影响区域mt中的三角形边集中是否存在约束边,若存在则计算p1p2与原约束边的交点,将交点插入到三角网中,并更新原约束边的拓扑信息,在交点处p1p2与原约束边分别被分割成两条约束子线段,并将约束子线段加入到约束线段集中;

b6、判断p1p2是否被分割,若是则回到步骤1,反之继续下一步;

b7、由mt中的三角形组成p1p2的影响多边形q,根据直线的分区方程以p1p2为界将q分成ql和qr两个多边形;

b8、对ql和qr分别进行三角剖分,处理ql;

b9、在约束剖分结束后,对新生成的三角网进行lop优化,即对新三角网中除边界以外的每一条边,由新边开始,首先判断其是否为约束边,若是则结束操作;否则检测由该边的两个相邻三角形形成的凸四边形是否满足delaunay三角网的空外接圆性质,如果其中一个三角形的外接圆中含有第四个顶点,则交换该四边形的对角线。

根据上述技术方案,所述剖分如下:

b801、设立一堆栈stack,并把p1p2放入stack中;

b802、在stack中取出一边设为ab,根据点到直线的距离公式,在ql顶点集中找出距边ab最近的点c(c为非a和b的顶点),记录由a、c、b新形成的三角形abc,并在ql顶点集中删除所找的点c;

b803、判断新边ac(或bc)是否为ql的一条边界,如果不是边界,则把ac(或bc)放入堆栈stack中;反之则不入栈;

b804、判断堆栈是否为空,如果堆栈不空,则返回(2)继续处理下一条边;反之则返回b801来剖分qr。

与现有技术相比,本发明的有益效果:本发明结构科学合理,使用安全方便,采用douglas-peucker算法提取区域边界,用约束delaunay三角剖分算法得到三角区域格网,可以快速准确的对地图区域进行合理的三角形网格划分。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。

在附图中:

图1是本发明的douglas-peucker算法步骤结构示意图;

图2是本发明的delaunay三角剖分具体算法步骤结构示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

实施例:如图1-2所示,本发明提供技术方案,一种利用三角形进行地图网格化的划分算法,采用douglas-peucker算法提取区域边界,用约束delaunay三角剖分算法得到三角区域格网;

采用douglas-peucker算法提取区域边界,通过多边形来拟合曲线,具体的算法步骤如下:

s1、连接曲线首尾两点a、b形成一条直线ab;

s2、计算曲线上离该直线段距离最大的点c,计算其与ab的距离d;

s3、比较该距离与预先给定的阈值threshold的大小,

s4、当所有曲线都处理完毕后,依次连接各个分割点形成折线,作为原曲线的近似。

根据上述技术方案,s3中阈值threshold小于threshold,则以该直线作为曲线的近似,该段曲线处理完毕;

阈值threshold距离大于阈值,则用点c将曲线分为两段ac和bc,并分别对两段曲线进行步骤s1-s3的处理。

根据上述技术方案,约束delaunay三角剖分算法得到三角区域格网,在完成了边界提取后,就可以开始向计算区域内插入点进行delaunay三角剖分;

delaunay三角剖分具体算法步骤如下:

a1、设置一个面积的控制量以便控制剖分的程度,它可以方便的控制三角网格的大小,计算三角形数组中的所有三角形面积大小;

a2、选择面积较大的三角形的最长边作为新的插入点,并将该点加到顶点数组后面;

a3、搜索整个三角形数组,找出所有插入点落在三角形外接圆中的三角形,计入优化三角形数组,并将三角形的边记入边数组,并且不能有重复边,若有重复边就要从数组中删除该边;

a4、连接插入点与边数组中每条边的两个顶点,形成新的三角形加入三角形数组;

a5、删除优化三角形数组中的三角形,更新整个三角形数组,完成一次点的插入;

a6、重复a2、a3、a4直到三角形的面积符合控制要求,结束点的插入,这样就完成了delaunay剖分。

根据上述技术方案,约束线段加入校验的约束delaunay剖分具体算法步骤如下:

b1、从约束线段集中取出一条约束线段p1p2;

b2、判断p1p2是否为原三角网中三角形的一条边,若是则返回上一步处理下一条约束线段,反之做下一步;

b3、在三角网中查找与p1p2相交的三角形,得到p1p2的影响区域mt={t1,t2,…,tn};

b4、处理约束线段通过三角网中三角形顶点的情况,在搜索p1p2影响区域的同时,判断p1p2是否通过三角形顶点(除p1和p2的顶点),若是则在该顶点处把约束线段p1p2分成若干条约束子线段,并将约束子线段加入到约束线段集中;

b5、处理约束线段的影响区域内有其他约束线段的情况,判断p1p2的影响区域mt中的三角形边集中是否存在约束边,若存在则计算p1p2与原约束边的交点,将交点插入到三角网中,并更新原约束边的拓扑信息,在交点处p1p2与原约束边分别被分割成两条约束子线段,并将约束子线段加入到约束线段集中;

b6、判断p1p2是否被分割,若是则回到步骤1,反之继续下一步;

b7、由mt中的三角形组成p1p2的影响多边形q,根据直线的分区方程以p1p2为界将q分成ql和qr两个多边形;

b8、对ql和qr分别进行三角剖分,处理ql;

b9、在约束剖分结束后,对新生成的三角网进行lop优化,即对新三角网中除边界以外的每一条边,由新边开始,首先判断其是否为约束边,若是则结束操作;否则检测由该边的两个相邻三角形形成的凸四边形是否满足delaunay三角网的空外接圆性质,如果其中一个三角形的外接圆中含有第四个顶点,则交换该四边形的对角线。

根据上述技术方案,剖分如下:

b801、设立一堆栈stack,并把p1p2放入stack中;

b802、在stack中取出一边设为ab,根据点到直线的距离公式,在ql顶点集中找出距边ab最近的点c(c为非a和b的顶点),记录由a、c、b新形成的三角形abc,并在ql顶点集中删除所找的点c;

b803、判断新边ac(或bc)是否为ql的一条边界,如果不是边界,则把ac(或bc)放入堆栈stack中;反之则不入栈;

b804、判断堆栈是否为空,如果堆栈不空,则返回(2)继续处理下一条边;反之则返回b801来剖分qr。

与现有技术相比,本发明的有益效果:本发明结构科学合理,使用安全方便,采用douglas-peucker算法提取区域边界,用约束delaunay三角剖分算法得到三角区域格网,可以快速准确的对地图区域进行合理的三角形网格划分。

最后应说明的是:以上所述仅为本发明的优选实例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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