地信專業知識
GIS數據模型之綜合探討 摘 要: 隨著時代的發展,GIS作為一種技術已經廣泛應用于各行各業中,相應的不同類型的GIS軟件也應運而生,因而形成了不同的GIS空間數據模型。本文主要介紹了當前社會中常用的幾種GIS空間數據模型的模型結構、模型內容以及相關應用等。 關鍵詞: 地理相關模型 地理數據庫 GIS數據模型 一個良好的數據模型是一個工程、軟件乃至系統的精神骨架,數據模型的優略與否直接關系到GIS的成功與否。目前,隨著GIS的迅猛發展,國內外出現了不少的GIS軟件,其中比較有代表性的包括ArcGIS軟件、GeoMedia軟件、GeoStar軟件、MapGIS軟件、Oracle軟件以及MapStore軟件。下面我們將對各個軟件中的數據模型進行逐一分析評價。 (一)Arc/Info數據模型 ARC/INFO是ESRI開發的GIS軟件。該軟件以數字形式來管理,分析和顯示空間數據,用戶可使用Arc/Info建立空間數據庫和進行地理分析。 ARC/INFO采用一種混合數據模型來統一定義空間數據庫模型和管理地理空間數據,支持空間實體的矢量表示和柵格表示。位置數據用矢量和柵格數據表示, 屬性數據存儲在一組數據庫表格中/空間與屬性統一存儲在表格中,通過空間和屬性數據的連接實現對空間數據的查詢,分析和制圖輸出.Arc/Info的數據模型支持六種重要的數據結構:(1)Coverage表示矢量數據;(2)GRID表示柵格數據;(3)TIN適合于表達連續表面;(4)屬性表;(5)影像用作地理特征的描述性數據;(6)CAD圖像用作地理特征的描述性數據。 在Arc/Info中, “Arc“是指用于定義地物空間位置和關系的拓撲數據結構, “Info“是指用于定義地物屬性的表格數據(關系數據)結構。也就是說,屬性數據存儲在關系數據庫中,空間位置數據存儲在文件夾中,通過空間數據和屬性數據的連接實現對空間數據的查詢、分析和圖形顯示。 Arc/Info把地理空間要素抽象為點(定義為空間的一套XY或XYZ坐標)、線(定義為一系列有順序的空間點)、面(定義為由一組或多組線圍成的多邊形)、結點(定義為線的起點或終點,結點是一復雜的特征,不能單獨存在,通過檢查結點類型可以知道線與線的連接關系和多邊形特征是否能正確完成)和注記。 除此之外,還有其它地理要素,如區劃(Region)(定義為一組相互不重疊的多邊形,用于描述具有相同屬性單元的不連續多邊形。如行政區劃上的群島,地籍上的飛地)、事件(Event)(定義為基于基本線特征基礎上離起點或終點一定距離的一點。如要找高速公路上200公里處的事故點不需直接求出這一點的坐標,同時對線路或事件點修改不會造成不一致問題)、路徑(Route)(定義為基于基本線特征基礎上的路由。如在道路網上劃分出的公共汽車線路,不同的公共汽車線路公用部分道路時不用重復輸入線特征。路徑的起點或終點可不與線特征起始點或終點重合,可定義為線路上離起點或終點一定距離的點,這樣就不用斷開線特征)。Arc/Info數據模型包括地理相關模型(GeoRelationalmodel, Coverage)和地理數據庫(GeoDatabase)兩種。 1,地理相關模型(Coverage) Arc/Info7.X以前版本以Coverage作為矢量數據的基本存儲單元。一個Coverage存儲指定區域內地理要素的位置、拓撲關系及其專題屬性。每個Coverage一般只描述一種類型的地理要素(一個專題Theme)。位置信息用X,Y表示,相互關系用拓撲結構表示,屬性信息用二維關系表存儲。地理相關模型強調空間要素的拓撲關系。 Coverage的數據組織主要有以下幾項組成: (1) 標示點 位置數據:Cover#,Cover_ID,和X,Y,存儲在LAB文件中。 屬性數據:存儲在PAT文件中,包含四個基本數據項Area,Perimeter,cover#和Cover-ID。 (2) 結點 位置數據:不明顯地存儲,而是作為弧段的起始結點和終止結點存儲在ARC文件中。Cover#,Cover_ID。 屬性數據:存儲在結點屬性表NAT中,它包含3個標準數據項。ARC#, Cover#, Cover_ID。 (3) 弧段 位置數據:Cover#,Cover-ID,FNODE#,TNODE#,LPOLY#,RPOLY#,坐標串,存儲在ARC文件中。 屬性數據:存儲在結點屬性表AAT中,它包含7個標準數據項。Cover#,Cover-ID,FNODE#,TNODE#,LPOLY#,RPOLY#,LENGTH。 (4) 多邊形 位置數據:由一組弧段和位于多邊形內的一個標示點來定義。它不直接存儲坐標信息,坐標信息存儲在ARC和LAB文件中。Cover#,Cover_ID,Lab#,Arc#1,Arc#2,…Arc#n。 屬性數據:存儲在結點屬性表AAT中,它包含7個標準數據項。Cover#,Cover_ID,FNODE#,TNODE#,LPOLY#,RPOLY#,LENGTH。 (5) 控制點 存儲于tic文件中。 (6) 覆蓋范圍 存儲于bnd文件中。 Coverage的特點: (1) 空間數據與屬性數據關聯:空間數據放在建立了索引的二進制文件中,屬性數據則放在DBMS表(TABLES)里面,二者以公共的標識編碼關聯。 (2) 矢量數據間的拓撲關系得以保存:由此拓撲關系信息,我們可以得知多邊形是哪些弧段(線)組成,弧段(線)由哪些點組成,兩條弧段(線)是否相連以及一條弧段(線)的左或右多邊形是誰?這就是通常所說的“平面拓撲”。 Coverage在具備以上特點的同時也出現了一些的缺陷: (1) Coverage模型某些可取的方面已經可以不再繼續作為強調的因素,拓撲關系的建立可以由面向對象技術解決(記錄在對象中);硬件的發展,不再將存儲空間的節省與否作為考慮問題的重心;計算機運算能力的提高,已經可以實時地通過計算直接獲得分析結果。 (2) 空間數據不能很好地與其行為相對應。 (3) 以文件方式保存空間數據,而將屬性數據放在另外的DBMS系統中。這種方式對于日益趨向企業級和社會級的GIS應用而言,已很難適應(如海量數據,并發等)。 (4) Coverage模型拓撲結構不夠靈活,局部的變動必須對全局的拓撲關系重新建立(Build),“牽一發而動全身”,且費時。 (5) 在不同的Coverage之間無法建立拓撲關系,河流與國界人井與管道等。 2,地理數據庫(GeoDatabase) GeoDataBase在實現上使用了標準的關系——對象數據庫技術,它支持一套完整地拓撲特征集,提供了大型數據庫系統在數據管理方面的所有優勢(如數據的一致性,連續的空間數據集合,多用戶并發操作等)。Geodatabase用更先進的幾何特征(例如三維坐標和Beizer曲線),復雜網絡,特征類的關系,平面幾何拓撲和別的對象組織模式擴展了Coverage和Shape文件模型,使得空間數據對象及其相互間的關系、使用和連接規則等均可以方便地表示、存儲、管理和擴展。引入這種新的數據模型的目的在于讓用戶可以通過在他的數據中加入其應用領域的方法或行為以及其他任意的關系和規則,使數據更具智能和面向應用領域。 Geodatabase模型結構: (1) 要素類(Feature class) 同類空間要素的集合即為要素類,如河流、道路、電纜等。 (2) 要素數據集(Feature dataset) 要素數據集由一組具有相同空間參考(Spatial Reference)的要素類組成。 專題歸類表示:當不同的要素類屬于同一范疇(如水系的點線面要素)。 創建幾何網絡:在同一幾何網絡中充當連接點和邊的各種要素類(如配電網絡中,有各種開關,變壓器,電纜等)。 考慮平面拓撲:共享公共幾何特征的要素類(如水系、行政區界等)。 (3) 關系類(Relationship class) 定義兩個不同的要素類或對象類之間的關聯關系。(如我們可以定義房主和房子之間的關系)。 (4) 幾何網絡(Geometric network) 幾何網絡是在若干要素類的基礎上建立的一種新的類。定義幾何網絡時,我們指定哪些要素類加入其中,同時指定其在幾何網絡中扮演什么角色。(如定義一個供水網絡,我們指定同屬一個要素數據集的“閥門”、“泵站”、“接頭”對應的要素類加入其中,并扮演“連接(junction)”的角色。同時,我們指定同屬一個要素數據集的“供水干管”、“供水支管”和“入戶管”等對應的要素類加入供水網絡,由其扮演“邊(edge)”的角色)。 (5) 域(Domains ) 定義屬性的有效取值范圍。可以是連續的變化區間,也可以是離散的取值集合。 (6) 有效規則(Validation rules) 對要素類的行為和取值加以約束的規則。(如規定不同管徑的水管要連接,必須通過一個合適的轉接頭。規定一塊地可以有一到三個主人)。 (7) 柵格數據集(Raster Datasets) 用于存放柵格數據。可以支持海量柵格數據,支持影像鑲嵌,可通過建立“金字塔”索引,并在使用時指定可視范圍提高檢索和顯示效率。 (8) TIN Datasets TIN是Arc/Info中非常經典的數據模型,是用不規則分布的采樣點的采樣值構成的不規則三角集合。它可用于表達地表形態或其它類型的空間連續分布特征。 (9) Locators 定位器是定位參考和定位方位的組合,對不同的定位參考,用不同的定位方法進行定位操作。 GeoDatabase模型是新一代的地理數據模型,是建立在DBMS之上的統一的、智能化的空間數據庫。它較之以前的數據模型更加人性化、智能化,并具有明顯的優勢: (1) 在同一數據庫中統一管理各種類型的空間數據。 (2) 空間數據的錄入和編輯更加準確。這得益于空間要素的合法性規則檢查。 (3) 空間數據更加面向實際的應用領域。不在是無意義的點、線、面,而代之以電桿、光纜和用地等。 (4) 可以表達空間數據之間的相互關系。 (5) 可以更好地制圖。對不同的空間要素,我們可定義不同的“繪制”方法,而不受限于ArcInfo等客戶端應用已經給出的工具。 (6) 空間數據的表示更為精確。除了可用折線方式以外,還可用圓弧、橢圓弧、Bezier曲線描述空間數據的空間幾何特征。 (7) 可管理連續的空間數據,無需分幅、分塊。 (8) 支持空間數據的版本管理和多用戶并發操作。 (二)ArcView數據模型 ArcView采用一種混合數據模型定義和管理地理數據,空間數據采用無拓撲關系的矢量數據,屬性數據采用關系數據庫表示。 一個Layer(圖層)只能表示一種幾何類型的空間目標。對于矢量層由三個文件組成shp文件,shx文件,dbf文件,sbn,sbx文件和ain,aih文件。Shp文件存儲無拓撲關系的幾何數據,shx包含幾何數據索引,dbf文件存儲屬性數據,sbn,sbx文件包含空間索引,ain,aih文件包含屬性索引。 (三)GeoMedia數據模型 (一)多源數據的無縫集成 直接讀取多個GIS的空間數據和屬性數據,不需要任何轉換。 (二)先進的數據庫管理方式 內嵌關系數據庫引擎,可以對Oracle,SQL Server,Access數據庫直接進行讀寫,不需要中間件。采用擴展數據模型。 (三)強大的二次開發環境 采用OLE/COM開發技術,隨產品奉送所有標準的對象和控件。 (四)數據格式標準 全部數據都有大型商業數據庫系統托管。 (四)GeoStar數據模型 GeoStar軟件由武漢測繪科技大學測繪遙感信息工程國家重點實驗室研制開發的面向對象的GIS軟件。在GeoStar中,把GIS需要的地物抽象為結點、弧段、點狀地物、線狀地物、面狀地物和無空拓撲關系的面條地物。為了便于組織和管理,對空間數據庫又設立了工程、工作區和專題層(包含相應的層和地物類)。 (1) 地物類 具有相同空間幾何特征和屬性特征的空間對象的集合。點對象、線對象、面對象均可單獨作為地物類,注記對象可以單獨作為地物類,也可混合在其它幾何類型中一起構成地物類。如河流、公路、居民地等均可作為地物類。 (2) 層 層定義在地物類之上,它是多個地物類的集合。為了操作和工作管理上的方便,將管理和使用上相關的多個地物類定義為一個層。如單線河、雙線河、湖泊等分別是地物類,在這些地物類上,我們可以定義一個水系層。 (3) 工作區 工作區是指一定區域范圍內的地物層的集合,它是GeoStar完整的數據組織單位。GeoStar的數據都存為工作區,用戶通過使用工作區來操縱空間數據。工作區中的信息包括層信息,地物類信息,各種類型的對象以及屬性數據。工作區的區域范圍可以根據實際需要來決定,可以按一個圖幅范圍定義一個工作區,可以按多個連續的圖幅范圍定義一個工作區,也可以不按圖幅范圍定義工作區。各個工作區的范圍可以重疊。 (4) 工程 工程是具有相同特征的工作區的集合,用來管理大型的空間數據。工程中的工作區數據要求具有相同的坐標和比例尺,有相同的投影方式。工作區中的地物類集合,層集合分別是工程地物類,工程層中的一部分。工程的信息由工作區提交后形成。工作區遞交后,系統對空間數據進行重新組織,并作相應的相容性檢查,對每個提交后的工作區,系統自動分配一個唯一的標識號WSID,由WSID和工作區內對象標識OID來共同標識工程中的一個對象。 (五)MapInfo數據模型 MapInfo采用雙數據庫存儲模式。其空間數據與屬性數據是分開存儲的。屬性數據存儲在關系數據庫的若干屬性表中,而空間數據則以MapInfo自定義格式保存于若干文件之中,兩者之間通過一定的索引機制聯系起來。為了提高查詢和處理效率,MapInfo采用層次結構對空間數據進行組織,即根據不同的專題將地圖分層,每個圖層存儲為若干個基本文件。表和層是MapInfo中兩個重要的概念。 1,表 MapInfo是以表的形式來組織信息的,是數據與地圖有機聯系的樞紐,分為數據表和柵格表。數據表有記錄、字段,而柵格表無記錄、字段,只是一種能在地圖窗口中顯示的圖像。 2,層 在MapInfo中,圖層是計算機地圖的構筑塊。計算機地圖實際上是多個圖層 的集合。圖層來自于含有圖形對象的數據庫表,每個含有圖形對象的數據庫表都可顯示為一個圖層。可以說,圖層就是含有圖形對象的表。文件組成為:.tab、.dat、.map、.id,也就是說圖層至少由這四個表文件組成,每個圖層存儲均為這四個基本文件。MapInfo中有兩種特殊的圖層,即裝飾圖層(Cosmetic Layer)和無縫圖層(Seamless Layer)。裝飾圖層是位于地圖窗口最上層的一個特殊圖層,它存在于MapInfo的每個地圖窗口上,可以被想像為一個位于其它地圖圖層之上的空白透明體。裝飾圖層的作用是存儲地圖的標題和在工作會話期間創建的其它地圖圖像,它具有既不能被刪除,也不能被重新排序等特點。無縫圖層是可以如同一張表一樣處理的一組基表構成的圖層。它允許用戶一次對一組表改變屬性、實施或改變標注或使用圖層控制對話框,也允許檢索或瀏覽圖層中的任何一個基表。 MapInfo采用雙數據庫存儲,屬性數據存于屬性表,空間數據存儲于Mapinfo自定義文件中,兩者通過一定的索引機制連接起來。 (六)Oracle Spatial空間數據模型 Oracle Spatial是Oracle數據庫公司的一個擴展產品,它具有專門的空間數據管理功能。Oracle Spatial基于數據庫管理系統提出了一個完全開放的空間數據管理機制,并且完全集成于數據庫服務器端。數據庫用戶可以通過SQL語句定義和操縱空間數據,同事也能訪問標準的Oracle數據庫。Oracle Spatial除了空間數據管理的特殊功能之外,具有關系數據庫管理系統Oracle的所有特性,如標準的SQL查詢、頁面緩沖、并發控制、多層結構的分布式管理、高效穩定的數據管理工具、高級語言過程調用等,并能確保數據完整性、安全性和可恢復性。Oracle Spatial提供了SQL幾何類型、空間元數據模式、空間索引以及一整套函數和過程集合,使在Oracle中對空間數據的存儲、訪問和分析更加快捷和高效。這意味著空間數據和屬性數據能在一個屋里數據庫中進行管理,因而提高了查詢效率并減少了同步異步數據處理與集成的復雜度。通過使用Oracle8i或9i擴展的索引特征,Oracle Spatial獲得了比以前版本更加的性能。Oracle先后為Spatial提供了兩種空間實體模型的支持,一個是基于關系模型的空間實體模型,一個是基于對象——關系模型的空間實體模型。而在Oracle的后續版本里將不再提供基于關系模型的空間實體模型,只有基于對象——關系的空間實體模型。因此,這里只介紹對象——關系的空間實體模型。 Oracle Spatial空間數據模型提供了三種最主要的幾何類型(點、線、面)以及由這幾種幾何類型對象組合而成的集合。這三種幾何類型又可細分為簡單點(只有一個點)、點群(多個點)、簡單線(只有一條線)、線群(多條線)、簡單面(只有一個面)、面群(多個面)。因此,Oracle Spatial一共提供了七種幾何類型,并為每種類型分配了1—7的標識。同時,在有的類型中,還劃分了更加詳細的類型,如簡單線還分為線段、三點圓弧、線段和圓弧交替連接的簡單復合線等,簡單面可分為由線段構成的面、圓、矩形、線段和圓弧交替連接的簡單復合面。 依照空間數據的幾何類型分類,Oracle Spatial利用對象關系模型,提供一種更抽象(abstract data type,ADT)、更接近人的思維模式、用戶可自定義的、可以存儲任何幾何類型的空間數據類型MDSYS.SDO_GEOMETRY。其類型定義如下: CREATE TYPE MDSYS.SDO_GEOMETRY AS OBJECT { SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY } 其中SDO_POINT_TYPE也是對象類型,其定義如下: CREATE TYPE MDSYS.SDO_POINT_TYPE AS OBJECT { X NUMBER, Y NUMBER, Z NUMBER } 下面分別解釋各子項的含義: SDO_GTYPE:幾何對象的類型標識。 SDO_SRID:幾何對象所屬空間參照的標識。 SDO_POINT:存儲點的坐標。當存儲點對象時,Oracle Spatial推薦用此子項存儲點的坐標,而后面兩項都設為NULL,這樣可以獲得更高的效率。 SDO_ELEM_INFO:數組類型,連續存儲幾何對象的坐標。 SDO_ORDINATES:數組類型,連續存儲坐標的解釋信息。解釋信息具體描述了幾何對象的形狀,解析了坐標的性質。Oracle Spatial和用戶通過此解釋信息可以知道在SDO_ELEM_INFO中存儲的各個子對象(如線段、弧段等)坐標的起始和終止位置。X,Y,Z:點的坐標。當點為二維時,Z為NULL。在Oracle Spatial中,每個空間表至少擁有一個MDSYS.SDO_GEOMETRY字段,并且空間表能擁有用戶自定義屬性,這樣也就實現了空間數據和屬性數據的統一管理。 Oracle Spatial提供了豐富的空間操作函數和過程,以完成空間分析操作、幾何對象操作、空間聚合操作、空間參照操作、線性參考操作、移植操作、調整優化等操作。例如,函數SDO_GEOM.SDO_AREA()將返回一個二維面的面積,而過程SDO_MIGRATE.FORM_815_TO_81X()將把Oracle 8.15版移植到當前版本。利用這些函數和過程,能高效的實現空間數據的管理。 同時,Oracle Spatial提供了擴展SQL語句,以提供空間查詢功能。這兩個函數分別為SDO_FILTER()和SDO_RELATE(),它們分別對應于空間查詢的粗查和精查。 (七)MapStore數據模型 數據模型是數據庫系統中關于數據和聯系的邏輯組織的形式表示。傳統數據庫的數據模型有層次模型、網絡模型和關系模型,但是傳統數據庫只能操縱和查詢文字和數字信息,不能完成空間數據的操縱和查詢,如相鄰、連通、包含、疊加等。適應空間數據庫的GIS軟件一般不是采用傳統的某一種單一的數據模型,而是采用建立在關系數據庫管理系統基礎上的綜合的數據模型,如本平臺采用的ESRI公司的GeoDatabase數據模型。 GeoDatabase是ArcInfo8引入的一個全新的、建立在關系數據庫管理系統(DBMS)上的同一的、智能化的空間數據模型。如圖7-2所示: GeoDatabase 數據集 地理數據集 表 Tin數據集 柵格數據集 要素數據集 關系類 幾何網格 對象類 屬性關系類 要素類 規則 圖層 7-1 Geodatabase采用面向對象技術將現實世界抽象為由若干對象類組成的數據模型,每個對象類有其屬性、行為和規則,對象類間又有一定的聯系。它按層次將地理數據組織成數據對象,并存儲在要素類、對象類和要素集中在GeoDatebase數據庫中,GeoDatebase是最高層次的地理數據單元,所有的數據有一個或多個GeoDatebase組成。一個GeoDatebase有多個抽象數據集組成,數據集通過集成得到4個可創建對象,即Tin數據集、柵格數據集和要素數據集和表。其中Tin數據集、柵格數據集和要素數據集又由抽象地理數據集派生而來,它們可歸納為地理空間數據。表對象相當于地理屬性數據。要素數據集是具有相同空間參考系的要素類集合,它由集合網格和對象組成。集合網格同時也稱拓撲,被綁定在一個包含有完整拓撲地理要素的圖層中。要素類還可派生為點、線和面3種要素。數據集中的另一類地理數據(屬性數據)——表通過繼承可以得到屬性關系類和對象類。屬性關系類是一張存儲要素與要素或對象與對象之間關聯的表。對象類則是用于關聯行為的表。對象類可以向下泛化為要素類,并為要素類制定了相應的約束機制——規則;對象類同時又與幾何網格組合成要素數據集,而且對象類又繼承自表,這就把地理空間數據和屬性數據聯系在一起。 結束語: 不同的GIS系統具有不同的GIS數據模型,不同的GIS數據模型在處理GIS空間對象或現象中也具有不同的方法和效率。因此,在開發GIS系統軟件時要針對處理對象的對象結構、分布特點以及后期的數據處理、分析應用、顯示等選用相應的GIS數據模型,以達到最優化的系統開發。此外,我們也可以將不同的GIS數據模型進行適當優化綜合,來解決在各自模型中出現的疑難問題,使其能夠更好的處理后期GIS問題,更全面、更合理的為社會服務!