天天看點

《ArcGIS Engine 地理資訊系統開發從入門到精通(第二版)》——6.5 Geodatabase對象模型

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

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

6.5.1 geodatabase中的主要類

geodatabase中的主要類可以分為工作區部分和資料集部分,這兩部分包含了geodatabase中最基礎、最主要的類。工作區部分主要負責對geodatabase中的各種資料源進行宏觀管理,而資料集部分主要是用于對資料庫中各種具體的資料進行描述和管理。

(1)workspacefactory類。

該類用于生成workspace,該類允許使用者通過事先指定的連接配接屬性連接配接一個workspace,這些連接配接屬性一般使用propertyset對象定義,并且可以存放在一個連接配接檔案中。workspacefactory是一個可建立的對象,具有一個連接配接池,該連接配接池存放了與目前應用連接配接、處于激活狀态的workspace。該類還提供了浏覽、管理基于檔案系統的workspace的方法,同時還提供了管理遠端資料庫中的資料的功能。

該類實作了iworkspacefactory 和iworkspacefactory2兩個接口,提供了用于建立、打開workspace和擷取一個workspacefactory的屬性的方法。該類還派生arcinfoworkspacefactory、cadworkspacefactory、imsworkspacefactory、shapefileworkspacefactory、sdeworkspacefactory和accessworkspacefactory等。

iworkspacefactory接口提供了建立和打開workspace的方法,同時提供了擷取workspace的相關屬性資訊的方法。該接口提供了10個方法和兩個屬性。如copy方法,用于将一個workspace 複制到指定的目錄;getworkspacename方法,用于獲得一個具有指定檔案名清單對應的workspace的名稱;move方法,用于将一個workspace移到指定的檔案夾下;open方法,用于打開一個具有指定連接配接屬性的workspace,這個方法用于打開arcsde資料庫;openfromfile方法,用于根據指定的檔案名或者目錄打開一個workspace,這個方法通常用于打開檔案系統工作區或本地資料庫工作區,也可以根據連接配接屬性檔案打開sde資料庫工作區。

iworkspacefactory2接口的作用和iworkspacefactory接口基本一緻,隻是這個接口另外提供了直接根據一個描述連接配接屬性的字元串來打開一個workspace的方法openfromstring。

(2)workspace類。

workspace是一個用于存放空間資料和非空間資料的容器,可以存放featuredatasets、raster datasets和tables等各種資料。一個workspace 就是一個資料集集合,該類提供了列舉、添加、删除、複制和更改它所包含的資料集的方法,還提供了建立資料集的方法。根據枚舉esriworkspacetype,workspace可以分為esrifilesystemworkspace(檔案系統工作區)、esrilocaldatabaseworkspace(本地資料庫工作區)、esriremotedatabaseworkspace(分布式遠端資料庫工作區)等。shapefiles和arcinfo workspaces就是檔案系統工作區類型的workspace。該類實作了iworkspace、iworkspace2、iworkspacedomains2等衆多接口。

一個workspace可以被看做是檔案系統中的目錄,也可以被看做一個關系資料庫。在通路一個workspace中的資料庫之前,使用者首先必須打開這個workspace。使用者不能直接建立一個workspace,一般是由workspacefactory生成。

iworkspace接口提供了擷取workspace各種資訊的方法,該接口提供了3個方法和6個屬性。如exists用于判斷目前workspace是否存在,isdirectoy用于判斷目前workspace是否是檔案系統下的一個目錄,workspacefactory用于擷取目前workspace對應的workspacefactory。

(3)featuredataset元件類。

featuredataset元件類是一個用來存儲具有與該featuredataset同空間參考的多個feature class的資料集。featuredataset還可以存儲geometric network和relationship class。該類實作了ifeaturedataset接口,該接口提供繼承idataset接口。ifeaturedataset提供了在一個dataset中建立一個新的feature class的功能,共有7個方法和9個屬性,如createfeatureclass方法用于建立一個新的feature class。

6.5.2 geodatabase中的其他常用類

geodatabase的omd中還提供了一些常用類,如與空間資料入庫相關的類、與查詢相關的類。

空間入庫相關類還同時實作了各種資料格式的轉換,如featuredataconverter、fieldchecker、enumfielderror等。其中featuredataconverter類是最核心的類,所有的資料導入功能都是通過這個類實作的。featuredataconverter類主要用于實作類似arccatalog的功能;fieldchecker類用于對屬性字段進行有效性判定;enumfielderror類是一個枚舉,用來記錄所有資料轉換失敗的無效字段的名稱。

featuredataconverter類實作了ifeaturedataconverter和ifeaturedataconverter2兩個接口。ifeaturedataconverter接口用于對不同格式的資料進行互相轉換,提供了3個方法,如convertfeature class用于将featureclass導入到資料庫中,convertfeaturedataset用于将要素資料集導入到資料庫中,converttable用于将一個表格資料導入到資料庫中。ifeaturedataconverter2接口在功能上基本與ifeaturedataconverter接口一緻。

fieldchecker 類實作了ifieldchecker接口,用于對屬性字段進行有效性判定,如validate方法用于檢查一系列屬性字段的有效性。