一种面向TIN构建的Morton排序方法

文档序号:10595142阅读:363来源:国知局
一种面向TIN构建的Morton排序方法
【专利摘要】本发明涉及一种面向TIN构建的Morton排序方法。该方法包括:读入待排序的二维点集P;分解点集P为两部分:PN和PS,以调整点集P内点的存储顺序;分别分解点集PN和PS以调整各点集中点的存储顺序;判断子点集是否分解完成;等待所有子点集分解结束,即完成点集的Morton排序。本发明利用点集分割的思想来调整点集的存储顺序,能够摆脱对网格的依赖,直接根据点集的坐标进行Morton排序,从而避免传统Morton排序方法的不足,能够有效地解决TIN构建过程中点集的Morton排序问题,提高了排序的效率,并且由于脱离了网格的辅助,因而极大降低了算法对于内存的需求,大大减少了不必要的计算开销。
【专利说明】
-种面向TIN构建的Morton排序方法
技术领域
[0001] 本发明设及地理信息系统、地质学、计算机图形学、计算机仿真及虚拟现实等领 域,具体设及一种面向TIN构建的Mcxrton排序方法。
【背景技术】
[0002] DTM(数字表面模型)是实现地形S维可视化的一种有效途径。栅格和TIN(不规则 S角网)是表示DTM的两种主要数据格式。与栅格方法对格网的周围采样点按照距离远近加 权平均的思想不同,TIN方法采取的是一种更加忠实于原始数据的方法,它几乎完整地保留 了原始数据,按Delaunay原则将采样点直接连成网建立起模型。因此,TIN在地理信息系统、 地质学、计算机图形学、计算机仿真及虚拟现实等领域都有着广泛的应用,是目前DTM常采 用的一种格式。
[0003] 在众多的TIN构建算法中,逐点插入法由于算法简单、占用空间小、便于动态更新 等优点逐渐成为目前最流行的一种算法。起初逐点插入法的效率比较低,为了提高构网的 效率,学者们设计了许多的改进方案。经过先后对逐点插入法不同程度的发展和完善,形成 了 W创建初始包围盒、点定位、空腔扩展、更新=角网为主要流程的逐点插入法。在此基础 上,为了进一步提高逐点插入法的算法效率,学者们的研究焦点主要集中在"点定位"运个 过程上。Sloan提出了划分均匀网格,按网格将点排序后插入的方法。Buchin (Buchin !(.Constructing Del曰UMy tri曰ngul曰tions 曰long space-filling curves[M].Springer Berlin Heide化erg,2009:119-130.)在划分均匀网格排序的基础上提出了依照不同的空 间填充曲线顺序遍历插入网格中点的方法,进一步提高了"点定位"的效率。
[0004] 空间填充曲线是闭合间隔单元I = [0,1巧Ij闭合矩形单元S= [0,1]2的连续映射, 也是所有能够填满二维或更高维空间的连续分形曲线的总称,应用最广泛的空间曲线包括 Mcxrton曲线Jeano曲线和HUbed曲线。Modon曲线具有良好的空间聚集性及空间连续性, 可W与逐点插入法结合,W提高构网的效率。然而,传统中利用Modon曲线进行排序的算法 都是面向空间剖分的方法,W栅格辅助进行点集排序,需要将栅格不断的细分至每个格元 中仅包含一个点,然后根据格元的行、列号计算对应的Modon编码值,再将栅格中的点按照 Modon编码顺序输出,进而得到排好序的点集。但是运些方法不适用于TI咐勾建过程的排序 操作,因为W下两点原因:(1)内存消耗过大。随着数据采集技术的发展,点集的数据量越来 越大,点与点之间的间距越来越小,使得用于辅助的网格往往很庞大,而且细分的层次非常 高,占用极高的内存;(2)排序效率较低。使用网格辅助排序,是一种从网格出发的排序方 法,需要逐个判断每个点所处的网格,运个过程非常费时,使用运种方法,往往排序的时间 比构网的时间还要久。

【发明内容】

[0005] 为了改善传统Modon排序方法的不足及提高逐点插入法构网的效率,本发明提出 一种全新的Modon排序方法,在显著降低算法内存需求的情况下,极大的提高了Modon排 序的效率,有利于Modon排序的推广和应用。
[0006] 本发明采用的技术方案是:
[0007] -种面向TIN构建的Mcxrton排序方法,包括W下步骤:
[000引(1)读入待排序的二维点集P={pi,iG [0,n)},包括n个点的X坐标和Y坐标,定义 点集的四个方位:西北NW、西南SW、东北肥、东南SE;
[0009 ] (2)分解点集P W调整点集P中点的存储顺序:将点集P分为两部分:Pn和Ps,具体过 程为:计算点集P的Y坐标中位数机.5,利用Yo.5调整点集P内点的存储顺序,W满足如下条件:
[0010]
[0011]
[001^ (3)分解点集扣W调整点集Pn中点的存储顺序:将点集P娘刚kNW和刹k肥方位分
解为两个子点集Pnw和Pne,具体过程为:计算点集化的X坐标中位数Xo. 5,利用Xo. 5调整化内点 的存储顺序,W满足如下条件:
[0013]
[0014]
[001引(4)分解点集PsW调整点集Ps中点的存储顺序:将点集P淑西南SW和东南沈方位分 解为两个子点集Psw和Pse,具体过程为:计算点集Ps的X坐标中位数Xo.5,利用Xo.5调整Ps内点 的存储顺序,W满足如下条件:
[0016]
[0017]
[001引(5)对于步骤(3)和(4)中分解得到的子点集Pnw、Psw、Pne和PSE,逐个判断其中包含的 点数是否大于1,如果是,则说明子点集需要继续进行分解,分别W子点集Pnw、Psw、Pne和Pse作 为输入点集P,递归执行步骤(2)、(3)(4)和(5);否则该子点集分解完成;
[0019] (6)等待所有子点集分解结束,即完成点集P的Morton排序。
[0020] 步骤(1)中,点集的方位定义:过点集P的X坐标中位数Xo.5作一条垂直于X轴的直 线,过点集P的Y坐标中位数Yo.5作一条垂直于Y轴的直线,两条直线相交于点p(Xo.5,Yo.5),将 点集P的最小外接矩形MBR分为四个小矩形,每个矩形包含点集P的一个子点集,根据各矩形 的方位,将点集P分为W下四类:
[0021] 左上角矩形的方位为西北NW,对应的子点集是Pnw;
[0022] 左下角矩形的方位为西南SW,对应的子点集是Psw;
[0023] 右上角矩形的方位为东北肥,对应的子点集是Pne;
[0024] 右下角矩形的方位为东南SE,对应的子点集是Pse;
[00剧其中,子点集Pnw和子点集Pne合并称为点集Pn,子点集Psw和子点集Pse合并称为点集 Ps,子点集扣E和子点集Pse合并称为点集扣,子点集Pnw和子点集Psw合并称为点集Pw。
[0026] 所述点集P的最小外接矩形MBR定义如下:
[0027] xmax=max(pi ? x),iG [0,n)、xmin=min(pi ? x),iG [0,n);
[0028] ymax=max(pi ? y),iG [0,n)、ymin=min(pi ? y),iG [0,n);
[00巧] 现J由pNE(xmax,ymax),psE(xmax,ymin),pNw(xmin,ymax),psw(xmin,ymin)四个点组 成的矩形就是点集P的最小外接矩形MBR。
[0030] 中位数的定义:对于点集口={口1,1£[0,11)},其乂坐标的中位数姑.5是将点集口中的 点按照X坐标从小到大排序,然后取中间点的X坐标值,即X坐标的中位数Xo. 5 = Pn/2 ? X ;其Y 坐标的中位数Yo.5是将点集P中的点按照Y坐标从小到大排序,然后去中间点的Y坐标值,即Y 坐标的中位数Yo.日= Pn/2 ? y。
[0031] 现有的Modon排序方法都是面向空间剖分的,W网格不断剖分点集的最小外接矩 形,直到网格中的每个格元里仅包含一个点,最后按照各格元的Modon编码顺序输出格元 中的点,W实现点集的Modon排序。但是,当点集较大时,需要花费较多的时间和内存进行 网格剖分和判断网格中格元与点集中各点的包含关系,严重影响了排序方法的效率,也约 束了 T IN构建的效率。本发明的方法能够直接根据点集的坐标进行Modon排序,从而摆脱对 网格的依赖,可W避免传统Modon排序方法的不足,能够有效地解决TIN构建过程中点集的 Modon排序问题,提高了排序的效率,并且脱离了网格的辅助,因而极大降低了算法对于内 存的需求,大大减少了不必要的计算开销。
【附图说明】
[0032] 图1是本发明方法的流程图;
[0033] 图2是本发明实施例的点集方位示意图;
[0034] 图3是本发明实施例的输入点集示意图;
[0035] 图4是本发明实施例的排序结果示意图。
【具体实施方式】
[0036] 下面结合附图和实施例作进一步详细说明。
[0037] 如图1所示,本发明所述的一种面向TIN构建的Modon排序方法包括W下基本步 骤:
[0038] (1)读入待排序的二维点集P={pi,iG [0,n)},包括n个点的X坐标和Y坐标,定义 点集的四个方位:西北NW、西南SW、东北肥、东南SE。
[0039] 本实施例中,初始点集为
[0040] P={(3,3)、(11,1)、(15,3)、(3,15)、(3,7)、(1,13)、(5,11)、(13,7)、(9,9)、(7, 5)、(9,15)、(13,13)、(11,13)、(11,5)},其分布如附图 3 所示。
[0041 ] (2)分解点集P W调整点集P中点的存储顺序。将P分为两部分:Pn和Ps;具体包括:计 算点集P的Y坐标中位数Yo.5,利用Yo.5调整点集P内点的存储顺序,W满足如下条件:
[0044] 夺头黑WJT,订异巧荣圳、」1坐你 ^1 乂勁J日.日= <,化时:[0045] Ps={(3,3)、(ll,l)、(15,3)、(3,7)、(13,7)、(7,5)、(ll,5)}[0046] Pn={(3,15)、(1,13)、(5,11)、(9,9)、(9,15)、(13,13)、(11,13)}
[0042]
[0043]
[0047] (3)分解点集Ps W调整点集Ps中点的存储顺序。将Ps分解为左右两部分:Psw和Pse ; 具体包括:计算点集Ps的X坐标中位数Xo.5,利用Xo.5调整Ps内点的存储顺序,W满足如下条 件:
[004引
[0049]
[0050] 本实施例中,计算Ps的X坐标中位数Xo.日=11,此时:
[0051] Psw={(3,3)、(3,7)、(7,5)}
[0052] Pse= {(11,1)、(15,3)、(13,7)、(11,5)}
[00对 (4)分解点集化W调整点集化中点的存储顺序。将化分解为左右两部分:Pnw和Pne ;
具体包括:计算点集Pn的X坐标中位数Xo.5,利用Xo.5调整化内点的存储顺序,W满足如下条 件:
[0化4]
[0化5]
[0056] 本实施例中,计算Ps的X坐标中位数Xo.日=9,此时:
[0057] Pnx= {(3,15)、(1,13)、(5,11)}
[005引 Pne= {(9,9)、(9,15)、(13,13)、(11,13)}
[0059] (5)对于步骤(3)和(4)中分解得到的子点集Pnw、Psw、Pne和Pse,逐个判断其中包含的 点数是否大于1?如果是,则说明该子点集需要继续进行分割,分别W子点集Pnw、Psw、Pne和Pse 作为输入点击P,递归执行步骤(2)、(3)(4)和(5);否则该子点集分解完成;
[0060] 由于本实施例此时Pnw、Psw、Pne和Pse包含的点数都大于1,因而分别令P = Pnw、Psw、Pne 和PsE,递归执行(2)、(3)、(4)和巧)。
[0061] 对于Pnw,最终排序结果:{ (3,15)、(1,13)、巧,11)};
[0062] 对于 Psw,最终排序结果:{(3,7)、(7,5)、(3,3)};
[0063] 对于Pne,最终排序结果:{ (9,15)、(11,13)、(13,13)、(9,9)};
[0064] 对于 Pse,最终排序结果:{(11,5)、(13,7)、(11,1)、(15,3)}。
[0065] (6)等待所有子点集分解结束,即完成点集的Modon排序。
[0066] 将步骤(5)中最后的排序结果按照NW一肥一SW一SE的顺序输出,即实现了对输入 点集的排序,最终的排序结果为:
[0067] {(3,15)、(1,13)、巧,11)、(9,15)、(11,13)、(13,13)、(9,9)、(3,7)、(7,5)、(3,3)、 (11,5)、(13,7)、(11,1)、(15,3)},与附图4中曲线经过点集的顺序一致。
【主权项】
1. 一种面向TIN构建的Morton排序方法,其特征在于,包括以下步骤: (1) 读入待排序的二维点集P = {Pi,i e [ 0,η)},包括η个点的X坐标和Y坐标,定义点集的 四个方位:西北NW、西南SW、东北ΝΕ、东南SE; (2) 分解点集Ρ以调整点集Ρ中点的存储顺序:将点集Ρ分为两部分:Ρν和Ps,具体过程为: 计算点集P的Y坐标中位数Y0.5,利用Yo.5调整点集P内点的存储顺序,以满足如下条件:(3) 分解点集Ρν以调整点集Ρν中点的存储顺序:将点集Ρν按西北NW和东北ΝΕ方位分解为 两个子点集Pnw和Pne,具体过程为:计算点集Ρν的X坐标中位数Χο. 5,利用Χο. 5调整Ρν内点的存 储顺序,以满足如下条件:(4) 分解点集Ps以调整点集Ps中点的存储顺序:将点集Ps按西南SW和东南SE方位分解为 两个子点集Psw和Pse,具体过程为:计算点集Ps的X坐标中位数Χο. 5,利用Χο. 5调整Ps内点的存 储顺序,以满足如下条件:(5) 对于步骤(3)和(4)中分解得到的子点集PNW、Psw、PNE和PSE,逐个判断其中包含的点数 是否大于1,如果是,则说明子点集需要继续进行分解,分别以子点集Pnw、Psw、P NE和Pse作为输 入点集P,递归执行步骤(2)、(3)(4)和(5);否则该子点集分解完成; (6) 等待所有子点集分解结束,即完成点集P的Morton排序。2. 根据权利要求1所述的一种面向TIN构建的Morton排序方法,其特征在于,步骤(1) 中,点集的方位定义:过点集P的X坐标中位数Χο.5作一条垂直于X轴的直线,过点集P的Y坐标 中位数Yo. 5作一条垂直于Y轴的直线,两条直线相交于点Ρ(Χο.5,Υο.5),将点集P的最小外接矩 形MBR分为四个小矩形,每个矩形包含点集Ρ的一个子点集,根据各矩形的方位,将点集Ρ分 为以下四类: 左上角矩形的方位为西北NW,对应的子点集是Pnw; 左下角矩形的方位为西南SW,对应的子点集是Psw; 右上角矩形的方位为东北NE,对应的子点集是PNE; 右下角矩形的方位为东南SE,对应的子点集是PSE; 其中,子点集Pnw和子点集Pne合并称为点集Pn,子点集Psw和子点集Pse合并称为点集Ps,子 点集Pne和子点集Pse合并称为点集Pe,子点集Pm和子点集Psw合并称为点集Pw。3. 根据权利要求1所述的一种面向TIN构建的Morton排序方法,其特征在于,所述点集P 的最小外接矩形MBR定义如下: xmax=max(pi · x),ie[〇,n)、xmin=min(pi,x),i G [〇,n); ymax=max(pi · y),ie[〇,n)、ymin=min(pi,y),i G [〇,n); 贝丨J 由Pne(xmax,ymax),pse(xmax,ymin),pnw(xmin,ymax),psw(xmin,ymin)四个点组成的 矩形就是点集P的最小外接矩形MBR。4.根据权利要求1所述的一种面向TIN构建的Morton排序方法,其特征在于,中位数的 定义:对于点集P= {pi,i e [〇,n)},其X坐标的中位数X〇.5是将点集P中的点按照X坐标从小 到大排序,然后取中间点的X坐标值,即X坐标的中位数Χο. 5 = ρη/2 · X ;其Y坐标的中位数Yo. 5 是将点集Ρ中的点按照Υ坐标从小到大排序,然后去中间点的Υ坐标值,即Υ坐标的中位数Υ〇. 5 =ρη/2 · y〇
【文档编号】G06T17/05GK105957143SQ201610243339
【公开日】2016年9月21日
【申请日】2016年4月19日
【发明人】林冰仙, 刘年涛, 周良辰
【申请人】南京师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1