摘要:空間分析是地理信息系統(Geographic Information System,GIS)提供的重要功能,而空間拓撲關系的建立是進行空間分析的關鍵。文章介紹了幾種空間拓撲關系建立的一般流程,還根據應用需要,介紹了軟件平臺及二次開發中建立空間拓撲關系的一般模式。
關鍵詞:空間分析;空間拓撲關系;空間拓撲關系的建立
近年來,計算機技術發展非常迅速,雖然地理信息系統(Geographic Information System,GIS)的輸入、存儲和輸出功能進展較快,但是空間分析功能的發展就顯得比較落后。而空間分析是建立在空間目標位置和屬性表達以及目標間復雜空間關系表達的基礎上,若要提高空間分析能力,必須解決空間關系描述與表達,而空間關系的建立也是提高GIS效率的一個關鍵。
一、空間拓撲關系描述
空間拓撲關系描述的是基本的空間目標點、線、面之間的鄰接、關聯和包含關系。GIS傳統的基于矢量數據結構的結點-段-邊形,用于描述地理實體之間的連通性、鄰接性和區域性。這種拓撲關系難以直接描述空間上雖相鄰但并不相連的離散地物之間的空間關系。
目前,對于空間實體之間的拓撲關系的描述,主要有基于網絡的拓撲模型和基于點集拓撲理論的拓撲模型,前者比后者具有直觀、結構清晰、互導性強、便于組織存儲等優點。基于點集拓撲的空間拓撲關系描述有三種方法:四元組、九元組和維擴展法。基于點集拓撲的空間關系描述框架能夠十分有效地描述有公共元素的空間目標間的拓撲關系,甚至能夠根據交集的維數更進一步區分成為各種不同的形式,但是基于點集拓撲的空間關系描述框架無法描述分離開的、沒有公共元素的目標間的拓撲空間關系,這正是其缺點所在。
二、空間拓撲結構
空間實體之間的基本關系有點-點關系、點-線關系、點-面關系、線-線關系、線-面關系和面-面關系,這些關系表現了實體間拓撲關系的相鄰性、連接性、閉合性、包含性和一致性等,是地理空間數據處理的依據。
空間拓撲結構就是指在數據結構上借助拓撲幾何學的概念來定義空間實體的相互關系。
在GIS系統拓撲數據結構中,通常具有如下三種重要的拓撲形式:
說明線串如何相連的連通性(Connectivity),即線串(Line String)是在結點(Node)上相互連接的。
多邊形是由一系列相連通的線串組成的。
記錄多邊形的相鄰信息以表示拓撲結構的連續性(Contiguity)是指根據線串的走向,可以決定誰是左多邊形,誰是右多邊形。同時,兩多邊形之所以相鄰是因為二者具有共同的邊界。
三、空間拓撲關系的建立
對于矢量圖形數據,目前主要空間拓撲關系的建立主要利用了點組成線、線組成多邊形的拓撲關系的這一基本思想。空間對象的簡單拓撲關系的判斷可以利用直線方程及直線的相關性質等解析幾何的性質來實現,這種方法避開了復雜的運算,可以有效地進行拓撲關系的建立。但是對于多邊形拓撲關系的建立就要復雜得多,這種方法的效率太低,時間和內存的開銷太大,因此多邊形拓撲的建立方法就成為評價某個算法優劣的重要標準。目前建立多邊形拓撲關系的算法主要有基于矢量圖形的邊界搜索算法和基于柵格的種子填充算法。
(一)簡單空間拓撲關系建立的流程
簡單空間拓撲關系的建立可以借助于解析幾何的思想,利用代數方程來解決幾何對象之間關系,通過直線的單調性及斜率等性質,只須經過簡單的運算,便可給出空間拓撲關系的具體判斷。其基本流程是:
1、獲取對象的坐標點或坐標點串。
2、利用解析幾何的思想,判斷其空間拓撲關系,如點與點是否重合,線與線是否相交等。
3、匹配,在數據表中表示出來。例如要表示線與點的關系,可以給線的屬性表中加兩個屬性,即起始點標識號和結尾點標識號,將對應的端點的標識號賦給這兩個字段。
(二)基于矢量圖形的多邊形空間拓撲關系建立的流程
矢量數據結構通常有環狀多邊形數據結構和拓撲化數據結構兩種基本形式。環狀多邊形數據結構與平面解析幾何對物體的描述十分相似,點是由一對坐標(x,y)來表示的,線表示成x1,y1,x2,y2…,xn,yn的形式,面則表示為x1,y1,x2,y2…,xn,yn,x1,y1。環狀多邊形數據結構不能完整地描述空間實體間的空間關系,而矢量空間數據的拓撲化數據結構可以克服這一缺陷。環狀多邊形數據結構是拓撲化數據結構的基礎,為其提供了基本的數據。
1、線的疏化。減少數據的存儲量,以提高建立線串—結點表、線串表、面表的速度,提高查詢、分析的速度。
2、長線斷列。在線的相交點上產生新的結點,使原來連續的線在交點處被打斷。
3、消除隙差并刪除重復線。
4、連成網絡。
5、檢查并處理線遺漏、在連續線中出現不應有的結點的等情況。
6、建立線串-點表,線串表。由此,可以知道一條線串的起始結點和尾結點以及頂點(Vertex)。同時,知道一個結點我們也能很快地找出通過此結點的所有線串。
7、搜索多邊形,建立面-串表。從任意一條線串開始,根據左轉法或右轉法進行多邊形的搜索。在多邊形搜索過程中,當重新回到起始的線串時,完成一個多邊形的搜索,并根據線串的前進方向,確定線串的左側多邊形或右側多邊形。在多邊形自動生成過程中,應遵循線串的先后相繼的原則,即前一條線串的尾結點為后繼線串的頭結點。
8、生成多邊形表。根據面-串表,找出與當前的多邊形相關的所有線串,計算得出多邊形的面積、周長。進行標識點在多邊形內的判斷,得出多邊形的用戶標識,用于同屬性庫相連。
(三)基于柵格的多邊形空間拓撲關系建立的流程
基于柵格的多邊形空間拓撲關系建立利用的是種子填充算法的思想,得到封閉區域的多邊形空間拓撲關系。其基本流程如下:
1、矢量數據柵格化。
2、在柵格數據場內搜索空白柵格,以此為種子進行區域填充。
3、重復進行種子搜索和區域填充,直到整個柵格數據場內沒有空白柵格時結束。
4、非邊界弧段的判定。非邊界弧段,可分三種類型:孤立弧,與內邊界或外邊界相連的死胡同,內邊界之間或內邊界與外邊界之間的弧段。非邊界弧段的判定結束后刪除這些孤立弧段、死胡同等非邊界弧段。
5、拓撲信息生成。建立多邊形拓撲關系除了要獲得構成多邊形的弧段外,通常還需對這些弧段進行排序以建立多邊形的內、外邊界,以及判定弧段的左、右多邊形,計算多邊形面積、周長,確定內點等。主要在弧段的左、右多邊形的判定和弧段排序。
四、空間拓撲關系的應用
(一)軟件平臺中的空間拓撲關系建立
軟件平臺中的空間拓撲關系的建立常為了拓撲檢錯和拓撲應用。拓撲檢錯是在建立好拓撲規則后,再打開些拓撲規則,根據錯誤提示進行修改。拓撲應用主要指的是為了提供空間分析的功能,比如線拓撲生成面、網絡分析功能等。
在軟件平臺中,拓撲關系的建立和使用的過程如下:
1、獲取圖形文件,新建或打開。
2、對圖形文件進行拓撲關系的建立,即根據需求調用特定的模塊對其進行處理。
3、根據所得的拓撲關系進行拓撲檢錯或拓撲應用。
當然,拓撲關系的建立是可以在進行圖形繪制的時候進行的,但是由于所需要的拓撲關系待定,就需要考慮所有的拓撲關系,而此時圖形還在動態變化當中,因此在每次圖形更新的時候都需要對其進行拓撲關系的建立,如此將嚴重影響圖形繪制及拓撲關系的建立的效率。
以使用ArcGIS進行最短路徑分析為例,其使用的拓撲關系是線文件的網絡拓撲關系,這種關系在其它拓撲處理時使用很少,因此如果是在圖形繪制時就建立網絡拓撲關系,就會造成的時間上的浪費。而ArcGIS實行的機制就是首先在ArcMap中進行圖形的矢量化,而后在ArcCatalog中建立其網絡拓撲關系,最后再在ArcMap中進行最短路徑分析。這種方式對于ArcGIS中的其它拓撲功能也適用。
這種拓撲關系建立是高效的、有針對性的,值得在軟件平臺設計時借鑒。
(二)二次開發中的空間拓撲關系建立
空間拓撲關系是GIS中空間分析的基礎,限制著其在空間分析方面的應用。目前大多數的應用軟件都是通過二次開發實現的,這種軟件開發的空間分析功能就不僅是建立在其使用平臺的基礎上,而且還要看其平臺所提供的二次開發組件。例如ESRI公司所提供的MapObjects不能獨立支持空間拓撲關系,因此在進行二次開發的時候就首先要求建立空間拓撲關系。
本文提出的二次開發流程如下:
1、分析空間拓撲關系和二次開發組件的空間數據模型,找出其共有的特性。
2、根據分析結果,設計用于存儲拓撲關系數據的數據庫。
3、設計建立空間拓撲關系的模塊。
4、建立空間拓撲關系,將其結果數據存儲到數據庫中。
5、空間拓撲分析模塊中調用拓撲關系數據庫中的數據進行處理。
五、結論
空間分析是GIS中的重要功能,它在基于空間拓撲關系建立的基礎上的,為了增強空間分析功能,應該充分考
慮實際應用中所提供的數據以及對其功能的要求,不僅要選擇合適的算法空間拓撲關系,還要選擇合適的空間拓撲關系的流程。
參考文獻:
1、