基于AO的分幅等高線智能化接邊處理方法的研究
[摘要]連續完整的等高線在,-. 的制作以及圖屬互查中起著重要的作用,然而在實際中它往往被人為的分割。因此,分幅數字化后的等高線拼接問題,就成了地理信息系統中基礎數據處理方面的一個必須要解決的問題。本文在吸取了!/0123 處理該問題的優點的基礎上,提出了分幅等高線智能化接邊的約束條件和算法,并利用!/0"456078(簡稱!")實現該處理方法。
[關鍵詞]地理信息系統;!/0"456078;等高線;智能化
1 引言
由于測圖區域、比例尺大小、成圖紙張大小、圖紙的形變、繪圖誤差、數字化誤差和分幅數字化等因素的影響,在相鄰的兩幅等高線圖中,位于接邊處附近的等高線不僅可能不能夠結合在一起,而且原本是一條連續的等高線也被人為地分割成多段等高線。若不對這種現象進行處理,不僅在利用等高線建立,-.、=2E 時會發生錯誤,而且在對等高線對象進行查詢、分析之時亦會得出一些錯誤的結論。因此,如何高效地將多幅等高線圖拼接成為一幅圖,如何智能化地將接邊處被打斷的等高線對象重新合并成為一個完整的對象,是等高線圖拼接時所必須處理的一個問題,也是常常困擾我們的問題。
2 多幅等高線圖拼接存在的問題
由于等高線地圖在繪制時是分幅繪制,在數字化時是分幅數字化的,所以,在這些過程中存在的誤差就造成了在多幅等高線圖拼接成一幅完整的等高線圖時,等高線圖在接邊處存在著較大的誤差。這些誤差在接邊處所表現出的現象有以下幾種:
(1)兩線分離現象:理論上在接邊處附近的某一等高線,應與相鄰圖幅上對應等高線是咬合在一起的,即這兩條對應的等高線至少有一個節點的坐標是相同的。可是在實際中由于誤差的影響,對應等高線在接邊處常常發生了偏移(如圖# 所示)或斷裂(如圖$ 所示)現象。
(2)貌合神離現象:根據等高線是閉合曲線的原理,當將多幅等高線合并成一幅等高線圖時,等高線在接邊處應與其對應等高線合并成一個對象,從而構成一條閉合曲線。但是,由于分幅數字化的原因,對應等高線在接邊處表面上表現為一條完全閉合的等高線,但實質卻是多條等高線(如圖’ 所示),這種現象就是貌合神離現象。這種現象往往具有欺騙性,因為在打印出圖和視覺上是不會發現問題的,但是要用于構建!"# 或$%&,或者用于拓撲分析時,就會出現意想不到的問題。
3 地圖拼接的研究現狀
地圖接邊處理,國內外學者和眾多的商家都開展了廣泛和深入的研究,提出的理論和解決的方法也有許多不同,而且也有比較成熟的商業軟件。比如,"*+% 公司的,-./%* 01-23454617,就可以用來處理接邊的問題。但是,這些軟件在處理這種多幅圖合并成一幅圖的接邊問題上,有明顯的不足之處。這些軟件能夠較好地處理等高線接邊時存在的分離現象,但是在處理貌合神離這種現象上,卻存在不足。比如,在,-.#58 中,要處理接邊處的對應等高線被分割成多個對象的現象,就只有將這些將要合并的對象一一選取,分別合并(#9-:9)。這種人工選取方法不僅工作效率低下,而且工作量大,因而是一種不可取的方法。
4 多幅等高線圖智能化接邊中的知識庫和推理機
筆者采用智能化地理信息系統處理中的專家系統來處理多幅等高線圖接邊作業。知識的獲取是建造專家系統的關鍵一步,知識庫是建立專家系統的核心,而推理機是與知識庫對應的專家系統中另一個重要部件。因此,針對多幅等高線圖拼接成一幅完整的等高線圖這個具體問題,知識庫就是等高線的特性以及等高線圖在接邊時所表現出來的相關性質。基于知識庫的特征,筆者在知識的選取和推理上確定了如下幾點約束條件:
(1)所有要處理的等高線必須與接邊處某一個給定閾值的緩沖區(<=>>9-)相交。因為,如果等高線不在這個區域內,說明它不可能在對應圖幅中有相對應的等高線,那么它也就不是接邊時所要處理的對象。所以可以選取該區域中的等高線集作為處理對象,從而加快處理速度。
(2)所有要處理的等高線,都分別位于等高線圖接邊線的兩側。因為,等高線是被等高線圖的內圖廓線(接邊線)打斷的,所以,所要合并的線也將位于接邊線的兩側。筆者在處理位于每條接邊線兩側的所有可能要合并的等高線對象時,將按照這些等高線與接邊線的位置的不同而分成兩個集合。這樣,我們只要考慮一個集合中的所有元素,就能全部處理這條接邊線所涉及到的所有等高線。這也就減少了不必要的重復的循環,加快了處理速度。
(3)所有可能合并的等高線必須具有同一高程值。因為在接邊緩沖區中的等高線,只有高程值相等的等高線才有可能需要合并,否則就不必考慮。
(4)所有可能合并的兩個等高線對象,它們之間的距離必須小于某一給定閾值。因為,只有兩條高程相等的等高線間的距離小于閾值時,我們才認為這兩條等高線是相交的。否則,認為這兩條等高線是分離的。
(5)等高線是閉合曲線,不存在分枝。所以,某段等高線最多就有兩條等高線可以與它合并,不可能有兩條以上的等高線。基于以上的約束機制,我們在問題的求解上采用啟發式搜索方法。即在約束條件" 這個總的約束條件下,采用約束滿足法,逐漸遍歷尋找滿足條件的等高線,在遍歷的同時又根據其他約束條件來剪枝,從而減少在搜索循環時遍歷次數,加快查找速度。
5 等高線智能化接邊的流程設計
筆者現在所討論的等高線圖的拼接處理是指將多幅等高線圖合并成一幅完整的等高線圖,做無縫數據處理。處理流程是(如圖# 所示):首先,將兩幅同比例尺的等高線圖在接邊處做等高線偏離和斷裂處理。這種處理的結果是在接邊處的對應等高線的末端都做了一個微小調整,使得坐標相同的,即達到咬合($%&’)。接著,將所要合并的兩幅等高線圖通過合并成為一幅新的等高線圖。這時,等高線在原來接邊處仍然被打斷成為兩個對象,即在接邊處還存在貌合神離的現象。然后,通過上述約束條件的判斷,將接邊處的本應是一個對象的等高線全部找出,利用&( 的拓撲邏輯操作接口函數,將這些對象重新合并成一個新的對象,然后插入到原圖層中,依次循環,直到拼接完所有對象為止。最后,將原來這些貌合神離的對象全部刪除。因為,在插入操作時,為了加快程序運行效率,并沒有立即刪除,而是在最后作刪除處理。
6 基于&( 的具體實現方法
&*+(,-.+/0 是1$23 公司開發的面向對象的地理數據模型和高度集成的軟件組件庫,是一套完全符合4(5 標準的大型軟件架構。&( 不僅是&*+63$ 的基石,而且它提供了大量的接口函數,用戶可以在&( 的架構上開發自己的模型和功能組件。這樣,我們不僅可以避開大量的底層的、我們并不十分關心的功能模塊的開發,同時可以利用&( 中的強大的功能函數,快速實現用戶最需要的、最關心的功能。
筆者將多幅等高線圖合并成一幅等高線圖,為建立715、拓撲分析和圖屬互查等做前期數據處理。所以,對于目前商業軟件已能對等高線圖接邊時的偏移和斷裂的處理,筆者只是簡要地介紹用&( 實現的方法。而對于目前商業軟件不能夠高效處理的,即在原接邊處被打斷成多個對象的合并問題,筆者將詳細介紹其智能化處理的算法流程。
(1)等高線在接邊處的偏移或斷裂現象的處理。在所要接邊的等高線圖中,接圖邊緣地物對象存在偏移或斷裂現象。在接邊時,我們首先要消除這種影響,使對應等高線的末節點重合。我們可利用&( 中的接口函數3189.5:/+; 和$<:=,完成等高線圖接邊處的咬合處理。在這個過程中,我們可以設置等高線對象咬合距離,以及咬合后對應等高線的末端的微小移動方向。
(2)所有需要拼接的等高線全部合并到一個新圖層中的處理。筆者之所以將所有要合并的等高線圖幅中的等高線全部合并到一個新圖層中,作初始合并處理,是因為原來等高線分別處在不同的圖幅中,等高線的拼接就會涉及到多幅圖的多個圖層,這樣會導致效率低下,操作復雜。而經過上述的合并處理后,所有的等高線對象全部合并到同一圖層中,只是在原等高線圖的接邊處的對象仍然是被打斷成多個對象。這樣,我們在后面的處理中就只需要在一個圖層中對原接邊處的對象進行處理,就可完成拼接合并時的接邊工作。對于將多個圖幅中的等高線合并到一個新的圖層中的方法,我們可以利用"# 提供的$%&’()*+,-.,)+’’,. 接口中的合并(/+.0+)函數,來實現這種圖層的合并工作。這種方法的優點是,不必打開任何圖層,既不用把所要合并的等高線圖在窗口中顯示,也不用將合并后的新等高線圖在窗口中顯示,從而減少內存資源消耗,加快合并速度。
(3)在新等高線圖中,在原等高線接邊處貌合神離等高線合并的智能化處理。這也是筆者本次處理等高線接邊的獨特之處,也是常用的商業軟件所不足之處。如在".)/&- 下,我們先要一一選取所要合并的對象,然后再利用23(4,. 下的合并(/+.0+)來合并對象,但是,一次只能合并一條等高線。因此,這種方法不是一種理想的方法。筆者在這里采用啟發式搜索方法,然后通過一些約束條件,智能化地找出所要合并的等高線,并將它們合并。整個智能化合并流程如下(如圖! 所示):
a 利用所要合并圖層的范圍(264+74)求出等高線圖的接邊處的分割線。這是一條關鍵的線,因為它決定了初始合并后地圖中可能存在貌合神離現象的位置。
b 根據約束條件9,利用啟發式搜索法,找出等高線接邊處所有可能需要合并的對象。在初始合并后的新圖層中,因為在第一步中已做過咬合處理,即現在只有貌合神離的現象,所以我們只要找出與原接邊線有相接(:,;)<)關系的所有高線。因此,在智能化處理的程序設計中,啟發式搜索條件是:在新圖層上與原分割線具有:,;)< 關系的所有等高線對象。利用"# 中的位置查詢函數,求出所有與分割線具有相接(:,;)<)關系的所有等高線集合-=+>+)4(,7。這個選擇集,將是后面所有對象分析的基礎集合,即下面分析的所有等高線對象都只能包含于這個集合中,在這個集合外的任何對象,都不用考慮。
c 根據約束條件?,采用剪枝的方法,根據這些等高線位于分割線兩側位置的不同,將選擇集合中的所有等高線的對象$@(#$@)分成為兩組,使得每一組中的等高線都位于分割線的同一側。
d 選用任意側的等高線的對象$@ 數組#$@=,對其中的每一元素所對應的等高線對象-A+&4 進行遍歷查找。根據約束條件1,利用等高線對象-A+&4的高程值,在原選擇集-=+>+)4(,7 中,找出所有該高程值的對象,并將該對象放入"# 提的指針數組!"#$%&’#(&’)*’ 中。然后依據約束條件+,依次判斷該指針數組中的對象,(&’"#$% 與,"#$% 的距離關系,判斷它們的距離是否在容差范圍之內。若在,將該對象的-!. 存入相交數組,否則就存入不相交數組。接著,判斷在不相交數組中是否存在與,(&’/"#$% 相交的對象。同時,再根據約束條件0,可判斷與,(&’"#$% 相交的等高線最多只有一個對象,即在不相交數組中找到一個對象就退出循環,轉入遞歸查找遍歷中。依次循環遍歷,直到找出所有的對象。
e 將所有相交對象合并,生成一個新對象。利用2- 中的!3*,*-,#’$%* 接口所提供的合并(4/56*5)函數,將所有相交的對象合并成一個新的圖形對象(7#*8#%’9),然后將該對象插入到合并后的圖層中去。
f 判斷上面已處理過的相交對象數組中是否有對象是對象!. 數組-!.; 中的對象,有則要去掉該對象,這樣就可避免重復繪制某對象。
g 返回( 步,執行下一個對象的遍歷。直到遍歷完該對象!. 數組中所有的對象為止。
(4)刪除重復對象。因為筆者在第三步是插入的新對象,這樣就存在著對象的重復。所以,我們就要將原對象全部刪除。我們之所以沒有在第三步中刪除,是因為2- 在做插入操作時,不允許做刪除操作。同時,將所有刪除對象放進集合(!;#%)中刪除的速度要比單個刪除快許多倍,而且內存消耗少。
7 結束語
地圖接邊工作,一直是7!; 原始數據處理工作中所必須面對的問題,也是十分棘手的一個問題。雖然,目前的商業軟件也能處理一部分問題,但是還是存在不足。筆者針對這種不足,提出了解決問題的算法,并在該基礎上實現了等高線的拼接。在實驗中,筆者所用的兩圖等高線圖共有>+?? 個對象,在接邊處存在著+=0 個對象,使用該方法,用程序實現整個拼接工作不到> 分鐘。若是僅僅合并拼接處對象,僅要@ 分鐘左右。這說明了筆者設計的算法不僅可行,而且處理速度快。因此,筆者認為該方法可以用于生產實際。
聲明①:文章部分內容來源互聯網,如有侵權請聯系刪除,郵箱 cehui8@qq.com
聲明②:中測網登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述,文章內容僅供參考。
加群提示:我們創建了全國32個省份的地方測繪群,旨在打造本地測繪同行交流圈,有需要請聯系管理員測小量(微信 cexiaoliang)進群,一人最多只能進入一個省份群,中介人員勿擾