楊帆 李海博
摘要:基于DTM離散點(diǎn)數(shù)據(jù),使用Visual C++編程語言進(jìn)行程序的設(shè)計(jì),編寫讀入、寫出數(shù)據(jù)程序,通過用距離倒數(shù)加權(quán)方法進(jìn)行插值,建立格網(wǎng)DTM,獲取更加詳盡的地形信息。采用三階不帶權(quán)差分算法實(shí)現(xiàn)坡度和坡向的計(jì)算,采用直接比較當(dāng)前點(diǎn)的高程值與其周圍臨近點(diǎn)的高程值的方法來確定特征點(diǎn),選取的特征位置包含以下幾個(gè)方面:山脊點(diǎn)、山谷點(diǎn)、深淵和基坑、山頭點(diǎn),相連的山脊點(diǎn)、山谷點(diǎn)產(chǎn)生山脊線以及山谷線,編程完成了格網(wǎng)DTM,對地貌特性的自動(dòng)挖掘,生成 .scr文件后,在AutoCAD下進(jìn)行三維立體顯示,使其更直觀,更形象的顯示地形特征。提交成果為Visual C++編程實(shí)現(xiàn)格網(wǎng)DTM下地性特征的自動(dòng)提取及程序。
關(guān)鍵詞:DTM;地形特征;距離倒數(shù)加權(quán)法;坡度;坡向
1.前言
地形地貌作為地理要素之中,最為基礎(chǔ)的部分,其對自然地理單元的產(chǎn)生與地面物質(zhì)和能量的再分配過程,起到直接決定的作用。地形結(jié)構(gòu)線,作為地貌的基本骨架線,同時(shí)也通常為自然地理局域單元的根本分界線。由此看來,基于DTM數(shù)據(jù)信息,自動(dòng)完成其總所潛在的地形構(gòu)造數(shù)據(jù)的挖掘,意義十分重大。根據(jù)規(guī)則格網(wǎng)DTM,對地貌特性進(jìn)行自動(dòng)挖掘,并且深入改善DTM,完成對地貌的直接、全方位的展示,從而能夠讓挖掘出的地貌特性數(shù)據(jù),可以更好的服務(wù)不同的行業(yè)領(lǐng)域,為促進(jìn)科學(xué)技術(shù)的向前發(fā)展努力。
由于GIS、DTM等研究分析技術(shù)的崛起,自動(dòng)挖掘地貌特性的理論模型與基本算法,獲得了國內(nèi)外專家學(xué)者的密切關(guān)注。在此之中,規(guī)則格網(wǎng)的高程矩陣,作為DTM最為常用的矩陣模式。格網(wǎng)DTM無法清晰的顯示出地貌的具體構(gòu)造與局部特征,能夠利用附加地貌特性信息,例如:地貌特征位置、山脊線、谷底線以及斷裂線等,借以從而能夠詳細(xì)地,由數(shù)據(jù)分析處理得出地貌構(gòu)造。伴隨著DTM的推廣與運(yùn)用,關(guān)于如何快速高效的創(chuàng)建網(wǎng)格DTM,成為了本領(lǐng)域研究的關(guān)鍵。
2.數(shù)字地面模型DTM
2.1 格網(wǎng)DTM 。數(shù)字地面模型(Digital Terrain Models)DTM,選取某個(gè)任意坐標(biāo)場之中,數(shù)據(jù)信息已知的x、y、z的坐標(biāo)位置,從而實(shí)現(xiàn)對地貌表面簡單的信息顯示,為具備空間位置特性與地貌屬性特性的信息表達(dá),為一種能夠較為準(zhǔn)確的表達(dá)地貌表面特征和現(xiàn)象各類本質(zhì),并且在空間內(nèi)部分布的數(shù)學(xué)理論模型。在數(shù)字地面模型之中,地貌特性展現(xiàn)為高程時(shí),稱作是DEM。DEM作為創(chuàng)建DTM的根本前提,有關(guān)平面坐標(biāo)分布的單值連續(xù)性函數(shù),為一種能夠通過離散化信息,描繪地表特征的數(shù)學(xué)理論模型[1]。
規(guī)則格網(wǎng)DTM,本質(zhì)上為高程矩陣。其優(yōu)勢在于:信息構(gòu)造單一,易于管理;適用于各類數(shù)據(jù)分析,或創(chuàng)建空間圖形等。其弊端在于:對格網(wǎng)點(diǎn)高程進(jìn)行數(shù)值內(nèi)插,降低了原始數(shù)據(jù)的精度;無法清晰的展示地貌構(gòu)造與細(xì)部結(jié)構(gòu),能夠阻礙地貌的核心特性的表達(dá),例如山峰、洼坑、山脊等;若更換變格網(wǎng)的數(shù)據(jù)規(guī)模,將無法應(yīng)用于起伏波動(dòng)較大的區(qū)域;地貌簡單區(qū)域,往往會(huì)產(chǎn)生大量多余信息,影響信息管理。
2.2 距離倒數(shù)插值法建立格網(wǎng)DTM。本文采用距離加權(quán)平均方法進(jìn)行插值計(jì)算,這個(gè)方法簡單,易于進(jìn)行編程實(shí)現(xiàn),利用地區(qū)內(nèi)部的已知高程信息點(diǎn),以樣本點(diǎn)的空間距離為對象,采取加權(quán)平均處理,將所得的加權(quán)平均值,等價(jià)于未知點(diǎn)的高程值[3]。
在插值點(diǎn)之上,創(chuàng)建一個(gè)形狀為正方形的選擇框,如此一來,依據(jù)單一的坐標(biāo)數(shù)值,進(jìn)行對比便能夠發(fā)現(xiàn)納入正方形框內(nèi)部的信息點(diǎn)。如納入正方形框內(nèi)的信息點(diǎn)過多,能夠減少正方形框的面積;相反,提升正方形框的面積。正方形框面積的初始值的選取,由圖幅之中,原始信息點(diǎn)的密集程度決定。
3.根據(jù)格網(wǎng)DTM的地貌特性提取
3.1對于坡度與坡向的提取
3.2 特征點(diǎn)的提取
1)算法思想。算法思想,如下圖3-3顯示。若某些等高線所對應(yīng)的地貌特性為山谷,并且,過等高線j上的山谷點(diǎn)B,該點(diǎn)的水平線與周圍區(qū)域的等高線i,相交早A點(diǎn)以及C點(diǎn),如此便能夠評估,在線段AC之上,連續(xù)點(diǎn)的高程值的變化幅度,為由A至B,緩慢降低,由B至C,緩慢提高。假設(shè)將B點(diǎn)作為山脊點(diǎn),則可以判定,在線段AC之上,連續(xù)點(diǎn)的高程值的變化幅度,為由A至B緩慢提升,由B至C緩慢降低[6]。
根據(jù)上述推論,能夠總結(jié)出基于規(guī)則格網(wǎng)DTM之中,自動(dòng)挖掘地貌線的一種簡易計(jì)算方法:對網(wǎng)格DTM之中,各個(gè)格網(wǎng)高程點(diǎn),依據(jù)對比同此點(diǎn)八方向附近并且處于同一直線上的格網(wǎng)點(diǎn)高程值的波動(dòng)狀況,以計(jì)算特征點(diǎn)位置,然后將附近區(qū)域的特征點(diǎn)用光滑曲線連接,制成對應(yīng)的特征線。
3.3 山谷線的提取
首先,山谷線的前提條件如下:
1)山谷線通過山谷點(diǎn)組成;2)由高程值極大值的山谷點(diǎn)(上游)出發(fā),山谷線的數(shù)值理應(yīng)逐漸變?。?)除去封閉式的盆地(較為罕見),通常地山谷線中止在:其他山谷線(河流);深淵、坑、湖泊以及海洋;網(wǎng)格DTM的邊際。
對山谷線的跟蹤,依據(jù)以上三個(gè)條件逐一追蹤,并且一般由高處轉(zhuǎn)向至低處進(jìn)行跟蹤,因此,對于每條新山谷線的跟蹤,均由從每項(xiàng)未跟蹤的山谷點(diǎn)之中,找到高程極值點(diǎn)處的山谷點(diǎn),充當(dāng)新山谷線的“起始點(diǎn)”,并且以此“起始點(diǎn)”出發(fā),尋求其后繼高程點(diǎn),直至此條山谷線中止,然后再去跟蹤其余山谷線。在所有山谷點(diǎn)均完成跟蹤之后,即山谷線跟蹤完成[5][6]。
為規(guī)避某些局域位置產(chǎn)生地性線不完整現(xiàn)象,中間發(fā)生了斷裂,最終產(chǎn)生完備的地性線,能夠在判定特征點(diǎn)的過程中,除去挖掘山谷點(diǎn)之外,還要判定網(wǎng)格DTM之中,局部深淵和基坑等異常地貌。一般把高程值比附近點(diǎn)的高程值均要低的點(diǎn),判定成深基坑或深淵。
在某條山谷線開始跟蹤后,上一次被確認(rèn)的山谷點(diǎn)作為當(dāng)前點(diǎn),在此點(diǎn)為中心的八方向附近點(diǎn)之中,挖掘出后繼點(diǎn),其須要符合的前提條件如下:
1)此點(diǎn)為高程小于當(dāng)前點(diǎn)的各個(gè)山谷點(diǎn)之中,高程值最低的位置;
2)連接此點(diǎn)和當(dāng)前點(diǎn)不同所有已完成跟蹤的山谷線相交。
若山谷點(diǎn)被判定成新的山谷線點(diǎn),必須深入檢測,其是否同所有已完成跟蹤的山谷線相交,如是,則中止跟蹤,轉(zhuǎn)向跟蹤新的山谷線;否則檢查其是否已被跟蹤,如已被跟蹤,則說明兩條山谷線相匯合,跟蹤停止,轉(zhuǎn)向跟蹤新的山谷線;否則檢查該山谷線點(diǎn)是否位于DTM邊緣,如是,跟蹤亦停止,轉(zhuǎn)向跟蹤新的山谷線;否則檢查該山谷線點(diǎn)是否是深淵或坑點(diǎn),如是,跟蹤立即中止,轉(zhuǎn)移以跟蹤新的山谷線;若不滿足上述狀況,則要持續(xù)對其跟蹤。
在某個(gè)山谷點(diǎn)完成跟蹤之后,便對其進(jìn)行標(biāo)記處理,以顯示其已完成跟蹤。一般需要各個(gè)山谷點(diǎn),僅存一個(gè)“下游點(diǎn)”,但是,也會(huì)出現(xiàn)一個(gè)或一個(gè)以上“上游點(diǎn)”的情況,因此,在對山谷點(diǎn)跟蹤過程之中,若某山谷點(diǎn)八方向附近點(diǎn)字中,存在一個(gè)以上的“備選下游點(diǎn)”時(shí),選取高程值最低的“備選下游點(diǎn)”,充當(dāng)此點(diǎn)的“下游點(diǎn)” ,在對山谷點(diǎn)跟蹤過程之中,若出現(xiàn)某一點(diǎn)存在一個(gè)以上的“上游點(diǎn)”,則顯示此點(diǎn)為兩條山谷線的相交點(diǎn)。此時(shí)便需中止目前對山谷線的跟蹤,轉(zhuǎn)至對新的山谷線進(jìn)行跟蹤;在對山谷點(diǎn)跟蹤過程之中,若存在某點(diǎn)無“下游點(diǎn)”,則需要中止目前對山谷線的跟蹤,轉(zhuǎn)至對新的山谷線進(jìn)行跟蹤。
在尋求后繼點(diǎn)的過程之中,也許存在每個(gè)山谷點(diǎn)均不符合上述兩個(gè)條件的情況,造成此現(xiàn)象的原因是,山谷線和湖泊同海洋交叉,山谷線延伸至深淵個(gè)基坑,或山谷線延伸至閉合盆地,抑或是山谷線延伸至平緩區(qū)域而自動(dòng)消散。無論為哪種狀況,中止跟蹤,轉(zhuǎn)至對新的山谷線進(jìn)行跟蹤。在山谷點(diǎn)對象集合之中,各個(gè)目標(biāo)均進(jìn)行標(biāo)記處理后,顯示全部的山谷線均連接完成。
當(dāng)尋求到此類特殊地形之后,對各項(xiàng)不為終止于上述任意狀況的山谷線的下游終點(diǎn)位置,依據(jù)下降速率最大的方向,進(jìn)行蔓延,直到蔓延到符合山谷線中止條件的位置,中止跟蹤。
3.4 山脊線的提取
首先,山脊線的前提條件如下:
1)山脊點(diǎn)組合成了山脊線;2)在高程值極小值處的山脊點(diǎn)開始,山脊線的點(diǎn)的數(shù)值能高,能低;3)習(xí)慣上說,山脊線在下一個(gè)山脊線停止;汕頭;DTM的邊界。
山脊線行跡和山谷線行跡差異性較大,原因是:山脊線的高程具有起伏性,所以不可以控制只尋覓比目前點(diǎn)大或小的山脊點(diǎn),在八相鄰方向之中,全部的山脊點(diǎn)均處于考察范疇之內(nèi)。
為了避免有些局部地方生成的地性線不完整,中間發(fā)生了斷裂,最后形成一個(gè)完整的地性線,能夠在選擇特征點(diǎn)的時(shí)候,不僅需要確定山脊點(diǎn)之外,還需明確DTM內(nèi)的山頭等奇特地形。一般情況下,把高程值比附近點(diǎn)的高程值均高的點(diǎn)稱為山頭[5][6]。
當(dāng)一個(gè)山脊線開始跟蹤后,上一次被認(rèn)定為山脊點(diǎn)的點(diǎn)作為當(dāng)前點(diǎn),并將這個(gè)點(diǎn)作為中心的八方向鄰近點(diǎn)內(nèi),尋覓后繼點(diǎn),應(yīng)該符合的要求為:
1)這個(gè)點(diǎn)的八方向鄰近點(diǎn)內(nèi),僅存在一個(gè)山脊點(diǎn);2)將這個(gè)點(diǎn)和當(dāng)前點(diǎn)進(jìn)行連接,且不和別的已跟蹤的山谷線相交;3)將這個(gè)點(diǎn)和當(dāng)前點(diǎn)進(jìn)行連接,且不和別的已跟蹤的山脊線相交。
山脊線的跟蹤從極小值出發(fā),在山脊點(diǎn)中確定高程值最低的、還沒有被跟蹤的點(diǎn)確定為山脊線的出發(fā)點(diǎn)(也為當(dāng)前點(diǎn)),于此點(diǎn)為中心的八相鄰方向上,尋覓山脊點(diǎn),若找到一個(gè)山脊點(diǎn),此山脊點(diǎn)則被定為新的山脊線點(diǎn),應(yīng)再一次檢測其是否同所有已完成的跟蹤的山谷線和山脊線相交,如是,則跟蹤停止,轉(zhuǎn)向 跟蹤新的山脊線;否則檢查其是否已被跟蹤,如已被跟蹤,則跟蹤停止,轉(zhuǎn)向跟蹤新的山脊線;否則檢查該山脊線點(diǎn)是否位于DTM邊緣,如是,跟蹤亦停止,轉(zhuǎn)向跟蹤新的山脊線;否則檢查該山脊線點(diǎn)是否是山頭點(diǎn),如是,跟蹤亦停止,轉(zhuǎn)向跟蹤新的山脊線;否則檢查連結(jié)該點(diǎn)與當(dāng)前點(diǎn)是否與任何已跟蹤的山脊線交叉,如是,跟蹤也停下來,而變相跟蹤另一個(gè)山脊線;若上述情況均不符合,應(yīng)繼續(xù)跟蹤[7]。
不然對目前山脊線完成跟蹤后,開始下一個(gè)山脊線。例如,在此點(diǎn)的八相鄰方向上存在較多山脊點(diǎn),就表明目前山脊線位于山脊線構(gòu)造的分支(結(jié)點(diǎn))上,目前山脊線跟蹤終止,不讓目前點(diǎn)和別的點(diǎn)連接,進(jìn)而跟蹤下一個(gè)山脊線。這樣循環(huán),一直到全部的山脊點(diǎn)均完成跟蹤。
將山脊線進(jìn)行連接的同時(shí),應(yīng)將山脊線的關(guān)鍵程度納入考慮范疇,對山脊線關(guān)鍵程度,做出如下假定:平均高程愈大,山脊線重要程度越高。首先,選取具備高程值極小值的山脊線,將低值點(diǎn)充當(dāng)此條山脊線的出發(fā)點(diǎn),另一端的點(diǎn)充當(dāng)目前連結(jié)點(diǎn),測查當(dāng)前點(diǎn)位置,是否處于另外山脊線中,若是,則終止連接,從而連接下一個(gè)山脊線;否則檢查當(dāng)前點(diǎn)是否處于DTM邊界,若是,則終止連接,從而連接下一個(gè)山脊線;否則檢查當(dāng)前點(diǎn)是否為山頭點(diǎn),若是,也將終止跟蹤也,進(jìn)而跟蹤另一個(gè)山脊線;若上述情況均不符合,應(yīng)繼續(xù)跟蹤。將目前點(diǎn)位置為中心的八相鄰區(qū)域內(nèi),檢測是否每條不屬于此山脊線上的山脊點(diǎn),然后依據(jù)具體狀況,做出對應(yīng)的評估:
1)假若一個(gè)這樣的山脊點(diǎn),連結(jié)該點(diǎn)與當(dāng)前點(diǎn),不與其它山谷線或者山脊線相交,則將改山脊點(diǎn)作為與當(dāng)前點(diǎn)連結(jié)的點(diǎn),繼續(xù)搜索;2)若出現(xiàn)較多同類型的山脊點(diǎn),明確所有的山脊點(diǎn)中的山脊線,并計(jì)算出山脊線上每個(gè)點(diǎn)的平均高程,選擇平均高程最大的山脊點(diǎn)作為可能的連結(jié)點(diǎn),考察是否該點(diǎn)與當(dāng)前點(diǎn)的連結(jié)將與其它山谷線或者山脊線交叉;3)如果沒有山脊點(diǎn),向上升速率最大值的方向蔓延,直至蔓延到符合山脊線中止條件的位置,中止跟蹤。
如不是,則連結(jié)該點(diǎn)與當(dāng)前點(diǎn),繼續(xù)以該點(diǎn)所在的山脊線為連接線,考察端點(diǎn)情況,步驟同上;如是,則選擇平均高程次大的山脊點(diǎn)作為可能的連結(jié)點(diǎn),繼續(xù)檢測,直至發(fā)現(xiàn)符合山脊點(diǎn)的要求停止。
4.結(jié)論
本文以大量的離散數(shù)據(jù)點(diǎn)為基礎(chǔ),用Visual C++編程語言進(jìn)行程序設(shè)計(jì),編寫讀入數(shù)據(jù)程序,采用距離倒數(shù)加權(quán)方法建立格網(wǎng)DTM,可選擇不同的格網(wǎng)間距,如:20米、50米、100米。寫出.scr文件,進(jìn)一步在AutoCAD下實(shí)現(xiàn)格網(wǎng)DTM的三維立體顯示,檢驗(yàn)提取的地形特征的準(zhǔn)確性和真實(shí)性提供依據(jù)。
本文將手動(dòng)提取地形特征的工作,完成編程,實(shí)現(xiàn)了地形形態(tài)的自動(dòng)收集,使得工作效率進(jìn)一步提升,縮短了工作時(shí)間,也降低了人們在工作時(shí),發(fā)生錯(cuò)誤的次數(shù)。
參考文獻(xiàn):
[1]李志林,朱慶.數(shù)字高程模型[M].武漢:武漢測繪科技大學(xué)出版社,2001.
[2]朱東海,劉良華,董海寧,(等).Visual C++ 6.0使用詳解.北京:機(jī)械工業(yè)出版社,1999.
[3]吳煥萍,胡金星,馬照亭,(等).規(guī)則格網(wǎng)DTM快速構(gòu)建算法研究.計(jì)算機(jī)應(yīng)用研究,2004.
[4]李天文,劉學(xué)軍,陳正江,(等).規(guī)則格網(wǎng)DEM坡度坡向算法的比較分析.干旱區(qū)地理,2004,27(3):398~404.
[5]郭仁忠.空間分析.第二版.程序設(shè)計(jì)教程.北京:高等教育出版社,2004.
[6]郭明武,吳凡.基于規(guī)則格網(wǎng)DEM自動(dòng)提取地形線的一種簡便方法.測繪信息與工程.2005,30(2):33~34.
[7]郭明武,黃宇.基于規(guī)則格網(wǎng)DEM自動(dòng)提取地形線的算法研究.測繪學(xué)院學(xué)報(bào).2005,22(3):201~203.