本發(fā)明公開了一種基于布爾運算的三維拓撲關系表達與映射方法,能夠用于三維空間對象之間的拓撲關系運算。
背景技術:
拓撲關系是指在拓撲變換(旋轉(zhuǎn)、平移、縮放等)下保持不變的空間關系,即拓撲不變量。相較于方位和度量空間關系,拓撲關系具有更加穩(wěn)定的性質(zhì)。例如,在地圖投影變換中,方向、長度、角度和距離等方位和度量關系性質(zhì)都發(fā)生變化,但鄰接性、包含性和相交性等拓撲關系性質(zhì)保持不變。拓撲關系分析方法也是GIS重要的分析方法,是GIS和CAD的重要區(qū)別之一。
近40年來,GIS從最初的地籍數(shù)據(jù)管理與機助制圖起步,經(jīng)歷由二維數(shù)據(jù)來描述地理對象,發(fā)展到后來基于2.5維的空間分析和可視化應用,再發(fā)展到當前面向準三維(2.75維)和三維空間分析和可視化研究。當前,3D GIS的應用功能主要集中在于三維可視化和逼真的視覺表達方面,而作為GIS核心功能的三維空間分析和操作功能還很不完善。三維空間分析和操作在某種程度上是在處理空間對象之間的拓撲關系,例如網(wǎng)絡分析處理空間對象的拓撲鄰接與關聯(lián)關系,疊置分析則處理空間對象之間的相交、重疊等拓撲關系,鄰域分析是在相互鄰近的空間實體之間進行的。因此,三維拓撲關系是三維空間分析和操作的基礎,三維拓撲關系的研究對于促進空間關系理論的發(fā)展和3D GIS的進步,具有重要的理論和實際意義。
拓撲關系的獲取通常需要大量的計算,即使有些系統(tǒng)顯式記錄了部分拓撲關系,但通常都是十分簡單的鄰接和關聯(lián)關系,而大部分拓撲關系則需要在應用時進行基于坐標的計算。與二維空間對象相比,由于三維空間對象維度的提高,三維空間關系計算復雜性極大提升,隨之帶來的是拓撲關系獲取更為復雜。三維拓撲關系的獲取涉及到許多不同類型、不同層次的計算幾何算法,而三維計算幾何算法復雜,時間和空間復雜度都極大提升,準確性和實時性難以保障。三維拓撲關系研究的滯后儼然已經(jīng)成為3D GIS發(fā)展和應用的瓶頸。
為了解決上述問題,本發(fā)明將布爾運算理論引入到三維拓撲關系的獲取,研究基于布爾運算的三維拓撲關系映射機制。布爾運算(亦稱為布爾操作、集合運算)是通過布爾算子(交、并和差等)對兩個實體進行計算,從而得到新的物體形態(tài)。三維拓撲關系表達方法是通過計算空間對象的交集是否為空,來判斷空間對象之間的拓撲關系。因此,布爾運算中的交、并和差等算子的設計理念與三維拓撲關系表達方法的設計思路具有一致性。鑒于此,本發(fā)明擬從一個全新的視角,以三維拓撲關系為切入點,以計算機領域布爾運算原理與方法為理論基礎,研究基于布爾運算的三維拓撲關系計算。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種高效的三維拓撲關系計算方法,直接從底層的空間數(shù)據(jù)結(jié)構(gòu)中獲取高層次的拓撲關系語義信息。
拓撲關系表達的主要目的是建立空間對象與所對應的拓撲關系之間的映射。不同的拓撲關系可以采用不同的方法,但映射的結(jié)果必須與認知的概念相一致,還需要考慮到拓撲關系的計算和推理等特性。拓撲關系表達方法主要有點集拓撲法、區(qū)域連接演算法、符號投影法(2D String)、基于語義的拓撲關系描述方法、外接矩形法和廣義交模型描述法等。其中,點集拓撲法建立在點集拓撲理論基礎之上,具有簡潔和完備的特點,并且具有維度無關性。因此,本發(fā)明采用點集拓撲法表達三維拓撲關系。
三維空間對象拓撲關系計算涉及到許多不同類型、不同層次的空間對象之間的計算,包括點、線、面、體和集合對象之間的拓撲關系計算。設計優(yōu)秀的計算幾何算法,既能保障布爾運算結(jié)果的正確性,又能保證布爾運算的時間和空間復雜度,既能將布爾運算結(jié)果運用到空間對象位置關系判斷,又能將布爾運算結(jié)果應用于拓撲關系的計算。因此,本發(fā)明歸納了大量的計算幾何算法并應用于布爾運算。
布爾運算是一種二值之間關系的邏輯數(shù)學計算法,包括聯(lián)合、相交、相減,在圖形處理操作中,使用這種邏輯運算方法能夠以簡單的基本圖形組合產(chǎn)生新的形體,現(xiàn)在已經(jīng)發(fā)展到三維圖形的布爾運算。相對于GIS領域,計算機輔助設計領域很早就開始研究三維形體的表示與分析操作,并發(fā)展了幾何造型理論。本發(fā)明將圖形處理領域的布爾運算引入到三維拓撲關系計算之中,實現(xiàn)三維拓撲關系的分析。
本發(fā)明將布爾運算引入到三維拓撲關系分析中,以全新的思路解決三維拓撲關系計算中的兩個核心問題:
(1)三維空間對象布爾運算。三維布爾運算中涉及到大量的計算幾何算法,算法的優(yōu)劣直接影響到三維布爾運算的正確性和效率?;谌S計算幾何算法接口的三維布爾運算方法是本發(fā)明的前提基礎。
(2)基于布爾運算的三維拓撲關系計算
基于計算幾何算法接口,實現(xiàn)空間對象之間的布爾運算,建立三維拓撲關系表達機制,實現(xiàn)基于布爾運算的三維拓撲關系計算是本發(fā)明的關鍵。
空間分析是GIS的核心,是GIS和CAD等計算機系統(tǒng)的本質(zhì)區(qū)別。本發(fā)明具有重要的理論與工程實踐意義,可以支持二維、三維GIS的拓撲關系計算,提升GIS產(chǎn)業(yè)的核心競爭力。
附圖說明
圖1三維空間對象表達示意圖
圖2一種拓撲關系決策樹示例
圖3三維空間對象拓撲關系計算流程
具體實施方式
以下結(jié)合幅圖,對本發(fā)明的布爾運算支持下的三維拓撲關系表達和映射的具體實施方式進行詳細說明。
步驟1:三維空間實體計算機表達。擴展OGC簡單要素規(guī)范對三維空間對象的表達,實現(xiàn)對零維、一維、二維、三維和混合維空間對象的統(tǒng)一表達(圖1)。
步驟1-1,點表示0維空間目標的幾何結(jié)構(gòu),在R3中用一個坐標來表示,只表示位置,而沒有大小。
步驟1-2,線表示1維空間目標的幾何結(jié)構(gòu),是由三維空間中的點順序相連形成的,在歐式空間中的長度大于0,并且線為簡單線,即不經(jīng)過相同的點兩次
步驟1-3,面為R3中的曲面,在歐式空間中面積大于0;有一個外環(huán)(外邊界)和0~n個內(nèi)環(huán)(內(nèi)邊界)組成,每個內(nèi)環(huán)形成表面上的空洞,組成表面的任何兩個邊界都不相交。
步驟1-4,體為R3中的體狀對象,在歐式空間中體積大于0;體有一個外殼(外邊界)和0~n個內(nèi)殼(內(nèi)邊界)組成,每個內(nèi)殼形成體內(nèi)的空殼,組成體的任何兩個殼都不相交,一個殼至少有四個及其以上的面組成。
步驟1-5:多點、多線、多面、多體和混合維對象屬于集合對象,由上述四種簡單對象組成。
步驟2:三維空間對象的布爾運算,具體步驟如下:
步驟2-1,對三維空間對象進行共面、共線和共點判斷,記錄共享的點、線或者面,用于以下的步驟。
步驟2-2,對兩個空間對象進行求交運算,記錄交點、交線和交面。
步驟2-3,判斷交點、交線或者交面與空間對象之間的關系。
步驟2-4,根據(jù)布爾運算具體的類型,決定哪些元素作為結(jié)果保留,哪些元素被丟棄。
步驟2-5,根據(jù)2-1、2-2、2-3、2-4的步驟之后,最后得到結(jié)果形體,結(jié)束布爾運算。
步驟3:三維拓撲關系表達與映射,具體步驟如下:
步驟3-1,針對三維拓撲關系形式化表達問題,采用九交矩陣模型來表達。
步驟3-2,定義點、線、面、體以及集合對象之間的八種拓撲關系:Disjoint、Touches、Within、Overlaps、Contains、Equal、Covers、CoveredBy。
步驟3-3,針對三維拓撲關系形式化模型和三維拓撲關系語義表達模型之間映射問題,建立點、線、面、體以及集合對象之間存在的拓撲關系的形式化表達模型,從而實現(xiàn)形式化表達模型和拓撲關系語義表達之間的對應。如果P、L、A和V分別表示點、線、面和體幾何對象,A和B為R3中的兩個空間對象,I(a)、I(b)、B(a)、B(b)、E(a)和E(b)分別表示A和B的內(nèi)部、邊界和外部,上述8種拓撲關系表示如下:
(1)Disjoint
Disjoint稱為相離,表示空間對象A和B在空間上是相離的,Disjoint關系的定義如下:
基于9IM,Disjoint關系形式化描述:
(2)Touches
除P/P之外,其它15種情況都有可能是Touches關系。Touches稱為相接,表示空間對象A和B在空間上相接,Touches關系的定義如下:
基于9IM,Touches關系形式化描述:
(3)Within
Within關系發(fā)生在{P/L,P/A,P/V,L/L,L/A,L/V,A/A,A/V,V/V}之間。Within稱為被包含,表示空間對象A完全在空間對象B的內(nèi)部,Within關系的定義如下:
基于9IM,Within關系形式化描述:
(4)Overlaps
Overlaps關系發(fā)生在{L/L,L/A,L/V,A/L,A/A,A/V,V/L,V/A,V/V}之間。Overlaps稱為重疊,表示相同維數(shù)的空間對象A和B,相交產(chǎn)生的結(jié)果不等同于A或者B,Overlaps關系的定義如下:
基于9IM,Overlaps關系形式化描述:
(5)Contains
Contains關系發(fā)生在{L/P,L/L,A/P,A/L,A/A,V/P,V/L,V/A,V/V}之間。Contains稱為包含,表示空間對象A完全包含空間對象B,Contains和Within是相對的,Contains關系的定義如下:
基于9IM,Contain關系形式化描述:
(6)Equals
Equals關系發(fā)生在{P/P,L/L,A/A,V/V}之間。Equals稱為相等,表示空間對象A和空間對象完全相等。Equal關系的定義及形式化描述:
(7)Covers
Covers關系發(fā)生在{L/L,A/L,A/A,V/L,V/A,V/V}之間。Covers稱為覆蓋,表示空間對象A的內(nèi)部包含空間對象B的內(nèi)部,并且A的邊界和B的邊界相交,但A和B不相等,Covers關系的定義如下:
基于9IM,Covers關系形式化描述:
(8)CoveredBy
CoveredBy關系發(fā)生在{L/L,L/A,L/V,A/A,A/V,V/V}之間。CoveredBy稱為被覆蓋,表示空間對象A的內(nèi)部完全在空間對象B的內(nèi)部,并且A的邊界和B的邊界相交,但A和B不相等,Covers和CoveredBy是相對的,CoveredBy關系的定義如下:
基于9IM,CoveredBy關系形式化描述:
步驟4:根據(jù)拓撲關系的交集模型,建立拓撲關系決策樹。在每一個節(jié)點對搜索空間進行劃分,從而逐步排除其它拓撲關系。拓撲關系決策樹是基于交集取值的,因此在節(jié)點選擇不同的判別式可以得到不同的決策樹(圖2)。
步驟5:基于拓撲關系決策樹的三維拓撲關系計算(圖3)。具體步驟如下:
步驟5-1,建立拓撲關系決策樹,并沿著拓撲關系決策樹進行拓撲關系判別。
步驟5-2,并獲取空間對象的內(nèi)部、邊界和外部。
步驟5-3,依據(jù)拓撲關系決策樹獲取待計算部分的維度和類型。
步驟5-4,根據(jù)待計算部分的維度和類型,調(diào)用相應的布爾運算算法。
步驟5-5,根據(jù)布爾運算結(jié)果,判斷其是否空集。如果已經(jīng)到達拓撲關系決策樹的葉子節(jié)點,則拓撲關系計算完畢,獲取空間對象之間的拓撲關系;否則,沿著拓撲關系決策樹進行下一步的計算。
以上所述僅為本發(fā)明的較佳實施例而已,而不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。