摘 要:數(shù)字地圖中經(jīng)常存在沒有賦高程值和高程值賦值錯誤的情況,為后期應(yīng)用及入庫帶來很多的不便。針對此問題筆者結(jié)合Tin三角網(wǎng)原理,提出以高程散點為基準(zhǔn),構(gòu)建Tin三角網(wǎng),通過Tin三角形的邊長與等高線在空間上的相交關(guān)系,自動檢查和對等高線進行賦值。經(jīng)過筆者理論和實踐分析,其正確率非常高,完全可用于對地形圖等高線高程的檢查和自動賦值。
關(guān)鍵詞:Tin 自動高程賦值 等高線 空間分析
中圖分類號:P283 文獻標(biāo)識碼:A 文章編號:1672-3791(2013)06(a)-0039-02
傳統(tǒng)的CAD中等高線往往通過高程點注記來識別等高線的高程,因此在CAD應(yīng)用中,等高線很多就是普通的曲線,沒有高程值。隨著數(shù)字地圖的應(yīng)用范圍日益拓廣,通過讀取等高線的高程值來實現(xiàn)多種應(yīng)用變得非常普遍,因此等高線沒有高程值,對后期數(shù)字地圖的應(yīng)用在成很多不便。
1 實現(xiàn)思路
等高線自動高程賦值一直是工程應(yīng)用中的一個難題,當(dāng)前常見的處理方式有兩種,人工模式和半自動化模式。前者主要通過人工方式,逐條錄入等高線的高程值,另一種模式是由人工指定起始等高線,根據(jù)等高距及高差,自動通過空間關(guān)系完成等高線的高程賦值。前者工作量巨大,在生產(chǎn)中基本不予采用,后者雖然部分實現(xiàn)自動化,但仍需人工干預(yù),特別是出現(xiàn)地貌突變?nèi)缍缚病⒔ㄖ锏?,自動賦值往往失敗。市場上常見的具有此功能的軟件有MapGis、清華山維等。
為了減輕等高線高程賦值的工作量,提高賦值的正確率,筆者擬采用采集的高程點,通過構(gòu)建Tin三角網(wǎng),實現(xiàn)等高線高程自動賦值。
傳統(tǒng)的CAD地形圖中,等高線的高程信息主要通過鄰近的高程點進行獲取,因此地形圖中的高程點具有以下功能。
(1)是獲取等高線高程信息的有效手段。
(2)是對數(shù)字地圖中等高線高程信息進行檢核的有效手段。
因此,通過高程點獲取等高線高程信息,是最為可行和有效的手段。對等高線和高程點做以下分析。
在沒有地形突變的情況下,兩高程點的連線與等高線相交的條數(shù)必然等于兩高程點高程值整數(shù)部分差值與基本等高距的比值。如兩個高程點高程值整數(shù)部分分別為N和M,其整數(shù)部分差值為(N-M),假設(shè)基本等高距為K,則與此兩等高點相交的等高線條數(shù)必然為(N-M)/K。
再對(N-M)/K條等高線進行如下分析,首先,以較低的高程點作為基點,分別將其與(N-M)/K條等高線和高程點兩點連線的交點進行連接,將得到(N-M)/K條線段。分別求得每條線段與等高線的交點個數(shù)P,則待求等高線的高程就等于基點與交點個數(shù)的和即(M+P)。
以上思路結(jié)構(gòu)合理,理論嚴謹,但在應(yīng)用中仍存在以下問題:首先對于地形突變處的處理,經(jīng)分析可知,地形突變主要的影響在于等高線的標(biāo)高出現(xiàn)不連續(xù),如陡坎比高超過基本等高距,則其前后兩條等高線的高程差就不為基本等高距。因此可通過如下條件過濾,當(dāng)出現(xiàn)地形突變,則高程點的連線與等高線的交點必然少于兩高程點高程值整數(shù)部分的差值。再次,對于交點數(shù)雖然等于兩高程點高程值整數(shù)部分的差值,但仍存在如下可能:如果兩個高程點高程值有誤,如上文所述,若兩高程點高程分別為M+1和N+1,則可能存在高程賦值錯誤。為此可進行如下處理。
對等高線高程賦值的兩點,其連線必須是最優(yōu)三角形。
當(dāng)存在多次賦值時,將賦值過程中高程值出現(xiàn)概率最大的賦予對應(yīng)等高線。
前者可以通過構(gòu)建Tin三角形滿足要求,后者主要是通過概率判斷,提升高程賦值的準(zhǔn)確性。經(jīng)過以上分析,即可通過程序?qū)崿F(xiàn)等高線的自動賦值了。
2 算法實現(xiàn)
通過上文理論分析,通過高程點自動對等高線進行賦值是可行的,為了在程序上實現(xiàn)上文的賦值過程,筆者擬采用如下流程實現(xiàn)等高線的自動賦值。
首先,將等高線提取出來,單獨存放一個圖層。
其次,將高程注記點提取出來。
第三,通過高程注記點,構(gòu)建Tin三角形。
第四,讀取Tin三角形中每個節(jié)點的高程,并賦予三角形的每條邊。
第五,讀取三角形其中一條邊,通過空間分析,求得與之相交的每條等高線。
第六,若交點數(shù)與兩高程點的高程值整數(shù)部分差值相同,則根據(jù)等高距,自動將高程值賦予等高線,同時記錄賦值的次數(shù),否則不參與賦值。
第七,若出現(xiàn)高程賦值不同,根據(jù)賦值次數(shù),將出現(xiàn)概率最大的高程值賦予對應(yīng)等高線。具體的流程圖示例如(圖1)。
下文是實現(xiàn)算法的部分關(guān)鍵代碼:
DivElevation=Int(RecL.GetFieldValue("端點2"))-Int(RecL.GetFieldValue("端點1"))
//求取Tin三角形邊長兩端點的高程值
Lts.Add Ln.GetPartAt(1)(1)
TemLine.AddPart Lts
i=Ltt.QueryEx
(TemLine,,"smid>0").RecordCount
Ltes.Add Ln.GetPartAt(1)(2)
//求取一端點交點連線和等高線交點個數(shù)
TempLine.AddPart Ltes
j = Ltt.QueryEx
(TempLine,5,"smid>0").RecordCount
//求取另一端點交點連線和等高線交個數(shù)
If(Int(RecL.GetFieldValue("端點1")) + i+1)>CDbl(RecL.GetFieldValue("端點1")) And(Int(RecL.GetFieldValue("端點1"))+ i+1) //判斷交點的高程值是否在兩端點范內(nèi) If i+j-1=DivElevation Then //判斷交點、端點連線和等高線交點個 //數(shù)是否滿足端點差值與基本等高距的比值 RecP.Edit bf=RecP.SetFieldValue ("Elevation",Int(RecL.GetFieldValue("端點1"))+i) //將正確的高程信息賦予等高線 RecP.Update End If End If 3 案例分析 為了驗證以上思路,筆者擬采用1∶1000地形圖約17幅,等高線條數(shù)約為5000條,經(jīng)過初步驗證,其識別率非常高,實驗證實,通過Tin模式是可以實現(xiàn)自動化對等高線進行賦值。以下是實驗數(shù)據(jù)的抓圖。 4 結(jié)語 通過高程點及構(gòu)建Tin三角網(wǎng)模式在理論上可以完美實現(xiàn)對等高線高程的自動賦值,經(jīng)筆者試驗,準(zhǔn)確率優(yōu)于95%以上。出現(xiàn)賦值錯誤的原因主要在于高程點本身的錯誤及圖幅邊界處高程點的缺失,通過高程點構(gòu)建Tin不僅可以對等高線高程自動賦值,還可以對已經(jīng)賦值的等高線高程進行檢核,實踐及理論分析證實,本方法是一種切實可行等高線高程自動賦值方法。未來應(yīng)用需注意自動賦值時數(shù)據(jù)量的大小,具體的數(shù)據(jù)量可根據(jù)計算機的性能而定。以Pentium D 3.0G,1∶1000地形圖為例,建議每次處理的數(shù)據(jù)量不超過25幅為宜。 參考文獻 [1]SuperMap Objects 開發(fā)教程(初級篇) 2008. [2]SuperMap Objects 開發(fā)教程(中級篇)2008.