摘要:GIS空間數據模型中,基于規則的拓撲關系檢查是保證數據一致性和正確性的主要方法。本文針對GeoView關系模型組織的空間數據提出了相應的拓撲規則管理方法,根據拓撲關系和實際情況歸納出一系列的拓撲規則,并通過實例介紹了拓撲規則的檢查算法的實現。該拓撲規則管理方式已應用于GeoView平臺,較好的實現了對空間對象拓撲關系的管理。
關鍵詞:拓撲關系;拓撲規則;空間數據
1 引言
地理信息系統以地理實體為研究對象,實體間的拓撲關系是GIS進行空間分析、空間決策支持的基礎,也是GIS研究的核心問題之一。地理實體往往需要符合一些空間拓撲方面的邏輯要求。比如“等高線不能自相交”,“一個省的省會必須在該省的行政區域之內”。在地理實體的空間數據發生變更之后,也需要維護這些拓撲關系。拓撲規則正是為了解決這一問題產生的,它可以很好的維護拓撲關系,對于保證數據的一致性和正確性具有重要意義[1]。
不同的GIS平臺數據模型不同,空間數據拓撲規則的管理機制也不同。面向地礦行業的GIS平臺軟件GeoView采用的關系模型組織數據。本文針對這種數據模型提出了一套適用其數據存儲的空間拓撲規則的管理機制。
2 GeoView數據模型
GeoView采用的數據模型是關系模型組織的圖形數據。在該模型中,各種地理要素抽象為基本的空間對象,即點對象、線對象,區對象[2]。用來描述空間對象的數據,稱為空間數據。GeoView的空間數據除了記錄空間對象的坐標、屬性等基本信息外,還保存了對象之間的位置關系,即拓撲關系。這樣可以方便的實現對空間對象的拓撲管理。
在GeoView平臺中,具有相同屬性的空間對象構成圖層對象。空間對象采用“圖層-空間實體”的數據管理模式,如圖1所示。在一個圖層中,包括某一類空間對象。其中區由線構成,線由點組成,通過采集點的坐標,可以得到圖層內各種空間數據模型的必要相關信息。具體來說,點對象記錄點X、Y坐標值以及穿越該點的線對象信息;線對象由結點組成,每個線對象中記錄了組成該線的結點信息,以及該線對象的左右區對象信息;區對象則包括組成區對象的線對象數目以及線對象ID列表。
3 拓撲關系分析
基于規則的拓撲管理機制需要理解和分析GIS 系統中所有空間對象間的拓撲關系。地理空間實體之間不隨實體的連續變形而改變,與量度和方向無關的一種空間關系叫做拓撲關系[3]。根據GeoView中拓撲關系所涉及到的空間對象類型,可以將拓撲關系分為同一實體類型拓撲關系和不同實體類型之間的拓撲關系。拓撲空間中的點對象、線對象、面對象三種基本對象之間可定義6種拓撲關系集合[4]。Egenhofer和Franzosa提出的“九交模型”論證了拓撲關系集合中具有實際意義的拓撲關系:點對點的相離、共位、相鄰、包含;點對線的相離、相鄰、相交、包含;點對區的相離、相鄰、包含;線對線的相離、相鄰、相交、共位;線對區的相離、相鄰、相交、包含;區對區的相離、相鄰、相交、包含。
4 拓撲規則
4.1 拓撲規則概念
拓撲規則是對空間實體對象拓撲關系的一種約束,空間數據在創建時可能存在拓撲關系錯誤或者沒有建立拓撲關系,即使數據的拓撲關系正確也很難保證數據修改后拓撲關系一直不被破壞,因此建立了拓撲規則[5]。這樣根據需求對空間數據進行拓撲關系檢查,并根據檢查結果對違反規則的空間數據進行修正,確保空間拓撲關系的正確性和一致性。
4.2 拓撲規則分類
根據已有的拓撲關系,及遇到解決實際問題時所采用的已經約定的解決方法,從邏輯概念層面抽象出一組拓撲規則,包括點拓撲規則、線拓撲規則、多邊形拓撲規則三部分。
點拓撲規則主要是描述包含點對象的圖層與其他圖層的拓撲關系限制,比如限制勘探點圖層與勘探線圖層,可以加一個點拓撲規則勘探點必須被勘探線覆蓋。
線拓撲規則主要描述對線對象拓撲關系的限制。比如針對同一圖層中的線對象要求不能有“懸掛點”、“偽節點”,不能自相交、自重疊。具體如下:
①同一類(子類)線要素內部的拓撲規則:不能有懸掛點,線的端點必須連接到其他線要素,該規則適用于一類(或子類)線要素與其他類相交;不能有偽節點,當一個線的端點遇到另一個線的端點時產生偽節點;不能有重復邊,線都不能與其他線重疊,例如:水系一般不能和房屋的邊線重疊;在同一要素內,線要素不能疊加或者與其他線要素相交,不同類(子類) 線要素不能相交或疊置,但其端點可以伸入其他要素內部,例如:鉆孔線不能與平硐線相交;不能自相交,例如等高線不能自相交,鉆孔線、平硐線都不能自相交;不能相交或伸入到其他要素的內部;只能是單一部分(single part),例如:道路層中的道路是由許多獨立的線段組成,每一個線段僅有一部分組成。
②不同類(子類)要素之間的拓撲規則:不能重疊,例如:道路能與河流相交, 但道路不能與河流重疊;一類線要素必須被另一類線要素覆蓋,例如:探槽曲線必須與地表層的等高線重疊;線要素與點要素之間的拓撲規則,一類要素的端點必須被另一類點要素覆蓋;線要素與面要素之間的拓撲規則,一類線要素必須被另一類多邊形要素的邊界覆蓋, 例如: 根據組合樣圈礦得到的線段必須是礦體面的邊界,如圖2所示。
多邊形拓撲規則主要是限制區要素與區要素之間的重疊、覆蓋、重合等拓撲關系以及區要素邊線與另外的區要素邊線之間的拓撲關系。
①同一類(子類)面要素之間的拓撲規則:不能相互疊加(有公共點例外),該規則用來保證同一類面要素中不存在相互重疊的情況,例如一般圖中的房屋、建筑物之間;綜合柱狀圖中不同填充花紋的區塊之間,如圖3所示;不同礦體面之間;不能有空白區域。該拓撲規則適用于一個特定范圍內的多邊形必須連續并無空隙或空白區域。
②不同類(子類) 要素之間的拓撲規則:多邊形包含點的拓撲規則,點必須落在多邊形的邊界內,落在邊界上或之外為違反規則,此條規則保證所有多邊形內至少有一個點, 重疊區域可以共享一個點;線構成多邊形邊界的拓撲規則,多邊形的邊界必須由另一類線狀要素構成。該規則用于保證多邊形的邊界于特定線要素完全一致。
③不同類多邊形要素之間的拓撲規則:一類多邊形要素必須被另一類多邊形要素覆蓋或重疊,例如:鎮界必須被市界覆蓋;一類面要素的多邊形不能被另一類面要素的多邊形覆蓋,例如:湖泊和宗地是不同的兩類要素,它們之間不能重疊;不同要素之間必須相互覆蓋,例如植被和土壤類型多邊形之間必須相互覆蓋;一類多邊形要素的邊界必須被另一類多邊形要素的邊界覆蓋,適用于一類多邊形要素的邊界必須與另一類多邊形要素的邊界對準時,例如,規劃紅線范圍線必須與舊宗地的邊界吻合,但不必包含所有宗地。
5 拓撲規則的檢查
5.1 拓撲規則的檢查算法
拓撲規則創建的意義在于對空間實體對象進行拓撲檢查,看是否符合拓撲規則的要求,這是維護空間數據有效性的關鍵。拓撲規則檢查的核心就是創建拓撲規則管理器,實現對上述所有拓撲規則的檢查。由于GeoView采用的關系數據模型,所以拓撲規則的檢查算法均建立在該關系數據模型基礎上。不同類型的拓撲規則因為其約束對象的不一樣,檢查算法也不一樣。
點拓撲規則檢查主要對點對象與同類型或不同類型對象的拓撲信息進行檢查。點對象是其它空間對象的基礎,直接保存了坐標信息,檢查較為容易。下面是點對象與同類型(點對象)拓撲規則檢查算法示例。檢查的拓撲規則為:在一個點圖層內,點和點之間不能重合。具體算法如下:
①對該點圖層構建拓撲信息;②取出該點圖層內包含的所有點對象的ID列表ID[i](i=0,1,2…,n-1),n為點圖層內對象個數;③待檢查點對象與圖層內點對象分別計算歐氏距離s,如果s<ε(極小的正數),則表示兩個點對象重合,返回錯誤,否則判斷:如果i
線拓撲規則檢查需要構成線對象的結點序列,然后根據相關實體信息進行拓撲規則檢查。以下是線拓撲規則檢查算法示例,檢查的拓撲規則為:一個線圖層內部,線與線不能相交。具體算法如下:
①對該線圖層構建拓撲信息;②取出該線圖層包含的所有線對象的ID列表ID[i] (i=0,1,2…,n-1),n為線圖層內對象個數;③根據ID列表順序取出第i個對象的弧段ID列表IDa[j](j=0,1,2…,m-1),m成ID[i]線對象的弧段個數;④ 根據弧段ID列表順序取出經過第j個弧段起點和終點的弧段ID列表IDa0和Da1;⑤檢查列表IDa0,得到引用這些弧段的線對象ID,判斷是否存在兩個或者兩個以上不同的對象ID,是則違反規則,返回錯誤,否則繼續;⑥ 檢查列表IDa1,判斷是否存在兩個或者兩個以上不同的對象ID,是則違反規則,返回錯誤,否則判斷:如果j
根據上面的算法,檢查等高線圖層內部線和線之間不能相交,圖層內部的等高線信息如圖4所示,包含三個線對象g1,g2,g3;空間弧段信息如圖5所示,g1引用弧段arc1和arc3,g2引用弧段arc2和arc4,g3引用弧段arc5,檢查結果表明違反線對象規則g1和g2,拓撲錯誤的結點為dot2。
區拓撲規則一般會需要解析幾何等方法進行檢查,下面是區對象與不同類型對象(點對象)的拓撲規則檢查,涉及到的拓撲規則為:一個點對象必須在另一個區對象內部。具體算法如下:
①取到構成區對象的弧段個數m及弧段ID列表ID[i](i=0,1,2…m-1);②點對象引入任意方向的射線;③依次計算該射線與弧段ID[i]是否存在交點,直到i=m-1;④若交點的個數為奇數則說明該點在多邊形內;若交點的個數為偶數則說明交點在多邊形外。
5.2 拓撲規則檢查的實現
在GeoView平臺中導入將要進行拓撲關系驗證的所有圖層;建拓撲TOPO對象,并在TOPO中添加需要檢查的圖層以及規則;確定需要進行局部拓撲更新的對象,按照給定規則對應的算法進行拓撲錯誤檢查;最后將檢查的結果提示給用戶,便于用戶修改和維護。
6結束語
空間拓撲規則的引入對維護地理空間數據拓撲關系的正確性和一致性有非常重要的作用。本文針對GeoView的關系數據模型提出了一套相應的空間拓撲規則管理機制,總結出較為詳細的拓撲規則,每種規則均有相應的檢查算法,并在GeoView平臺上使用,效果良好。但是隨著GeoView軟件更廣泛的應用于地礦行業,對拓撲規則也會提出新的要求。為了更靈活的管理拓撲規則,今后還需要在自定義拓撲規則方面繼續深入研究。
參考文獻
[1]蔡曉兵.Geodatabase中基于規則的拓撲關系管理機制[J].信息技術,2002,(4):40-43.
[2]涂美義,李星.基于GIS 空間實體的自動拓撲模型設計與實現[J].地理空間信息,2005.3(1):28-30.
[3]陳述彭.魯學軍等.地理信息系統導論[M].科學出版社,2000.
[4]周順平,李華等.空間實體的拓撲構建[J].中國地質大學學報,2006,31(5):590-591.
[5]鄧敏,劉文寶,黃杏元.空間目標的拓撲關系及其GIS應用分析,中國圖象圖形學報, 2006,11(12):1743-1747.