淺談Delaunay三角網(wǎng)的并行構(gòu)建和更新論文
三角網(wǎng)是由一系列連續(xù)三角形構(gòu)成的網(wǎng)狀的平面控制圖形,是三角測量中布設(shè)連續(xù)三角形的兩種主要擴展形式,同時向各方向擴展而構(gòu)成網(wǎng)狀.適用于地勢起伏大,通視條件比較好的場地。以下是學(xué)習(xí)啦小編為大家精心準(zhǔn)備的:淺談Delaunay三角網(wǎng)的并行構(gòu)建和更新相關(guān)論文。內(nèi)容僅供參考,歡迎閱讀!
淺談Delaunay三角網(wǎng)的并行構(gòu)建和更新全文如下:
隨著測量技術(shù)的發(fā)展和新型測量設(shè)備的出現(xiàn),空間數(shù)據(jù)的獲取變得更加容易和快捷,與此同時,數(shù)據(jù)量也呈爆炸性的增長。如何利用這些海量的空間數(shù)據(jù)實現(xiàn)數(shù)字地面模型DTM 的高效構(gòu)建是當(dāng)前空間分析及應(yīng)用領(lǐng)域亟需解決的問題之一。Delaunay 三角網(wǎng)以其唯一性、空圓性、能以不同分辨率表達(dá)地形、適合各種分布的數(shù)據(jù)等諸多優(yōu)點而被廣泛地應(yīng)用于DTM 建模中。
長久以來,國內(nèi)外學(xué)者對Delaunay 三角網(wǎng)的構(gòu)建提出了多種算法。這些算法按實現(xiàn)過程大致可以分為三類:逐點插入法、分治法和掃描線法。陳楚江等提出了實現(xiàn)三角網(wǎng)局部更新的方法。陳少勤等提出利用多源數(shù)據(jù)實現(xiàn)不規(guī)則三角網(wǎng)的動態(tài)更新。但這些算法都是基于串行程序?qū)崿F(xiàn),不支持點并行的插入和刪除。
隨著多核計算機的普及,并行為解決大數(shù)據(jù)量的不規(guī)則三角網(wǎng)(TIN)構(gòu)建和更新提供了新的思路。不少學(xué)者也對此做了研究,李堅等提出將分治算法與流數(shù)據(jù)處理方法相結(jié)合,利用多核處理器平臺進(jìn)行并行運算。張真[7]提出一種適用于并行計算的歸并構(gòu)網(wǎng)方法。這些算法滿足于Delaunay 三角網(wǎng)的并行構(gòu)建,但不適用于三角網(wǎng)的并行動態(tài)更新。因為在這些算法在開始之前,點集必須是確定的,而三角網(wǎng)更新時,被插入(刪除)點是不確定的。
文章提出一種單機多核環(huán)境下Delaunay 三角網(wǎng)并行構(gòu)建算法,該算法將數(shù)據(jù)進(jìn)行格網(wǎng)劃分,每一個數(shù)據(jù)塊作為一個工作單元。同時為解決內(nèi)存共享帶來的問題,可以為各工作單元分配獨立的內(nèi)存空間,工作單元之間相對獨立,因此可以很好的實現(xiàn)三角網(wǎng)的并行構(gòu)建和更新。
并行算法采用數(shù)據(jù)分塊[8]的思想,首先將點數(shù)據(jù)按給定閾值(實驗中發(fā)現(xiàn)閾值選擇受實驗環(huán)境影響)進(jìn)行格網(wǎng)劃分,每一個數(shù)據(jù)塊形成一個獨立的工作單元。每一個工作單元只負(fù)責(zé)所屬區(qū)域內(nèi)三角網(wǎng)的構(gòu)建更新。利用計算機單機多核的優(yōu)勢,可以同時將多個工作單元分配給計算機進(jìn)行處理。最后將相鄰的區(qū)域進(jìn)行合并,最終完成三角網(wǎng)的構(gòu)建。每一個工作單元所負(fù)責(zé)的工作主要有三方面:初始三角網(wǎng)的構(gòu)建、點的插入和刪除,下面將分別闡述。
1 初始三角網(wǎng)構(gòu)建
主線程對隊列中的所用點進(jìn)行掃描,如果點位于某一個工作單元負(fù)責(zé)的區(qū)域,則將點移動到該工作單元的私有隊列中。工作單元根據(jù)負(fù)責(zé)區(qū)域的四個角點坐標(biāo)形成兩個初始三角形,然后從自己的私有隊列中取點進(jìn)行插入構(gòu)網(wǎng)。主要步驟如下:
(1)先找到包含點集中所有點的初始三角形,即將數(shù)據(jù)塊的邊界線向外擴大某個值d,然后連接任意一條對角線,形成兩個超三角形,并對其進(jìn)行標(biāo)號;
(2)取點集中的任意一點v,查找v 點所在的三角形,如果v 在三角形內(nèi)則連接v 和三角形的三個頂點,如果點v 在三角形邊上,則連接該邊相對的一個或兩個頂點,如果該點與三角形頂點重合則放棄該點;
(3)調(diào)用Lop 優(yōu)化算法,判斷點的影響區(qū)域,對局部三角網(wǎng)進(jìn)行更新;
(4)重復(fù)(2)到(3)步,直到所有點插入三角網(wǎng);
(5)刪除包含超三角形頂點的所有三角形,算法結(jié)束。
2 點的插入或刪除
對生成的初始三角網(wǎng)進(jìn)行更新,主要是通過插入和刪除點來完成。對于需要插入的點集P,主線程首先對其進(jìn)行掃描,將點分配到所屬區(qū)域的私有隊列P1、P2、P3…中。然后將工作單元分配到各個處理器上進(jìn)行執(zhí)行。單點插入過程主要步驟如下:(1)找到包含插入點v 的三角形t;(2)檢索所有與t 關(guān)聯(lián)的三角形,找到外接圓中包含點v 的三角形集D (v);(3)D (v)的外邊界相連形成一個多邊形P(v);(4)將P(v)內(nèi)的三角形邊刪除;(5)連接P(v)的頂點和v 形成新的Delaunay 三角網(wǎng)D (v);(6)用D (v)取代D (v)形成新的Delaunay 三角網(wǎng),完成一點插入。刪除點時只需要找到對應(yīng)的點,然后將與之關(guān)聯(lián)的點重新構(gòu)造三角網(wǎng)即可。
3 內(nèi)存管理
在多線程程序中,多個線程同時對內(nèi)存進(jìn)行訪問,在創(chuàng)建(刪除)三角形或點時,每一個線程都需要調(diào)用內(nèi)核進(jìn)行內(nèi)存的分配(釋放)。這時會因為存在大量的鎖競爭而花費很高比例的時間,這對于追求高效率的并行目的是不符的。為了避免這種情況的發(fā)生,可以為每一個線程分配獨立的內(nèi)存空間,線程在其中創(chuàng)建數(shù)據(jù)塊,如果數(shù)據(jù)被刪除,則把它還給自己的內(nèi)存池。當(dāng)內(nèi)存池中空間不足時,線程才會調(diào)用內(nèi)核申請新的內(nèi)存塊。
4 實驗和分析
由于點集中數(shù)據(jù)點的分布狀態(tài)對一個算法的速度和精度都有很大的影響,所以我們采用三種典型的數(shù)據(jù)分布對算法進(jìn)行測試,分別為:線性分布、標(biāo)準(zhǔn)分布和均勻分布。
實驗環(huán)境為6 核12 線程Intel Core i7 4930k CUP(3.4GHz)、16G 內(nèi)存。分別將15M 不同分布狀態(tài)的點數(shù)據(jù)在多個線程上運行。用加速比來衡量并行程序的性能和效果。
結(jié)果表明并行算法能很大的提高構(gòu)網(wǎng)的速度,且并行數(shù)越多,速度越快。分布狀態(tài)不同的數(shù)據(jù)對于串行算法執(zhí)行時間影響更大,而對于并行算法,隨著并行數(shù)增加,這種影響就越小。這也說明并行算法對于復(fù)雜地形的數(shù)據(jù)有很好的適應(yīng)性。
5 結(jié)束語
Delaunay 三角網(wǎng)對DTM 模型建立和分析的一種重要手段。文章針對海量數(shù)據(jù)并行構(gòu)建三角網(wǎng)的要求,提出一種基于數(shù)據(jù)分塊的并行構(gòu)網(wǎng)方法。該方法構(gòu)網(wǎng)前不需要對元數(shù)據(jù)進(jìn)行刪重、排序等預(yù)處理,實現(xiàn)點的并行插入和刪除,而且對不同分布狀態(tài)的數(shù)據(jù)有很好的適應(yīng)性。由于算法可以動態(tài)的對三角網(wǎng)進(jìn)行更新,因此可以方便的對模型進(jìn)行實時編輯,并用于工程計算和分析,如土石方量計算、建立DTM 模型、等高線繪制等。
【淺談Delaunay三角網(wǎng)的并行構(gòu)建和更新】相關(guān)文章: