■馬良才
(廣州繪宇智能勘測科技有限公司 廣東廣州510000)
基于三維地理信息系統的數據結構分析
■馬良才
(廣州繪宇智能勘測科技有限公司 廣東廣州510000)
本文首先介紹了進行三維地理信息系統數據結構研究的必要性,詳細闡述了其矢量結構的構建、編碼等內容,主要探討分析了其核心技術及系統實際應用功能,針對性地提出結構設計及儲存方面的建議,以供相關人員參考借鑒。
三維GIS矢量數據構建編碼
隨著計算機信息技術的發展,現代勘測技術的地形圖繪制普遍通過地理信息系統(GIS)來進行,GIS具有地理定位功能、地理信息采集分析儲存輸出功能、動態預測以及空間分析功能等,擁有極其高的應用價值。加之當下三維技術的應用發展,人們將三維技術與GIS技術相結合,使得GIS更加具體化、數據更加直觀明了,現對其數據結構進行研究分析,為三維GIS的發展提供技術支持。
1.1二維GIS數據結構的缺陷
三維GIS是在二維GIS發展到一定程度的基礎上才提出的。對于二維的情況,是將平面上的坐標(x,y)作為獨立的參數來表達地物的屬性,數學表示為F=f(x,y)。而由DEM生成的地形表面只能稱為2.5維GIS,地面高程只是作為一個屬性值,其數學表示為Z=z(x,y),F=f(x,y)或者表示成F=f{x,y,z(x,y)}。通過這種結構雖然能表現鄰近的多個表面,但對于表面交叉的情況,則難以進行交叉表達和管理。只有將這類現象置于真正的三維空間中考慮,才能靈活高效地處理各種三維問題。而真正的三維GIS是將三維空間坐標(x,y,z)作為獨立的參數,數學表達式為F=f(x,y,z)。在三維GIS中所進行的所有操作都是將(x,y,z)作為一個整體參數進行計算的,而傳統的二維GIS的數據結構以點、線、面這3種基本要素來表達地物已經不能滿足計算機操作的要求。
1.2建立三維GIS數據結構的緊迫性
當前研究和開發三維GIS的思路主要有兩種:
(1)從三維可視化領域向三維GIS系統擴展,這一點同早期的二維GIS來源于計算機制圖管理一樣,是從可視化角度出發的;
(2)從數據庫的角度出發向三維GIS發展,將三維空間信息的管理融入RDBMS中,或是從底層開發全新的面向空間的OODBMS。一個新的發展方向是將三維可視化與三維空間對象管理藕合起來,形成集成系統。雖然國內外出現了一些開發三維GIS的相關軟件,但它們的共同缺點是只重視表達三維對象本身,而對各對象間關系的表達沒有足夠的重視。因此,管理大批量三維空間對象的能力較弱,也不能做一些GIS需要的空間分析。出現這種情況的一個主要原因是三維空間數據模型理論和技術不成熟,采用什么樣的數據模型對GIS空間拓撲關系的建立以及空間分析與操作至關重要,而三維空間數據結構是三維空間數據模型的具體實現,是客觀對象在計算機中的底層表達,是對客觀對象進行可視表現的基礎。
在三維GIS數據結構方面的研究最初主要集中于柵格或體元表示,后來轉向矢量數據的表示,現在也出現了對矢柵數據一體化結構的研究。但就目前來講,主要還是擴充二維矢量數據結構,將點、線、面要素擴展到體,除了表達各種元素的空間位置外,還表達它們之間的拓撲關系。三維GIS的數據結構大體上可以分為兩大類:
(1)基于表面的數據結構,有規則格網(Grid)、不規則三角形網(TIN)、邊界表示(BR)和參數函數;
(2)基于體表示的數據結構,有三維柵格(Array)、八叉樹(Octree)、實體結構幾何法(CSG)和四面體格網法(TEN)。前者便于表面顯示,后者便于空間分析。
2.1三維矢量結構
在三維空間中,多采用點、線、面、體來表達各種實體,前三種要素在二維平面GIS的應用中已有較深的研究,只有體元素的研究才剛起步,并且也是三維數據結構研究中必需解決的難題。李青元認為,只有體劃分是有限—互斥—完整劃分的概念,不同的數據場類型對應不同的體劃分方案。在三維空間里,研究區域中涉及最多的便是體元素,體與體之間由曲面片隔開;曲面片由一個外環和若干個內環構成邊界;相鄰曲面片交于邊,環由邊有向連接成一個閉合回路;邊由兩個端結點限定邊界,兩個端點之間用一系列曲線型值點限定邊的形狀;不同的邊交于結點。
在表達實體對象時,尤其對于復雜地物的表達,常將其按照不同的精細程度進行子結構劃分以及拓撲關系的表達,這使得各種空間的操作與查詢易于實現。
2.2面向對象方法構建三維數據結構
到目前為止,三維GIS一直處于理論研究階段,雖然有三維GIS系統問世,但其功能遠遠不能滿足人們分析問題的需要。其拓撲關系模型一直沒有解決,另外,三維基礎上的數據量十分大,很難建立一個有效的、易于編程實現的三維模型。針對三維GIS拓撲空間的復雜性,使用一種面向對象的三維GIS空間矢量網狀數據模型,以鏈表作為基本結構,把點、線、面、體看作是三維GIS的基本元素,以每個元素為對象設計數據結構。這種結構由面向對象的二維GIS發展而來,符合人們處理GIS基本元素對象的習慣,能較直觀自然地表達三維GIS中各個對象間的拓撲關系,且由面向對象的二維GIS系統向面向對象的三維GIS過渡也較易實現。
面向對象三維矢量GIS數據結構按面向對象程序設計的風格,對每一個基本元素定義一個類,拓撲關系包含在類的成員變量及成員函數中。這樣程序設計中只針對每個元素,運用其成員變量,編寫其成員函數,程序通過調用其成員函數即可實現拓撲關系的自動建立。在表結構中建立指針,通過表結構中的這種指針來表達空間拓撲關系。在這種結構中,每個基本元素類中包含了構成它的基本元素,也包含了由它構成的更高一級的元素,這種數據結構所構成的數據模型能表達網狀的空間拓撲關系,較直觀地反映了三維GIS中復雜的空間拓撲關系,也便于各類應用系統的開發。
在上面所給出的數據結構中,反映出了如下基本拓撲關系:點線關系、點面關系、線面關系和面體關系。隱含的關系有:線與線關系、面與面關系和體與體關系。這些關系基本上能全面反映已有的空間拓撲關系,由于以點、線、面、體基本對象構建,故適合于面向對象的空間操作與分析。
VC++作為一種功能強大的面向對象語言,是開發GIS圖形系統和屬性數據庫的有利工具。類似于用VB實現OpenGL三維地形顯示的思想,在VC的函數庫中加入圖形繪制函數庫,利用VC來實現三維地形顯示。在實現三維建模的同時,將對應的屬性信息綁定在該類所生成的實體,并對GIS圖形數據與屬性數據進行連接,在建立其數據庫時,可選用ArcSDE與Oracle結合的方式進行建庫,最終實現一體化的管理。
2.3八叉樹編碼的三維GIS數據結構
八叉樹結構是三維GIS中一種研究和應用最為廣泛的柵格數據結構,也是一種有效的柵格數據結構,是由四叉樹結構推廣到三維空間而形成的一種三維柵格數據結構。八叉樹的特點是結構簡單,便于分析和處理。在八叉樹的樹形結構中,將每一個不是葉子的結點連接8個子結點。根結點表示整個目標空間,對應一個2n邊長的立方體(n為八叉樹的層次數),任何其他結點對應于一個邊長為2i(i為結點的深度)的立方體。從同一個父結點產生的子結點所對應的立方體是通過對父結點對應的立方體沿3個坐標軸進行分割得到的。八叉樹編碼有普通八叉樹、線性八叉樹和行程八叉樹編碼。
普通八叉樹編碼是八叉樹最基本的編碼方法,又稱為明晰樹編碼。對于每一個結點需記錄結點的類型、結點的屬性值和指向兄弟結點的指針,如果是中間結點則有一個指向第一個子結點的指針和一個指向父結點的指針。樹中結點的數目是O(s/n),這里s是以分辨率為單位的目標的表面積。對于給定的分辨率,當s增加時,編碼的存儲空間也增加。由于采用指針,又稱為基于指針的編碼方法,這種方法明確存儲所有需要的內容,沒有任何數據壓縮,因而便于檢索。但是,由于指針占用存儲空間大,存儲空間的使用率不高,增加了操作的復雜性,使得操作速度較慢,因此一般不使用,特別不適合數據量通常很大的GIS應用。
線性八叉樹編碼是為了克服普通八叉樹編碼的不足而形成的一種高效編碼方法。線性八叉樹編碼只存實的葉結點,內容葉結點的位置、大小和屬性值。葉結點的編碼稱為地址碼,常用的地址碼是Morton碼,其中隱含了葉結點的位置和大小信息,Morton碼的生成可以由結點在空間的三維坐標(X,Y,Z)經過計算得到。線性八叉樹存儲內容簡單,存儲空間占用少,提高了運算效率,能夠滿足一般的應用需要。目前,許多三維柵格算法都是基于線性八叉樹編碼。
三維行程編碼方法是在對線性八叉樹編碼方法進行分析的基礎上,將行程編碼技術引入八叉樹的數據壓縮而形成的。三維行程編碼是二維行程編碼的直接擴展,它是將多維表示轉換成一維表示,再進行數據壓縮的有效方法。在壓縮過程中對屬性相同的連續編碼進行壓縮,同時保證空間關系沒有任何損失。在三維行程編碼中,葉結點采用線性八叉樹相同的地址碼,即Morton碼,當采用十進制編碼時,所有結點的編碼成為一個一維的連續自然數編碼,其中的順序是一種空間最近關系。當采用自然數編碼時,就可以直接用Morton碼作為屬性值數組的下標,而不需地址碼的內存數組。這樣可以節省內存,提高運算速度,插入、刪除等操作更為簡便。
綜上所述,三維GIS具有優秀的空間信息表現形式,使用戶對于空間信息的認知更為簡單明了。三維GIS涉及到很多支撐技術和研究領域,重點在于空間數據的分析處理,不斷發揮三維GIS技術作用,對于促進包括我國建筑產業在內的我國各生產領域的發展具有重要的歷史作用和現實意義。
[1]姜亞莉、張延輝.GIS空間分析的應用領域 [J].四川測繪.2004(03)
[2]余成肖、李欣、王君.GIS空間分析建模模塊的設計與實現 [J].計算機工程與設計. 2010(14).
P2[文獻碼]B
1000-405X(2016)-2-224-2