本發(fā)明屬于地形特征提取與重構(gòu)技術(shù)領(lǐng)域,具體涉及一種復(fù)雜地質(zhì)曲面特征提取與重構(gòu)方法的設(shè)計(jì)。
背景技術(shù):
數(shù)字高程模型(DEM,Digital Elevation Model)的概念是在1958年由美國(guó)麻省理工學(xué)院的Miller教授提出來(lái)的,主要是針對(duì)于物理地形的一種數(shù)學(xué)建模,以便能運(yùn)用計(jì)算機(jī)對(duì)現(xiàn)實(shí)世界中真實(shí)存在的地形進(jìn)行分析和數(shù)字化處理。依據(jù)當(dāng)前計(jì)算機(jī)的強(qiáng)大處理能力,相比于傳統(tǒng)紙質(zhì)地形模型(如地圖)及圖像,基于數(shù)字高程模型的數(shù)字地形至少具有以下優(yōu)點(diǎn):
(1)便于地形數(shù)據(jù)的存儲(chǔ)與管理;
(2)便于對(duì)地形進(jìn)行分析和計(jì)算;
(3)可以無(wú)損的縮放,便于分析地形細(xì)節(jié);
(4)便于設(shè)計(jì)算法對(duì)地形進(jìn)行智能化處理;
(5)便于實(shí)時(shí)更新。
從狹義角度而言,數(shù)字高程模型定義為區(qū)域地形表面海拔高度的數(shù)字化表達(dá);從廣義角度,數(shù)字高程模型是地理空間中地理對(duì)象表面海拔高度的數(shù)字化表達(dá)。數(shù)學(xué)上,數(shù)字高程模型為定義在二維平面上的函數(shù),其參數(shù)為地形點(diǎn)在XOY平面上的點(diǎn)坐標(biāo),其值為該地形點(diǎn)的高程值。數(shù)字高程模型根據(jù)網(wǎng)格的不同分為基于格網(wǎng)的DEM和基于三角網(wǎng)的DEM。
在數(shù)字地形分析領(lǐng)域,基于數(shù)字高程模型的地形分析已經(jīng)成為最主要的方向之一,其主要內(nèi)容包括DEM的地形特征提取、地形重建等,同時(shí)這兩者也是數(shù)字地形分析領(lǐng)域的重點(diǎn)與難點(diǎn),相關(guān)文章已大量存在。數(shù)字地形分析在經(jīng)濟(jì)建設(shè)、社會(huì)發(fā)展、精細(xì)農(nóng)業(yè)、智能化交通、現(xiàn)代化戰(zhàn)爭(zhēng)及人民生活等方面發(fā)揮著重要作用,這不僅給現(xiàn)代科學(xué)技術(shù)的發(fā)展帶來(lái)了新的契機(jī),在深層次上實(shí)現(xiàn)計(jì)算機(jī)科學(xué)、信息科學(xué)、地球科學(xué)、系統(tǒng)科學(xué)的有機(jī)融合,而且將對(duì)人們的生存方式乃至國(guó)家的發(fā)展戰(zhàn)略產(chǎn)生深遠(yuǎn)的影響。
根據(jù)所選取的數(shù)字高程模型的類型不同,DEM地形特征的提取分為:基于規(guī)則格網(wǎng)DEM的地形特征提取、基于等高線DEM的地形特征提取和基于三角網(wǎng)DEM的地形特征提取。
(1)規(guī)則格網(wǎng)數(shù)字高程模型(格網(wǎng)DEM)。
規(guī)則格網(wǎng)DEM是地形分析中最典型的數(shù)據(jù)模型之一,許多國(guó)家的DEM數(shù)據(jù)都是以規(guī)則格網(wǎng)的數(shù)據(jù)矩陣形式提供的(如美國(guó)USGS提供分辨率為30m、90m的DEM;澳大利亞、日本、英國(guó)均提供50m分辨率的DEM;而加拿大為93m的DEM,法國(guó)為100m的DEM)。規(guī)則格網(wǎng)DEM以格網(wǎng)方式放置原始點(diǎn),每個(gè)子單元為一個(gè)標(biāo)準(zhǔn)矩形,各地形點(diǎn)根據(jù)其X,Y坐標(biāo)值與格網(wǎng)坐標(biāo)系的映射關(guān)系置于各子格網(wǎng)頂點(diǎn)中,地形點(diǎn)在格網(wǎng)中的Z值為該點(diǎn)的高程值。規(guī)則格網(wǎng)DEM因其數(shù)據(jù)結(jié)構(gòu)的規(guī)范性與簡(jiǎn)便性,使其成為了目前數(shù)字地形研究中主要采取的數(shù)據(jù)源格式。對(duì)于規(guī)則格網(wǎng)DEM中的地形點(diǎn),與其拓?fù)湎嚓P(guān)的其他地形點(diǎn)主要為其上、下、左、右、左下、左上、右下、右上共八個(gè)領(lǐng)域點(diǎn),點(diǎn)結(jié)構(gòu)拓?fù)浣Y(jié)構(gòu)相對(duì)三角網(wǎng)DEM而言更容易構(gòu)建。針對(duì)規(guī)則格網(wǎng)DEM的研究已經(jīng)較為成熟。
(2)三角網(wǎng)(TIN)數(shù)字高程模型(三角網(wǎng)DEM)。
三角網(wǎng)數(shù)字高程模型也稱為三角網(wǎng)DEM,是另一種在地形研究中被普通采用的模型結(jié)構(gòu),主要以三角網(wǎng)形式組織原始地形數(shù)據(jù),即將原始地形點(diǎn)根據(jù)其X,Y坐標(biāo)放置于平面三角網(wǎng)中某個(gè)三角形頂點(diǎn)處,高程對(duì)應(yīng)于該點(diǎn)的Z值。三角網(wǎng)DEM通過(guò)互相鄰接的三角形集來(lái)表示原始地形,組成三角網(wǎng)的三角形之間互不相交、互不包含,相比格網(wǎng)DEM對(duì)原始地形點(diǎn)分布位置的嚴(yán)格要求,三角網(wǎng)DEM在表示無(wú)規(guī)律、分布不均勻的原始地形點(diǎn)方面具有明顯的優(yōu)勢(shì)。但鑒于TIN在數(shù)據(jù)結(jié)構(gòu)、構(gòu)建TIN、算法設(shè)計(jì)、管理等方面較為復(fù)雜,使得針對(duì)于三角網(wǎng)DEM的研究相對(duì)較少,繼續(xù)研究的空間較大。
值得一提的是,規(guī)則格網(wǎng)DEM可非常簡(jiǎn)便地轉(zhuǎn)為三角網(wǎng)DEM,即只需將規(guī)則格網(wǎng)的每個(gè)矩形中某條對(duì)角線連接起來(lái)即可。當(dāng)然,以上三角化方法有較多缺陷,如未考慮連接的最佳性問(wèn)題等,其他連接算法如DELAUNAY(德勞內(nèi))三角化算法能較好地解決三角化的最優(yōu)問(wèn)題。
根據(jù)提取算法的不同,地形特征的提取算法又分為:斷面極值法、鄰域比較法和流水模擬法。
(1)斷面極值法提取地形特征點(diǎn)。
地形幾何分析中提取地形特征點(diǎn)的一個(gè)典型算法為斷面極值法,該方法認(rèn)為地形斷面曲線上的極大值點(diǎn)為地形脊點(diǎn),而極小值點(diǎn)為地形谷點(diǎn)。算法的實(shí)現(xiàn)過(guò)程可總結(jié)為:先找出DEM的系列縱橫斷面上的極大值、極小值點(diǎn),作為地形特征上的候選點(diǎn),然后通過(guò)設(shè)計(jì)合適的特征辨別算法,濾除不符合條件的特征點(diǎn)以及將特征點(diǎn)歸類到對(duì)應(yīng)的特征線中。
算法缺點(diǎn):不能顧及區(qū)域地形變化的特殊規(guī)律,對(duì)地形噪聲的容錯(cuò)能力不高;易導(dǎo)致特征點(diǎn)(或線)提取的碎片化;可供求導(dǎo)的方向有限,易導(dǎo)致地形點(diǎn)屬性的判斷失誤;無(wú)法對(duì)邊界點(diǎn)進(jìn)行判斷。
(2)鄰域比較法提取地形特征點(diǎn)。
鄰域比較法的思想為對(duì)目標(biāo)地形點(diǎn)與局部窗口的其他各點(diǎn)進(jìn)行高程比較,比較方法和窗口大小的選取在各文獻(xiàn)中稍有不同,其核心為:如果該點(diǎn)為窗口內(nèi)的最高點(diǎn),則該點(diǎn)為候選山脊點(diǎn),反之則為候選山谷點(diǎn);其特征屬性的最終確認(rèn)還需配合其他方法。
算法缺點(diǎn):對(duì)特殊地形地貌的提取效果較差,對(duì)噪聲的容錯(cuò)能力較差;生成的特征線相當(dāng)零碎,在細(xì)微地方存在特征線交叉問(wèn)題;閾值的大小設(shè)定對(duì)提取結(jié)果影響較大,需人工反復(fù)測(cè)試閾值的合適大小。
(3)流水模擬法提取地形特征點(diǎn).
流水模擬法是三種地形特征提取算法中最復(fù)雜的一個(gè),同時(shí)在大多數(shù)情況下也是提取效果最好的一個(gè),算法經(jīng)過(guò)簡(jiǎn)單變形就能應(yīng)用于規(guī)則格網(wǎng)DEM和三角網(wǎng)DEM,因此算法的適用范圍較廣。流水模擬法也是目前研究相對(duì)不足的算法,可供繼續(xù)研究的空間較大。
流水模擬法根據(jù)水流總是由高處流向低處這一物理規(guī)則來(lái)提取地形的山脊線與山谷線(兩者也是最難準(zhǔn)確提取的地形特征),流水模擬法認(rèn)為山脊線也即分水線,山谷線也即匯水線,即水流流入山脊點(diǎn)或山脊線時(shí)將向鄰域出流,反之,水流將從鄰域流向該區(qū)域內(nèi)的山谷點(diǎn)或山谷線。考慮到山脊線與山谷線的定義和物理特性,該判斷規(guī)則與實(shí)際情況基本相符。算法認(rèn)為每點(diǎn)自身的水流量為1,經(jīng)過(guò)水流的流入與流出,如果某點(diǎn)最終的匯水量超過(guò)某一設(shè)定的閾值,則該點(diǎn)為山谷點(diǎn),山脊點(diǎn)的判斷與提取和山谷點(diǎn)類似。
地形重構(gòu)技術(shù)也稱為地形生成技術(shù),指的是根據(jù)已有地形點(diǎn)(或線)通過(guò)適當(dāng)?shù)闹亟ㄋ惴ㄉ稍匦蔚娜S模擬地形的技術(shù)。地形重構(gòu)技術(shù)在地質(zhì)勘探、軍事活動(dòng)、農(nóng)業(yè)生產(chǎn)及水利方程等方面發(fā)揮著重要作用,同時(shí)也是逆向工程領(lǐng)域研究的重點(diǎn)內(nèi)容之一。
地形重構(gòu)可分為直接重構(gòu)與間接重構(gòu),直接重構(gòu)即通過(guò)將已有地形點(diǎn)直接映射到對(duì)應(yīng)的空間位置,并依據(jù)點(diǎn)間拓?fù)潢P(guān)系將空間點(diǎn)連接成地形表面來(lái)重構(gòu)原始地形。因?yàn)橹苯又貥?gòu)技術(shù)對(duì)地形點(diǎn)的嚴(yán)格要求,使得原始已有地形點(diǎn)極少能符合條件,這導(dǎo)致直接重構(gòu)技術(shù)無(wú)法單獨(dú)用于地形重構(gòu)。
近年來(lái),偏微分方程(Partial Differential Equation,PDE)方法作為一種高效的曲面設(shè)計(jì)工具被引進(jìn)了計(jì)算機(jī)輔助設(shè)計(jì)領(lǐng)域。從理論上分析,偏微分方程曲面造型技術(shù)具有一大優(yōu)勢(shì),即定義一張空間曲面的大部分信息來(lái)源于曲面的邊界條件,這就可以僅通過(guò)少量的參數(shù)來(lái)重構(gòu)和控制曲面。通過(guò)改變邊界條件和偏微分方程中的形狀控制參數(shù),可以生成各種曲面形狀。
哈希關(guān)系的本質(zhì)是一種映射關(guān)系,將索引和索引對(duì)應(yīng)的值以哈希規(guī)則連接起來(lái),之后的查詢只要知道了索引(稱為哈希函數(shù)的鍵)值便可通過(guò)已知的哈希映射規(guī)則找到對(duì)應(yīng)的值(稱為哈希值)。這里的映射規(guī)則即為哈希函數(shù)(Hash Function),索引值通過(guò)哈希函數(shù)得到的映射值稱為哈希地址(Hash Address),所有索引值與對(duì)應(yīng)的哈希函數(shù)值組成一張對(duì)應(yīng)表,稱為哈希表(Hash Table)。哈希表沖突是指在給定的相同哈希規(guī)則下,不同的鍵值對(duì)應(yīng)相同的哈希值。哈希沖突是設(shè)計(jì)哈希函數(shù)時(shí)必須考慮的重點(diǎn)和難點(diǎn),理論上而言,哈希沖突不可能完全避免,所以設(shè)計(jì)的方向應(yīng)該是考慮如何讓哈希沖突發(fā)生的機(jī)率盡可能地小。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中基于三角網(wǎng)DEM的地形特征提取算法計(jì)算量大、效率低,特征點(diǎn)或特征線的提取易出現(xiàn)碎片化,且地形重構(gòu)方法具有不平滑性的問(wèn)題,提出了一種復(fù)雜地質(zhì)曲面特征提取與重構(gòu)方法。
本發(fā)明的技術(shù)方案為:一種復(fù)雜地質(zhì)曲面特征提取與重構(gòu)方法,包括以下步驟:
S1、提取滿足唯一性約束的三角網(wǎng)候選山谷線;
S2、對(duì)候選山谷線進(jìn)行追蹤與結(jié)構(gòu)建立;
S3、通過(guò)對(duì)原地形進(jìn)行翻轉(zhuǎn)后提取翻轉(zhuǎn)地形的山谷線提取三角網(wǎng)山脊線;
S4、采用四階偏微分方程進(jìn)行曲面平滑重構(gòu)。
進(jìn)一步地,步驟S1包括以下分步驟:
S1-01、遍歷邊哈希表lineMap中的每條邊;
S1-02、判斷邊是否遍歷結(jié)束,若是則進(jìn)入步驟S1-11,否則進(jìn)入步驟S1-03;
S1-03、獲取當(dāng)前邊及其左右三角形ID;
S1-04、判斷左右三角形ID是否均不為空,若是則進(jìn)入步驟S1-06,否則進(jìn)入步驟S1-05;
S1-05、判定當(dāng)前邊為邊界邊,不考慮匯水性,返回步驟S1-01;
S1-06、根據(jù)左右三角形ID從三角網(wǎng)哈希表tinMap中獲取當(dāng)前邊的左右鄰接三角形;
S1-07、計(jì)算當(dāng)前邊左右鄰接三角形的水流方向;
S1-08、計(jì)算當(dāng)前邊左右鄰接三角形水流方向與該邊的流向關(guān)系值;
S1-09、判斷當(dāng)前邊的匯水特性并更新邊哈希表lineMap;
S1-10、將匯水邊加入候選匯水邊集合,返回步驟S1-01;
S1-11、遍歷三角網(wǎng)哈希表tinMap中的每個(gè)三角形;
S1-12、判斷三角形是否遍歷結(jié)束,若是則進(jìn)入步驟S2,否則進(jìn)入步驟S1-13;
S1-13、獲取當(dāng)前三角形的匯水邊條數(shù);
S1-14、判斷匯水邊是否多于一條,若是則進(jìn)入步驟S1-15,否則返回步驟S1-11;
S1-15、對(duì)每條匯水邊,計(jì)算其左右鄰接三角形流向該邊的匯水量之和;
S1-16、將原匯水邊中匯水量最大的邊匯水屬性保持不變,其他邊匯水屬性改為未判斷;
S1-17、更新邊哈希表lineMap及候選匯水邊集合,返回步驟S1-11。
進(jìn)一步地,步驟S2包括以下分步驟:
S2-01、遍歷邊哈希表lineMap,獲取邊界點(diǎn)集;
S2-02、更新以給定點(diǎn)為起點(diǎn)的邊哈希表linesWithStartpointMap及以給定點(diǎn)為終點(diǎn)的邊哈希表linesWithEndpointMap;
S2-03、遍歷點(diǎn)哈希表pointMap獲取洼地點(diǎn)集;
S2-04、遍歷候選匯水邊,將終止于邊界點(diǎn)或洼地點(diǎn)的邊加入待追蹤匯水邊;
S2-05、遍歷待追蹤匯水邊;
S2-06、判斷待追蹤匯水邊是否遍歷結(jié)束,若是則進(jìn)入步驟S3,否則進(jìn)入步驟S2-07;
S2-07、設(shè)當(dāng)前遍歷邊為curLine;
S2-08、新建結(jié)果匯水邊集;
S2-09、判斷curLine是否已處理過(guò),若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-10;
S2-10、將curLine加入結(jié)果匯水邊集;
S2-11、判斷curLine是否為邊界邊,若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-12;
S2-12、從linesWithEndpointMap中獲取流入curLine起點(diǎn)的匯水邊集;
S2-13、判斷獲取的匯水邊集是否為空,若是則進(jìn)入步驟S2-15,否則進(jìn)入步驟S2-14;
S2-14、遍歷每一條獲取到的匯水邊,置curLine為當(dāng)前遍歷匯水邊,返回步驟S2-09;
S2-15、邊匯流追蹤中斷,考慮面匯流;
S2-16、判斷連續(xù)追蹤匯流面?zhèn)€數(shù)是否達(dá)到設(shè)定值,若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-17;
S2-17、判斷出流對(duì)象是邊還是面,若是邊則進(jìn)入步驟S2-18,若是面則進(jìn)入步驟S2-19;
S2-18、獲取流入curLine的坡度最大的匯水面curTIN,進(jìn)入步驟S2-20;
S2-19、獲取流入三角形三邊的坡度最大的匯水面curTIN,進(jìn)入步驟S2-20;
S2-20、判斷curTIN是否存在,若是則進(jìn)入步驟S2-21,否則進(jìn)入步驟S2-24;
S2-21、判斷curTIN是否已處理過(guò),若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-22;
S2-22、將curTIN的三邊加入結(jié)果匯水邊集;
S2-23、獲取流入curTIN三個(gè)頂點(diǎn)的匯水邊集,返回步驟S2-13;
S2-24、判定當(dāng)前邊的所有流入分支追蹤完畢,返回步驟S2-05。
進(jìn)一步地,步驟S4中若通過(guò)三角網(wǎng)數(shù)據(jù)提取出的山谷點(diǎn)或山脊點(diǎn)不在任何一個(gè)格網(wǎng)點(diǎn)上,則以該山谷點(diǎn)或山脊點(diǎn)為中心生成單個(gè)格網(wǎng)區(qū)域,該格網(wǎng)區(qū)域內(nèi)的格網(wǎng)點(diǎn)的高程值被賦值為該特征點(diǎn)的高程值,并且不參與平滑,即該山谷點(diǎn)或山脊點(diǎn)單格網(wǎng)影響區(qū)域內(nèi)的格網(wǎng)點(diǎn)均被認(rèn)為是該山谷點(diǎn)或山脊點(diǎn)本身。
本發(fā)明的有益效果是:
(1)通過(guò)借鑒水文分析中河網(wǎng)追蹤方面的相關(guān)知識(shí)并引入面追蹤,解決了特征線提取時(shí)的碎片化問(wèn)題。
(2)運(yùn)用哈希表極大地減少了地形特征提取部分的計(jì)算量,極大地提高了提取效率。
(3)基于三角網(wǎng)數(shù)據(jù)直接重構(gòu)地形的不平滑性,采用了基于四階偏微分方程的地形曲面平滑重構(gòu)思想,在平滑過(guò)程中為保留原始曲面的地形特征而引入了特征點(diǎn)約束,在曲面平滑和曲面特征保留之間取得了較好的平衡。
附圖說(shuō)明
圖1為本發(fā)明提供的一種復(fù)雜地質(zhì)曲面特征提取與重構(gòu)方法流程圖。
圖2為本發(fā)明實(shí)施例的三角形特征邊唯一性約束示意圖。
圖3為本發(fā)明步驟S1的分步驟流程圖。
圖4為本發(fā)明實(shí)施例的特征線面追蹤示意圖。
圖5為本發(fā)明步驟S2的分步驟流程圖。
圖6為本發(fā)明實(shí)施例的格網(wǎng)點(diǎn)添加特征約束示意圖。
圖7為本發(fā)明實(shí)施例的無(wú)特征約束的四階偏微分曲面重構(gòu)效果圖。
圖8為本發(fā)明實(shí)施例的特征約束下的四階偏微分曲面平滑重構(gòu)效果圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例作進(jìn)一步的說(shuō)明。
本發(fā)明實(shí)施例中用到的主要數(shù)據(jù)結(jié)構(gòu)如表1所示:
表1
在表1中,點(diǎn)數(shù)據(jù)結(jié)構(gòu)的點(diǎn)ID為字符串類型,由1自增長(zhǎng);三角網(wǎng)常規(guī)鏈表結(jié)構(gòu)中的三角形ID為整型,由1自增長(zhǎng),三角形的三點(diǎn)ID為對(duì)應(yīng)點(diǎn)結(jié)構(gòu)的ID;三角網(wǎng)邊結(jié)構(gòu)中的邊ID為字符串類型,由邊兩端點(diǎn)對(duì)應(yīng)的點(diǎn)ID拼接而成,其中高程值較大的點(diǎn)ID在前,高程值較小的點(diǎn)ID在后,邊起點(diǎn)和終點(diǎn)ID為對(duì)應(yīng)點(diǎn)結(jié)構(gòu)ID,邊左、右鄰接三角形屬性值為相應(yīng)的三角形ID值(約定邊方向?yàn)橛筛叱讨递^大的端點(diǎn)指向高程值較小的端點(diǎn)),邊匯水性為枚舉類型,枚舉值中的枚舉元素包括匯水邊、分水邊、過(guò)水邊、未判斷。
本發(fā)明實(shí)施例中用到的主要哈希函數(shù)(均為全局變量)如下表2所示:
表2
本發(fā)明對(duì)哈希函數(shù)的運(yùn)用廣泛存在于三角網(wǎng)邊結(jié)構(gòu)的構(gòu)建、特征線的判斷與追蹤、特征線結(jié)構(gòu)的構(gòu)建及特征線編碼等各個(gè)方面,哈希思想的運(yùn)用極大地減少了本發(fā)明地形特征提取部分的計(jì)算量,極大地提高了提取效率。
本發(fā)明提供的一種復(fù)雜地質(zhì)曲面特征提取與重構(gòu)方法,如圖1所示,包括以下步驟:
S1、提取滿足唯一性約束的三角網(wǎng)候選山谷線。
通過(guò)對(duì)每一條邊進(jìn)行遍歷,判斷其匯水特性,提取所有的匯水段作為候選山谷線,分水段作為候選山脊線。然而,通過(guò)上述方法有可能出現(xiàn)一個(gè)三角形上出現(xiàn)兩條甚至三條山谷線段(或山脊線段)的情況,依據(jù)水文分析理論,三角網(wǎng)中任一三角形最多只能有一條山谷線段(或山脊線段)。
如圖2所示,假設(shè)求得三角形AB與BC邊均為匯水邊,此時(shí)可通過(guò)比較邊AB與邊BC的過(guò)水面積,過(guò)水面積較大的邊保持邊匯水屬性判斷,而過(guò)水面積較小的邊其屬性改為未判斷。比較AB邊與BC邊的過(guò)水面積等同于比較圖2中邊AE與CF的大小,判定方法如下:以點(diǎn)B為坐標(biāo)原點(diǎn),此時(shí)矢量S的方程為ax+by=0,點(diǎn)A與點(diǎn)C的坐標(biāo)分別變換為(xA-xB,yA-yB)和(xC-xB,yC-yB),根據(jù)點(diǎn)到直線的距離公式可得,當(dāng)a(xA-xB)+b(yA-yB)+c|>|a(xC-xB)+b(yC-yB)+c|時(shí),邊AB的過(guò)水面積大于邊BC的過(guò)水面積,反之亦然??紤]到本發(fā)明采用的是三角網(wǎng)的邊拓?fù)浣Y(jié)構(gòu),則邊的匯水量計(jì)算調(diào)整為該邊左右兩個(gè)鄰接三角形的水流流向該邊的匯水量之和。
因此,如圖3所示,步驟S1具體包括以下分步驟:
S1-01、遍歷邊哈希表lineMap中的每條邊;
S1-02、判斷邊是否遍歷結(jié)束,若是則進(jìn)入步驟S1-11,否則進(jìn)入步驟S1-03;
S1-03、獲取當(dāng)前邊及其左右三角形ID;
S1-04、判斷左右三角形ID是否均不為空,若是則進(jìn)入步驟S1-06,否則進(jìn)入步驟S1-05;
S1-05、判定當(dāng)前邊為邊界邊,不考慮匯水性,返回步驟S1-01;
S1-06、根據(jù)左右三角形ID從三角網(wǎng)哈希表tinMap中獲取當(dāng)前邊的左右鄰接三角形;
S1-07、計(jì)算當(dāng)前邊左右鄰接三角形的水流方向;
S1-08、計(jì)算當(dāng)前邊左右鄰接三角形水流方向與該邊的流向關(guān)系值;
S1-09、判斷當(dāng)前邊的匯水特性并更新邊哈希表lineMap;
S1-10、將匯水邊加入候選匯水邊集合,返回步驟S1-01;
S1-11、遍歷三角網(wǎng)哈希表tinMap中的每個(gè)三角形;
S1-12、判斷三角形是否遍歷結(jié)束,若是則進(jìn)入步驟S2,否則進(jìn)入步驟S1-13;
S1-13、獲取當(dāng)前三角形的匯水邊條數(shù);
S1-14、判斷匯水邊是否多于一條,若是則進(jìn)入步驟S1-15,否則返回步驟S1-11;
S1-15、對(duì)每條匯水邊,計(jì)算其左右鄰接三角形流向該邊的匯水量之和;
S1-16、將原匯水邊中匯水量最大的邊匯水屬性保持不變,其他邊匯水屬性改為未判斷;
S1-17、更新邊哈希表lineMap及候選匯水邊集合,返回步驟S1-11。
S2、對(duì)候選山谷線進(jìn)行追蹤與結(jié)構(gòu)建立。
候選山谷線集與地形的實(shí)際山谷線集并非兩個(gè)完全相等的集合。地形山谷線提取算法也有零碎性的問(wèn)題和洼地的處理問(wèn)題,這也是大部分基于流水法的地形特征提取算法中的普遍性問(wèn)題。綜合上述情況考慮,需要在已提取出的候選山谷線中追蹤出地形的實(shí)際山谷線,這里的追蹤包含以下三層含義:(1)從候選山谷線中甄選出符合預(yù)期的實(shí)際山谷線;(2)連接甄選出來(lái)的山谷線,即解決山谷線的零碎性問(wèn)題;(3)洼地情況的處理。
本發(fā)明實(shí)施例中,山谷線提取算法是基于山谷線段必須是三角網(wǎng)中某個(gè)三角形邊的假設(shè)求得的,即河網(wǎng)分析中的邊匯流處理,這也是導(dǎo)致山谷線(即匯水性)零碎化的主要原因。因此,在山谷線追蹤階段,將面匯流考慮進(jìn)來(lái),即考慮某個(gè)三角形的三邊均為匯水邊,水流通過(guò)該三角形面流出而非通過(guò)該三角形的某條邊流出。如圖4所示匯流邊AO,但AO既不是邊界點(diǎn),也不是洼地底點(diǎn),實(shí)際上,AO將通過(guò)與O點(diǎn)相連的三角形面與下游河道匯合,倘若不考慮三角形的面匯流,則局部流域?qū)o(wú)法正常出流,與事實(shí)不符。
處理辦法是選擇與點(diǎn)O相連的三角形中向下坡度最大的三角形面作為AO的出流面,即將該三角形的三邊作為山谷線與AO相連。這里的三角形面要符全以下三點(diǎn)要求:1、該三角形其余兩點(diǎn)高程均應(yīng)低于O點(diǎn)的高程以保證水流是從O點(diǎn)流出;2、該三角形是符合高程相求的三角形中坡度最大的;3、該三角形不能包含AO邊(否則違背了山谷線唯一性約束)。但是,坡度匯流只是解決山谷線零碎性的輔助手段,因此,單條山谷線中考慮的連續(xù)坡面應(yīng)有個(gè)限度,即如果三角形面三點(diǎn)均無(wú)匯水出流邊與其相連時(shí)應(yīng)繼續(xù)考慮面匯流的三角形個(gè)數(shù)的限制。
上述考慮面匯流的關(guān)鍵點(diǎn)是最大坡度的三角形獲取,三角形的坡度可用其相對(duì)于XOY平面的傾斜角來(lái)代替,而根據(jù)正弦函數(shù)在角度范圍的單調(diào)性,其傾斜角可用該角度的正弦值代替,因此三角形面的坡度可用其相對(duì)于XOY平面傾斜角的正弦值代替。該傾斜角的正弦值可通過(guò)以下方式求得:假設(shè)空間直角坐標(biāo)系統(tǒng)中的某個(gè)三角形的三個(gè)頂點(diǎn)坐標(biāo)分別為:A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3),則該三角形面的法向量計(jì)算如公式(1)所示:
其中M=(y1-y2)(z1-z3)-(y1-y3)(z1-z2),N=(x1-x3)(z1-z2)-(x1-x2)(z1-z3),L=(x1-x2)(y1-y3)-(x1-x3)(y1-y2)。該法向量與天頂方向的夾角就是ABC三角面相對(duì)于水平面的傾斜角度,設(shè)該角度為θ,則由正弦定理及空間向量知識(shí)可知該角的正弦值可由下式(2)得到:
本發(fā)明中山谷線追蹤算法是同時(shí)考慮了邊匯流與面匯流而得到的,同時(shí)以假設(shè)山谷線(匯流線)終止于邊界點(diǎn)或洼地點(diǎn)為追蹤前提,這是甄別候選山谷線是否是實(shí)際地形的山谷線的重要依據(jù)。而邊界點(diǎn)集和洼地點(diǎn)集可通過(guò)以下方法獲?。罕闅v每一條邊,如果當(dāng)前遍歷邊的左鄰接三角形或右鄰接三角的為空,則該邊為邊界邊,將該邊的兩個(gè)端點(diǎn)加入邊界點(diǎn)集;遍歷點(diǎn),對(duì)于當(dāng)前遍歷點(diǎn),從以給定點(diǎn)為起點(diǎn)的邊中獲取以當(dāng)前遍歷點(diǎn)為起點(diǎn)的邊集,以及從以給定點(diǎn)為終點(diǎn)的邊中獲取以當(dāng)前遍歷點(diǎn)為終點(diǎn)的邊集,如以當(dāng)前遍歷點(diǎn)為起點(diǎn)的邊集的大小為0而以當(dāng)前遍歷點(diǎn)為終點(diǎn)的邊集的大小大于0,則當(dāng)前遍歷點(diǎn)為洼地點(diǎn),將其加入洼地點(diǎn)集。
綜上所述,如圖5所示,步驟S2包括以下分步驟:
S2-01、遍歷邊哈希表lineMap,獲取邊界點(diǎn)集;
S2-02、更新以給定點(diǎn)為起點(diǎn)的邊哈希表linesWithStartpointMap及以給定點(diǎn)為終點(diǎn)的邊哈希表linesWithEndpointMap;
S2-03、遍歷點(diǎn)哈希表pointMap獲取洼地點(diǎn)集;
S2-04、遍歷候選匯水邊,將終止于邊界點(diǎn)或洼地點(diǎn)的邊加入待追蹤匯水邊;
S2-05、遍歷待追蹤匯水邊;
S2-06、判斷待追蹤匯水邊是否遍歷結(jié)束,若是則進(jìn)入步驟S3,否則進(jìn)入步驟S2-07;
S2-07、設(shè)當(dāng)前遍歷邊為curLine;
S2-08、新建結(jié)果匯水邊集;
S2-09、判斷curLine是否已處理過(guò),若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-10;
S2-10、將curLine加入結(jié)果匯水邊集;
S2-11、判斷curLine是否為邊界邊,若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-12;
S2-12、從linesWithEndpointMap中獲取流入curLine起點(diǎn)的匯水邊集;
S2-13、判斷獲取的匯水邊集是否為空,若是則進(jìn)入步驟S2-15,否則進(jìn)入步驟S2-14;
S2-14、遍歷每一條獲取到的匯水邊,置curLine為當(dāng)前遍歷匯水邊,返回步驟S2-09;
S2-15、邊匯流追蹤中斷,考慮面匯流;
S2-16、判斷連續(xù)追蹤匯流面?zhèn)€數(shù)是否達(dá)到設(shè)定值,若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-17;
S2-17、判斷出流對(duì)象是邊還是面,若是邊則進(jìn)入步驟S2-18,若是面則進(jìn)入步驟S2-19;
S2-18、獲取流入curLine的坡度最大的匯水面curTIN,進(jìn)入步驟S2-20;
S2-19、獲取流入三角形三邊的坡度最大的匯水面curTIN,進(jìn)入步驟S2-20;
S2-20、判斷curTIN是否存在,若是則進(jìn)入步驟S2-21,否則進(jìn)入步驟S2-24;
S2-21、判斷curTIN是否已處理過(guò),若是則進(jìn)入步驟S2-24,否則進(jìn)入步驟S2-22;
S2-22、將curTIN的三邊加入結(jié)果匯水邊集;
S2-23、獲取流入curTIN三個(gè)頂點(diǎn)的匯水邊集,返回步驟S2-13;
S2-24、判定當(dāng)前邊的所有流入分支追蹤完畢,返回步驟S2-05。
S3、通過(guò)對(duì)原地形進(jìn)行翻轉(zhuǎn)后提取翻轉(zhuǎn)地形的山谷線提取三角網(wǎng)山脊線。
山脊線的提取與處理與山谷線基本一致,其依據(jù)是:如果將地形翻轉(zhuǎn),即地形最高點(diǎn)翻轉(zhuǎn)為地形最低點(diǎn),而地形最低點(diǎn)翻轉(zhuǎn)為地形最高點(diǎn),則山脊線便成了山谷線。這可通過(guò)將每個(gè)地形點(diǎn)高程值減去目標(biāo)地形區(qū)的最大高程值實(shí)現(xiàn),因此,山脊線其實(shí)可通過(guò)對(duì)原地形進(jìn)行翻轉(zhuǎn)后提取翻轉(zhuǎn)地形的山谷線而得到。
S4、采用四階偏微分方程進(jìn)行曲面平滑重構(gòu)。
本發(fā)明實(shí)施例中,采用的是四階偏微分方程進(jìn)行曲面平滑重構(gòu),主要原因是四階偏微分方程能很好地解決重構(gòu)曲面中因地形噪聲而產(chǎn)生的毛刺現(xiàn)象,保證了重構(gòu)曲面的光滑性。為了在曲面平滑重構(gòu)時(shí)保留地形特征,如果目標(biāo)點(diǎn)為地形特征點(diǎn)(包括山谷點(diǎn)、山脊點(diǎn)、山頂點(diǎn)等),則其高程值保持不變,不對(duì)其進(jìn)行平滑調(diào)整,而非特征點(diǎn)的處理不受影響。
通過(guò)三角網(wǎng)數(shù)據(jù)提取出的特征點(diǎn)(在本發(fā)明中為山谷點(diǎn)與山脊點(diǎn))可能不在任何一個(gè)格網(wǎng)點(diǎn)上,因此為保留該特征點(diǎn)的約束,可以以該特征點(diǎn)為中心生成單個(gè)格網(wǎng)區(qū)域,該格網(wǎng)區(qū)域內(nèi)的格網(wǎng)點(diǎn)的高程值被賦值為該特征點(diǎn)的高程值并且不參與平滑,即該特征點(diǎn)單格網(wǎng)影響區(qū)域內(nèi)的格網(wǎng)點(diǎn)均被認(rèn)為是該特征點(diǎn)本身。如圖6所示,格網(wǎng)點(diǎn)B在特征點(diǎn)A的影響區(qū)域內(nèi),則認(rèn)為格網(wǎng)點(diǎn)B即為特征點(diǎn)A,點(diǎn)B的高程值設(shè)置為點(diǎn)A的高程值,且點(diǎn)B不參與四階偏微分平滑。
直接利用四階偏微分方程重構(gòu)的曲面俯視效果圖如圖7所示,在地形約束下利用四階偏微分方程重構(gòu)的曲面俯視效果圖如下圖8所示,圖8中深色點(diǎn)為高程值較大的點(diǎn),淺色點(diǎn)為高程值較小的點(diǎn)。由圖7及圖8可知特征約束下的四階偏微分方程平滑方法生成的重構(gòu)地形曲面很好地同時(shí)解決了地形平滑及保留地形特征的問(wèn)題。
本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的原理,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開(kāi)的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。