天天看點

《ArcGIS Engine 地理資訊系統開發從入門到精通(第二版)》——6.2 空間資料庫及組織

本節書摘來自異步社群《arcgis engine 地理資訊系統開發從入門到精通(第二版)》一書中的第6章,第6.2節,作者: 邱洪鋼 , 張青蓮 , 熊友誼 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

arcgis engine 地理資訊系統開發從入門到精通(第二版)

空間資料庫系統是描述、存儲和處理空間資料及其屬性資料的資料庫系統。空間資料庫是随着地理資訊系統的開發和應用而發展起來的資料庫新技術。目前,空間資料庫系統尚不是獨立存在的系統,它與應用緊密結合,大多數是作為地理資訊系統的基礎和核心的形式出現。由于空間資料的複雜性和特殊性,一般的商用資料庫管理系統難以滿足要求。因而,圍繞空間資料管理方法,出現了幾種不同的組織方式。目前空間資料庫的組織方式主要有兩種:混合型空間資料庫和內建型空間資料庫,它們的差別在于是否對空間資料和屬性資料進行一體化組織。

6.2.1 混合型空間資料庫

目前大多數的地理資訊開發平台就是采用混合結構型結構,即非空間資料存儲在關系資料庫中,空間資料存放在系統檔案中。在空間資料庫技術領域,比較有名的是mapinfo 公司和esri公司,其中的許多産品都是采用混合型的空間資料庫,如商用系統mapinfo系列,esri的arcview、arcinfo系列等。這些産品分别使用不同的子產品存儲空間資料和屬性資料。其空間資料在垂直方向上是分層進行組織的,空間資料在水準方向上是按圖幅組織的。不同的是:mapinfo公司設計的産品中每一個圖層由5個檔案組成,而esri公司設計的産品中每一個圖層隻由3個檔案組成。

這種混合管理的模式(即用檔案系統管理幾何圖形資料,用商用關系資料庫管理系統管理屬性資料),它們之間是通過目标辨別或者内部連接配接碼進行連接配接。在這種管理模式中,幾何圖形資料與屬性資料除了它們的objectid作為連接配接關鍵字段以外,兩者幾乎是獨立地組織、管理與檢索。就幾何圖形而言,由于gis系統采用進階語言程式設計,可以直接操縱資料檔案,是以圖形使用者界面與圖形檔案處理是一體的,中間沒有裂縫。但對屬性資料來說,則因系統和曆史發展而異。早期系統中的屬性資料必須通過關系資料庫管理系統,圖形處理的使用者界面和屬性的使用者界面是分開的,它們隻是通過一個内部碼連接配接,導緻這種連接配接方式的主要原因是早期的資料庫管理系統不提供程式設計的進階語言,如fortran或c的接口,而隻能采用資料庫操縱語言。這樣通常要同時啟動兩個系統(gis圖形系統和關系資料庫管理系統),甚至兩個系統來回切換,使用起來很不友善。

最近幾年,随着資料庫技術的發展,越來越多的資料庫管理系統提供有進階程式設計語言c和 fortran等接口,使得地理資訊系統可以在c語言的環境下直接操縱屬性資料,并通過c語言的對話框和清單框顯示屬性資料,或通過對話框輸入sql語句,并将該語句通過c語言與資料庫的接口查詢屬性資料庫,在gis的使用者界面下顯示查詢結果。對于這種工作模式,并不需要啟動一個完整的資料庫管理系統,使用者甚至不知道何時調用了關系資料庫管理系統,圖形資料和屬性資料的查詢與維護完全在一個界面之下。在odbc(開放性資料庫連接配接協定)推出之前,每個資料庫廠商提供一套自己的與進階語言的接口程式,這樣gis軟體商就要針對每個資料庫開發一套與gis的接口程式,是以往往在資料庫的使用上會受到限制。

在推出了odbc之後,gis軟體商隻要開發gis與odbc的接口軟體,就可以将屬性資料與任何一個支援odbc協定的關系資料庫管理系統連接配接。無論是通過c,還是通過 odbc與關系資料庫連接配接,gis使用者都是在一個界面下處理圖形和屬性資料,它比前面分開的界面要友善得多。但這種采用檔案與關系資料庫管理系統的混合管理模式,還不能說建立了真正意義上的空間資料庫管理系統,因為檔案管理系統的功能較弱,特别是在資料的安全性、一緻性、完整性、并發控制以及資料損壞後的恢複等方面缺少基本的功能。多使用者操作的并發控制比起商用資料庫管理系統來要遜色得多,因而gis軟體商一直在尋找采用商用資料庫管理系統來同時管理圖形和屬性資料。

檔案系統結構簡單,在資料存取過程中幾乎沒有額外開銷,并且可以按照使用者的需求任意定制資料存儲格式或存儲複雜資料結構。但其缺點也很明顯,即資料備援度大、難以共享資料、容易造成資料的不一緻性、程式與資料缺乏獨立性、系統不易擴充。

