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