趙 瑩,胡暢達(dá),王國宇
(1.黑龍江第一測繪工程院,黑龍江 哈爾濱150025;2.黑龍江省國土空間規(guī)劃研究院,黑龍江 哈爾濱150025)
關(guān)于GIS的組成,可以研究四個方面:硬件系統(tǒng)、軟件系統(tǒng)、空間數(shù)據(jù)和操作人員。空間數(shù)據(jù)在GIS的構(gòu)成中起著重要作用,因此擁有一個良好的數(shù)據(jù)庫是GIS成功的關(guān)鍵。數(shù)據(jù)庫的功能主要體現(xiàn)在數(shù)據(jù)的存儲和管理上。在GIS中,用戶獲取的空間數(shù)據(jù)來自空間數(shù)據(jù)庫,因?yàn)榈乩硇畔⑾到y(tǒng)具有空間分析能力。在對數(shù)據(jù)進(jìn)行空間分析之后,將結(jié)果存儲在空間數(shù)據(jù)庫中。因此,空間數(shù)據(jù)庫在存儲空間數(shù)據(jù)方面也發(fā)揮著核心作用??臻g數(shù)據(jù)庫是地理信息系統(tǒng)的核心,是地理信息系統(tǒng)發(fā)展的技術(shù)支柱。
空間數(shù)據(jù)的管理已經(jīng)通過某個階段從文檔演變?yōu)閿?shù)據(jù)庫。起初是初級式的管理模式,這種管理模式比較好理解,因?yàn)樗且灰粚?yīng)的形式,空間數(shù)據(jù)文件提供空間分析功能,屬性數(shù)據(jù)文件提供屬性處理功能。然后是混合管理模式,其中屬性數(shù)據(jù)由屬性數(shù)據(jù)庫管理。與傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)不同,某些數(shù)據(jù)庫管理系統(tǒng)具有一層空間數(shù)據(jù)庫引擎,即SDE。在空間數(shù)據(jù)的存儲和管理中,出現(xiàn)了優(yōu)于傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的擴(kuò)展管理模式,因此ArcGIS具有許多傳統(tǒng)數(shù)據(jù)庫中沒有的功能。
在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)之上,改進(jìn)了空間數(shù)據(jù)存儲和管理的一些功能,形成了一體化的管理模式??臻g數(shù)據(jù)的管理經(jīng)歷了從文件到數(shù)據(jù)庫的發(fā)展過程,使得空間數(shù)據(jù)庫不斷完善和創(chuàng)新。
空間數(shù)據(jù)庫可分為關(guān)系型和非關(guān)系型。關(guān)系,其實(shí)就是一個表。在組織數(shù)據(jù)的時(shí)候,所利用的模型是關(guān)系數(shù)據(jù)模型。所謂關(guān)系數(shù)據(jù)模型就是二維表格模型,例如“一對一”“一對多”“多對多”。關(guān)系數(shù)據(jù)模型是將數(shù)據(jù)的邏輯結(jié)構(gòu)歸因?yàn)闈M足某些條件的二維表的元素。這種數(shù)據(jù)庫的數(shù)據(jù)存儲在磁盤上比較安全,因其建立在關(guān)系模型上,比較容易理解。但是,建在關(guān)系模型上就要遵循某些原則,因此不節(jié)省存儲空間。非關(guān)系型空間數(shù)據(jù)庫因存儲在內(nèi)存上,所以效率高,但是不安全。
關(guān)系型空間數(shù)據(jù)庫主要用于存儲空間數(shù)據(jù),關(guān)系型空間數(shù)據(jù)庫加上了一層數(shù)據(jù)引擎,可以大大地提高用戶的查詢檢索速度,并且可以和特定的GIS平臺緊密結(jié)合。但是,擴(kuò)展SQL很困難,并且很難共享數(shù)據(jù)并與數(shù)據(jù)進(jìn)行互操作。除了與數(shù)據(jù)庫引擎結(jié)合的關(guān)系型數(shù)據(jù)庫之外,還有一個擴(kuò)展的對象關(guān)系數(shù)據(jù)庫。擴(kuò)展對象關(guān)系型數(shù)據(jù)庫支持抽象的數(shù)據(jù)類型和操作,主要的代表有Oracle的Oracle spatial和PostgreSQL的PostGIS等等。該模型將空間數(shù)據(jù)類型和相關(guān)功能集成到數(shù)據(jù)庫管理系統(tǒng)的內(nèi)核之中,允許用戶以擴(kuò)展的SQL語言執(zhí)行操作。這樣,可以克服一般的空間數(shù)據(jù)庫的不足。
本文主要探討關(guān)系型空間數(shù)據(jù)庫,并且以O(shè)racle spatial、PostGIS、MySqL GIS三種常見的空間數(shù)據(jù)庫為例,對這三種常見的空間數(shù)據(jù)庫進(jìn)行比較。不同的空間數(shù)據(jù)庫雖然出自于不同的軟件公司,并且有各自的優(yōu)缺點(diǎn),但是都有著相似的目標(biāo),就是更好地滿足用戶對于空間數(shù)據(jù)管理和使用的需要。
為了順應(yīng)地理信息系統(tǒng)數(shù)據(jù)的需求發(fā)展起來的Oracle spatial是一個管理模塊,這個模塊是甲骨文公司提供的,用來管理空間數(shù)據(jù),它是Oracle數(shù)據(jù)庫強(qiáng)大的核心功能,提供了一系列快速查詢和檢索空間數(shù)據(jù)的功能。它由幾何數(shù)據(jù)類型、空間索引機(jī)制、操作函數(shù)和管理工具組成。與傳統(tǒng)的空間數(shù)據(jù)庫功能一樣,可以查詢、存儲、管理數(shù)據(jù)??梢源鎯蜋z索簡單的點(diǎn)、線和面空間元素。Oracle spatial是一個引入了對象-關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫,因此它是一個關(guān)系型空間數(shù)據(jù)庫。在給定的應(yīng)用領(lǐng)域中,實(shí)體和實(shí)體之間的連接集構(gòu)成關(guān)系數(shù)據(jù)庫。關(guān)系,就是一個表,因此空間數(shù)據(jù)就可以存儲在關(guān)系表中,每個表格都包含了行和列,其中,列用來表示數(shù)據(jù)種類,行用來表示數(shù)據(jù)實(shí)體。因此,在創(chuàng)建一個關(guān)系型空間數(shù)據(jù)庫時(shí),可以進(jìn)一步約束行和列。Oracle spatial定義了一種字段類型SDO-GEOMETRY(可以自定義),也可以單獨(dú)存儲在表中的某一列中。因此,Oracle spatial在管理空間數(shù)據(jù)時(shí)可以依賴屬性字段,空間屬性字段可以作為空間表區(qū)別于其他表的標(biāo)志。同一層的空間對象存儲在同一個關(guān)系表中,空間數(shù)據(jù)和屬性數(shù)據(jù)可以同時(shí)存儲,實(shí)現(xiàn)了一體化存儲。
在查詢方面,Oracle spatial的查詢性能優(yōu)異,因?yàn)镺racle spatial的空間數(shù)據(jù)庫引擎中具有空間索引功能,這極大地提高了用戶對于某個問題的查詢效率??臻g索引用于提高空間數(shù)據(jù)的查詢效率,可以看成是普通樹查詢的演化。在建立空間數(shù)據(jù)庫的索引時(shí),Oracle spatial提供了兩種選擇,用戶可以根據(jù)自己的需要選擇索引方案,這些方案基于線性四叉樹和參照樹。如果使用四叉樹索引來查詢空間數(shù)據(jù),當(dāng)空間對象分布不均勻時(shí),會因?yàn)椴痪舛沟貌樵兊乃俣茸兟?,因此,通常選擇基于參照樹的索引方案。空間索引的建立,一般在外部建立好了關(guān)系表后就可以建立了。Oracle是可擴(kuò)展的,Oracle spatial是利用Oracle的可擴(kuò)展性,將查詢處理的接口和空間索引的創(chuàng)建與引擎緊密結(jié)合在一起。
無論是矢量數(shù)據(jù)還是柵格數(shù)據(jù),Oracle spatial都能存儲。矢量數(shù)據(jù)包括點(diǎn)、線串、多邊形、弧段、弧段多邊形、復(fù)合多邊形、圓形等。以控制點(diǎn)數(shù)據(jù)存儲為例,首先建立一個表,用來存儲控制點(diǎn)數(shù)據(jù),向此表中添加空間數(shù)據(jù)。最后,將控制點(diǎn)數(shù)據(jù)依次就行入庫,入庫時(shí)可以使用第三方工具。
Oracle spatial為空間查詢和空間分析提供了一系列功能。因?yàn)?,雖然添加空間數(shù)據(jù)庫引擎使得數(shù)據(jù)管理的效率大大提高。但是,當(dāng)數(shù)據(jù)量特別大的時(shí)候,就必須依賴空間索引來查詢空間數(shù)據(jù)。而依賴索引的函數(shù)可以快速縮小計(jì)算的范圍,然后通過空間分析函數(shù)計(jì)算出想要的結(jié)果。
作為Oracle數(shù)據(jù)庫的一個組成部件,Oracle spatial可以執(zhí)行操作,例如索引、存儲和分析Oracle數(shù)據(jù)庫中的空間數(shù)據(jù)。在管理空間數(shù)據(jù)時(shí),Oracle spatial依賴于元數(shù)據(jù)表,空間屬性字段和空間索引,并在此基礎(chǔ)上提供了一些函數(shù),這些函數(shù)具有查詢和分析功能。使用Oracle spatial來管理空間數(shù)據(jù),這些被管理的數(shù)據(jù)更容易實(shí)現(xiàn)共享,具有低成本、低風(fēng)險(xiǎn)的優(yōu)點(diǎn)。在使用方面,操作起來特別簡單,與標(biāo)準(zhǔn)SQL操作類似。這樣可以統(tǒng)一管理空間數(shù)據(jù)和屬性數(shù)據(jù),為空間數(shù)據(jù)的管理帶來了極大的便利。
PostGIS是一個強(qiáng)大的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它由加利福尼亞大學(xué)伯克利分校領(lǐng)導(dǎo)開發(fā),功能強(qiáng)大,特性豐富并且性能穩(wěn)定。PostgreSQL具備一些空間功能:定義了一些基本的集合實(shí)體類型,對于幾何類型的操作和運(yùn)算定義了一些函數(shù)和操作符,并引入了空間數(shù)據(jù)索引。然而,PostgreSQL缺乏復(fù)雜的空間類型,不能提供空間分析功能,也不能提供投影變換等功能,因此提供的空間特性還不能達(dá)到要求。這些問題導(dǎo)致產(chǎn)品復(fù)雜、性能低下,PostGIS所添加的存儲管理空間數(shù)據(jù)的能力是PostgreSQL所不具備的,可以說PostGIS是PostgreSQL的擴(kuò)展,可以執(zhí)行空間索引并提供空間操作功能。PostgreSQL缺乏復(fù)雜的空間類型,無法提供空間分析和投影變換等功能。
開發(fā)PostGIS的公司最開始研究PostgreSQL的空間數(shù)據(jù)庫。但是,PostgreSQL的功能是有限的,所提供的空間數(shù)據(jù)類型、空間數(shù)據(jù)功能遠(yuǎn)遠(yuǎn)不能滿足地理信息系統(tǒng)的技術(shù)需求。也就是PostgreSQL的這些缺陷與不足,促使了Post-GIS的產(chǎn)生。簡而言之,PostGIS增加了對PostgreSQL數(shù)據(jù)庫管理系統(tǒng)升級到空間數(shù)據(jù)庫的一些功能的支持。PostgreSQL有著自由和開放的源代碼,因?yàn)镻ostGIS是建立在PostgreSQL之上的,所以自動繼承了PostgreSQL的開放性源代碼標(biāo)準(zhǔn)。PostGIS這樣一個插件,讓PostgreSQL不斷地發(fā)展壯大,變成了一個強(qiáng)大的空間數(shù)據(jù)庫,讓PostgreSQL具有了地理信息系統(tǒng)特有的函數(shù)。
無論是什么類型的空間數(shù)據(jù),PostGIS都支持,幾乎包含了所有類型。例如:點(diǎn)、線、多邊形、多點(diǎn)、多線、多多邊形。也支持所有的數(shù)據(jù)存儲和構(gòu)造方法。PostGIS提供的空間分析函數(shù)有簡單的也有復(fù)雜的,例如Distance。還提供了對于元數(shù)據(jù)的支持,也提供了相應(yīng)的支持函數(shù)。PostGIS提供的空間操作符可以用于空間數(shù)據(jù)的操作,例如Union和Difference。兩個相互重疊的多邊形,通過Union的操作,形成一個新的多邊形。PostGIS提供的二元謂詞,可以用來監(jiān)測空間對象之間的空間關(guān)系,對于關(guān)系的表示,用布爾數(shù)值來表示。
除了固有的特性之外,PostGIS還有許多額外的功能。例如,可以將數(shù)據(jù)庫中的坐標(biāo)從一個坐標(biāo)系變換到另一個坐標(biāo)系中。提供的坐標(biāo)變換使得積累類型的程度計(jì)算成為可能,可以對球體的長度進(jìn)行計(jì)算。執(zhí)行所有數(shù)據(jù)操作的函數(shù)稱為集聚函數(shù),PostGIS提供了空間集聚函數(shù),比如Sum函數(shù)用來求解數(shù)據(jù)總和,Average函數(shù)用來求取某一屬性列的數(shù)據(jù)平均值,空間集聚函數(shù)不同的就是,它的操作對象是空間數(shù)據(jù)。PostGIS具有一種新的數(shù)據(jù)類型片,并且可以控制片的大小,因而可以實(shí)現(xiàn)快速的訪問,可以存儲大的柵格數(shù)據(jù)。對于圖片的存儲,也是先將要存儲的相片按照一定的像素?cái)?shù)值進(jìn)行切分,再存儲到相應(yīng)的數(shù)據(jù)庫中。
隨著技術(shù)的不斷進(jìn)步,各行業(yè)與地理信息的聯(lián)系不斷加深,在地理信息系統(tǒng)的組成中,地理空間數(shù)據(jù)是重要的組成部分。如果建立的空間數(shù)據(jù)庫在存儲和管理空間數(shù)據(jù)方面是高效率的,那么地理信息系統(tǒng)的技術(shù)便實(shí)現(xiàn)了。一般大型商業(yè)數(shù)據(jù)庫成本都很高,并且有著許多的限制性問題。PostgreSQL具有豐富的數(shù)據(jù)類型,數(shù)據(jù)安全并且開源免費(fèi),并結(jié)合了PostGIS空間數(shù)據(jù)引擎擴(kuò)展,特別適合管理地理空間數(shù)據(jù)。
MySqL由瑞典公司開發(fā),也是一個關(guān)系型空間數(shù)據(jù)庫管理系統(tǒng),是Oracle的產(chǎn)品。它在關(guān)系型空間數(shù)據(jù)庫管理系統(tǒng)中非常流行,具有體積小、速度快、總體的成本低等優(yōu)點(diǎn)。最重要的是MySQL具有開放源碼的特點(diǎn),即源代碼公開,意味著不需要用戶支付額外的費(fèi)用,這大大降低了其總體擁有成本。就是因?yàn)榫哂虚_放源碼這一特點(diǎn),任何人都可以在許可下下載并根據(jù)需要達(dá)到的目的對其進(jìn)行修改,因此MySQL特別受開發(fā)人員的歡迎,很多開發(fā)人員都選擇了MySQL作為網(wǎng)站的數(shù)據(jù)庫。MySQL支持多種操作系統(tǒng),可以用多種編程語言進(jìn)行系統(tǒng)的編寫,例如C語言、C++語言、Java等,同時(shí)使用多種編譯器進(jìn)行測試,保證了源代碼的可移植性,即所編寫的代碼可以在多個系統(tǒng)中運(yùn)行。因此,用戶可以選擇已編程的客戶機(jī)程序,或根據(jù)自己的需要編寫自己的客戶端程序。
MySQL具有三種應(yīng)用架構(gòu),分別為單點(diǎn)(Single)、復(fù)制(Replication)和集群(Cluster)。其中,單點(diǎn)架構(gòu)適合小規(guī)模應(yīng)用,復(fù)制架構(gòu)適合中小規(guī)模應(yīng)用,集群架構(gòu)適合大規(guī)模應(yīng)用。
對于數(shù)據(jù)的存儲,因關(guān)系數(shù)據(jù)是存儲在表中的,而不是同時(shí)存儲在一起。這樣的存儲方式,靈活性很強(qiáng),同時(shí)也提高了速度。MySqL還使用了結(jié)構(gòu)化查詢語言SQL,以這種最常用的語言訪問數(shù)據(jù)庫。
如果要將MySQL與其他關(guān)系型空間數(shù)據(jù)庫進(jìn)行比較的話,首先考慮的應(yīng)該是相對來說比較重要的性能、特性、認(rèn)證條件和約束條件、價(jià)格等等方面。MySQL對于大多數(shù)的個人用戶來說是免費(fèi)的,簡單易用,性能很高的同時(shí)相對簡單,與其他的更大的系統(tǒng)比較起來,MySQL的復(fù)雜程度較低。在性能方面,多個用戶可以同時(shí)使用同一個數(shù)據(jù)庫,一個服務(wù)器可以承載許多個客戶端。MySQL的運(yùn)行速度更是優(yōu)于其他數(shù)據(jù)庫。
除了體積小、速度快、總體擁有成本低之外,MySQL還有很多其他的優(yōu)點(diǎn)。完全的多線程編程是MySQL的關(guān)鍵所在,使用戶操作起來特別靈活。支持大型數(shù)據(jù)庫,可以運(yùn)行大量記錄。MySQL作為一個開源代碼的數(shù)據(jù)庫,在實(shí)際的工作中,可以根據(jù)不同的應(yīng)用進(jìn)行相應(yīng)的更改。具有強(qiáng)大的空間查詢功能,MySQL支持查詢的運(yùn)算符和函數(shù),并且可以在同一查詢中混用來自不同數(shù)據(jù)庫的表,從而使查詢變得快捷和方便。與Oracle相比,MySQL屬于中小型數(shù)據(jù)庫,市場占有率沒有Oracle高,但是在價(jià)格方面,MySQL的價(jià)格要優(yōu)惠于Oracle。
對于以上三種數(shù)據(jù)庫的簡單比較,可以知道,Oracle spatial適用于大型企業(yè),而MySQL和PostGIS適用于中小型企業(yè)。PostGIS最大的特點(diǎn)就是其源代碼公開,降低了用戶的使用成本。MySQL是完全免費(fèi)的。所以,在管理數(shù)據(jù)時(shí),用戶應(yīng)根據(jù)自己的需要進(jìn)行選擇,可以根據(jù)自己要達(dá)到的目的入手,揚(yáng)長避短。不同的數(shù)據(jù)庫有著各自的特點(diǎn),沒有絕對的優(yōu)勢和劣勢。要相信,隨著技術(shù)的不斷進(jìn)步和提高,不同的數(shù)據(jù)庫在管理和查詢方面一定會不斷完善,向著更加高級的方向發(fā)展。