這些産品雖然在功能上達到了空間資訊處理的要求,但由于沒有從dbms 的核心部分,即資料結構部分來考慮空間資訊的特殊性,是以處理的效率受到了很大的限制。

6.2.2 內建型空間資料庫

近來國外提出的一種內建型結構,是将所有的資料都存儲于一個資料庫中。由于其采用的資料庫原型不同,是以內建性空間資料庫的類型也大不相同。

(1)全關系型資料庫模型。

全關系型空間資料庫管理系統是指圖形和屬性資料都用現有的關系資料庫管理系統管理。關系資料庫管理系統的軟體廠商不作任何擴充,由gis軟體商在此基礎上進行開發,使之不僅能管理結構化的屬性資料,而且能管理非結構化的圖形資料。其設計思想是把構成空間對象的每個基本元素(點、線段)對作為一行記錄存入表中,通過關系模型來維護其空間屬性的内部結構以及空間對象之間的拓撲關系。

用關系資料庫管理系統管理圖形資料的模式有兩種,一種是基于關系模型的方式,圖形資料按照關系資料模型組織。這種組織方式由于涉及一系列關系連接配接運算,相當費時,是以在處理空間目标方面效率不高。另一種方式是将圖形資料的變長部分處理成binary二進制塊 block字段。目前大部分關系資料庫管理系統都提供了二進制塊的字段域,以便管理多媒體資料或可變長文本字元。gis利用這種功能,通常把圖形的坐标資料,當做一個二進制塊,交由關系資料庫管理系統存儲和管理。這種存儲方式雖然省去了前面所述的大量關系連接配接操作,但是二進制塊的讀寫效率要比定長的屬性字段慢得多,特别是涉及對象的嵌套時,速度則更慢。

關系型資料庫(rdb)有強大的關系理論支援,無疑是資料庫産品中最成熟的。由于它是基于幾種簡單的基本類型和簡單的二維表,是以它能完成非常複雜的關系操作,并能得到幾乎任何期望的資訊組合。它的優點也是很明顯的,第一,實體資料存儲與邏輯資料庫結構的獨立性;第二,多樣、簡易的資料通路能力,進而提供了高效資料通路的可能性;第三,相當靈活的資料庫設計;第四,資料存儲和備援的減少。

采用關系資料庫來管理地理資訊是 gis與資料庫結合的初步嘗試,但其中存在兩個難題:首先,難以在關系資料庫中存儲空間資料,為了存儲和表示結構複雜多變的空間資料,需要設計複雜的 e-r模型,并在資料庫中存放大量的表,這樣會增大系統的複雜性,而且還無法利用資料庫提供的索引機制;其次,難以保持地理資訊的資料一緻性,由于地理資訊的空間資料和屬性資料通常不能存放在一張表裡,是以這樣會割裂邏輯上為一個整體的地理資訊,而且拓撲關系也難以維護。

由于存在上述難題,雖然關系資料庫在與gis的結合中做出了有益的嘗試,但最終還是沒能成為主流。為此,随着面向對象型資料庫(oodb)的出現與發展,人們提出了面向對象型資料庫與gis相結合的方案。

(2)面向對象資料庫。

面向對象模型最适于空間資料的表達和管理,它不僅支援變長記錄,而且支援對象的嵌套、資訊的繼承與聚集。面向對象的空間資料庫管理系統允許使用者定義對象和對象的資料結構以及它的操作。這樣,我們就可以将空間對象根據 gis的需要,定義出合适的資料結構和一組操作。這種空間資料結構可以是不帶拓撲關系的面條資料結構,也可以是拓撲資料結構,當采用拓撲資料結構時,往往會涉及對象的嵌套、對象的連接配接和對象與資訊的聚集。

雖然面向對象資料庫屏蔽了原有的關系理論,具有完全面向對象的特征,具有很強的理論優勢,但其商業化産品則側重于程式設計語言對複雜資料的通路,同時還存在查詢表達能力不強、查詢效率比較低的問題。而且由于其中的許多技術細節還不夠成熟,是以目前oodb還難以用于與地理資訊系統應用相關的領域。

(3)對象—關系模型資料庫。

對象—關系模型資料庫(ordb)是面向對象思想與資料庫管理系統相結合的一個折中産物,它與oodb的差別在于,它沒有抛棄關系理論,而是在關系模型的基礎上,進一步支援了面向對象思想。這樣不但繼承了關系模型的優良特性,并相容了原有的使用關系資料庫的軟體系統;而且提供了支援面向對象的類型與接口,也滿足了面向對象軟體系統的要求。不論在科學研究中,還是在實際應用中,它都占有重要的地位,是目前資料管理技術的中流砥柱。ordb在與 gis結合的過程中,具有如下明顯的優勢:① 支援基本類型擴充;② 支援複雜對象;③ 支援繼承;④ 支援規則。這樣,通過對對象存儲通路的支援,不僅解決了關系型資料庫所面臨的難題,同時通過相容關系資料庫系統,保證了對現有運作系統更新的可能性。而最為重要的是,ordb已經擁有比較成熟的商業化産品,這為它與 gis的結合打下了良好的基礎。

對象—關系模型把關系理論與面向對象思想有機結合,不但繼承了關系系統優良的特性,還提供使用面向對象方法模組化的能力,滿足了使用者對資料庫表達能力的要求。

① 空間擴充模型。

此方案是基于對象—關系模型資料庫而建立的。它通過建立一個空間對象表達模型,把空間資料和屬性資料存儲統一在dbms之下,進而把gis的資料管理部分的功能統一到dbms之中,由dbms完成資料層功能。其模型的重點在資料庫上,希望通過增強資料庫的空間功能而從根本上解決問題。這種擴充的空間對象管理子產品,主要解決了空間資料變長記錄的管理。由于由資料庫軟體商進行擴充,是以效率要比前面所述的二進制塊的管理高得多。空間擴充模型展現出了兩個優勢:一是由資料庫廠商支援的資料分析操作可以得到資料庫系統内部優化機制的支援,因而效率較高。二是該模型在dbms層為通路空間對象提供了統一的接口,也友善了系統從rdb到ordb的移植。

但是,它還存在着技術不成熟的問題,如它仍然沒有解決對象的嵌套問題,空間資料結構也不能由使用者任意定義,不能提供對象—關系系統應具有的所有功能。同時空間擴充模型是資料庫廠商提供的解決方案,它希望通過增強資料庫的空間功能來從根本上解決問題。由于該方案是由資料庫廠商開發的,是以能夠比較充分地利用底層資料庫,進而達到比較好的性能。但是,資料庫的空間擴充畢竟是資料庫系統的附屬産品,它不但繼承了底層資料庫的優勢,也受到底層資料庫的制約。例如,隻有幾個大的資料庫廠商提供對空間擴充模型的支援,而這些資料庫産品又隻能應用于比較大的應用系統中,這樣空間擴充模型也就難以投入到中小應用中去。是以這種模型的使用仍然受到了一定程度的限制。

② 基于中間件的資料庫模型。

此方案也是基于對象—關系模型資料庫而建立的,其本質就是在資料庫和最終使用者之間增加中間件,通過中間件層實作從空間對象模型到資料庫存儲的映射,進而避免了對dbms核心的直接修改,以消除資料庫和最終使用者間接口的差異,這樣一方面能充分利用資料庫提供的功能,另一方面也能滿足使用者最終的需求。這種模型的典型例子是esri的arcsde。

中間件的主要任務就是分析并執行空間對象通路指令,為gis 應用提供一個一緻且穩定的接口。基于中間件的資料庫模型一般包括使用者、中間件、資料存儲層等3個層次。其中,使用者使用地理資訊,資料存儲層負責存儲地理資訊,而中間件則負責使用者與資料庫之間的資料通路管理。對上層(gis應用及sdss應用)的接口,提供完整的空間對象管理功能,統一管理空間屬性和使用者屬性。對下層(資料庫)的接口,則将空間屬性與使用者屬性分開管理,空間屬性的管理功能由中間件和dbms共同實作,使用者屬性的管理功能則由dbms直接實作。由于支援面向對象方法,是以中間件為空間對象提供了統一的通路接口,同時中間件可以實作dbms不能完成但效率不高的部分。

基于中間件的資料庫模型則是gis廠商提供的解決方案,它希望通過提供靈活友善的接口來适應多變的應用需求,即通過設計中間件來封裝資料管理部分,以提供對多種類型資料源的支援。這雖然降低了gis應用開發的複雜度,但是,增加中間件也勢必在空間資料存取中增加了額外開銷,進而影響系統的整體效率,另外,構造并維護中間件的人力物力投入也不容忽視。與空間擴充模型相比,中間件模型是一種以性能換功能的方法,但它在目前的應用中卻又是相當有效的。其特點也是很明顯的,主要表現在以下幾個方面。

gis 應用接口穩定,使得基于它的gis 應用也具有較強的穩定性。

易于裁剪,采用構件方式實作可以進行多層次的裁剪,以取得良好的性能/功能比。

資料庫接口統一,不依賴于特定的資料庫産品。

易于擴充,可以針對效率問題在中間件層提供一定的優化,如智能cache 技術、空間索引過濾和查詢優化,可以針對領域應用擴充功能,比如為了滿足空間資料庫在sdss 中的特殊要求,還可以在中間件層添加輔助空間資料挖掘的調用子產品和支援空間知識庫系統的調用子產品等。

從本質上看,基于中間件的資料庫模型和空間擴充模型的目的都是一樣的,即都要為 gis應用提供友善高效的服務,都要提供一個空間對象的統一通路接口。而它們的差別在于,基于中間件的資料庫模型是對應用需求的直接響應,也是空間擴充模型的基礎,而空間擴充模型則是基于中間件的資料庫模型的總結與改進。相比之下,由于基于中間件的資料庫模型具有靈活的結構,是以它不但在研究方面很有潛力,而且可以友善地實驗各種資料管理技術。