基于ArcGIS10.0和Oracle10g的空間數據管理平臺(C#開發)-ArcGIS_Engine中的數據訪問
說明:此部分內容或資料大部分來至網上收集所得,以前放在自己電腦上,具體也不知道出處了!總結出來分享給需要的人,因為正好介紹的項目開發(如題)用到其中的一些知識。因為項目中已經支持ArcSDE、Shape和RDMBS(基于Oracle10g)之間的相互轉換,后面介紹空間數據管理有這個功能模塊,如果你想實現更多中GIS數據格式之間的相互轉換,下面的內容提供很好的一個幫助和支持。
0.介紹
數據是GIS的基礎, 訪問數據也是進行任何復雜的空間分析及空間可視化表達的前提。ArcGIS支持的數據格式比較豐富,對不同的數據格式支持的程度也有很大差異。本文主要介紹一下以下八種數據格式在ArcGIS Engine中如何訪問。對ArcGIS桌面應用有一定了解的讀者更適合閱讀本文。本文的示例代碼是用C#編寫。
(1)Shapefile
(2)Coverage
(3)Personal Geodatabase
(4)Enterprise Geodatabase
(5)Tin
(6)Raster
(7)CAD
(8)RDBMS
在通過ArcGIS訪問數據之前,需要首先明確一下什么是"工作空間"。在ArcGIS中工作空間指存放數據的位置,ArcGIS訪問數據的機制是先打開數據對應的工作空間,然后用工作空間訪問數據。對于不同的數據格式,工作空間的具體情況也是不一樣的,下面分別進行闡述。
1.Shapefile
Shapefile是文件型的空間數據格式,以文件的形式在磁盤上進行存儲空間數據和屬性數據。下面的示例代碼是打開位于D:\Data文件夾下的文件名為Cities的Shapefile要素類。對于Shapefile來說工作空間就是它所在的文件夾, 打開工作空間需要使用對應的工作空間工廠,即ShapefileWorkspaceFactoryClass,然后再調用IWorkspaceFactory的OpenFromFile方法就可以得到一個工作空間了,這也是設計模式中工廠方法的體現。工作空間工廠的打開方法返回的是一般意義的工作空間,根據具體數據還需要進行接口轉換,因為Shapefile是矢量數據,所以把工作空間接口跳轉到IFeatureWorkspace,從而讀取其中的要素類,這一點對于接下來的幾個數據格式也是同樣的打開方式。
2.Coverage
Coverage是ArcInfo workstation的原生數據格式。該格式是基于文件夾存儲的,是因為在windows資源管理器下,它的空間信息和屬性信息是分別存放在兩個文件夾里。coverage是一個非常成功的早期地理數據模型,二十多年來深受用戶歡迎,很多早期的數據都是coverage格式的。ESRI不公開coverage的數據格式,但是提供了coverage格式轉換的一個交換文件(interchange file,即E00),并公開數據格式。但是ESRI為推廣其第三代數據模型geodatabase,從ArcGIS
8.3版本開始,屏蔽了對coverage的編輯功能。如果需要使用coverage格式的數據,可以安裝ArcInfoworkstation,或者將coverage數據轉換為其他可編輯的數據格式。Coverage是一個集合,它可以包含一個或多個要素類。 Coverage數據的工作空間也是它所在的文件夾;由于Coverage可以包含多個要素類,得到工作空間后在打開具體的要素類時可以用"Coverage名稱:要素類名稱",例如下面代碼中的"basin:polygon"。
3.Personal Geodatabase
Geodatabase作為ArcGIS的原生數據格式,體現了很多第三代地理數據模型的優勢。Personal Geodatabase基于Microsoft Access一體化存儲空間數據和屬性數據。Enterprise Geodatabase通過大型關系數據庫+ArcSDE實現,ArcSDE作為中間件把關系數據庫中的普通表轉化為空間對象。Personal Geodatabase數據的工作空間指的是擴展名為mdb的文件。以下是打開位于Monto.mdb中的Water要素類的代碼。
4.Enterprise Geodatabase
ArcSDE(Enterprise Geodatabase)對應的工作空間為數據庫連接,關系數據庫是Oracle時連接參數需要五個,分別是SERVER、INSTANCE、USER、PASSWORD、VERSION。SERVER指服務器的主機名,INSTANCE指服務名或端口號,USER是數據庫的用戶名,PASSWORD數據庫對應用戶的密碼,VERSION指Enterprise Geodatabase多版本機制中的某個版本,默認的一個版本是"SDE.DEFAULT",如果關系數據庫是SQL Server,那么連接參數還需要Database參數。下面是打開Enterprise Geodatabase中ControlPoint點要素類的代碼,關系數據庫為Oracle9i。
5.TIN
TIN全稱不規則三角網,也叫不規則三角表面,采用一系列不規則的三角點來建立表面。例如,每一個采樣點有一對x,y坐標和一個表面值(z值),這些點被一組互不重疊的三角形的邊所連接,從而構成一個表面。TIN數據是空間分析和三維分析重要的數據格式,以文件的形式在磁盤上存儲。TIN的工作空間是所在的文件夾,下面代碼是打開D:\ArcTutor\3DAnalyst文件夾下名稱為mal的TIN。
6.Raster
柵格數據也是GIS數據中很重要的一部分,ArcGIS中最常用的文件型有GRID、TIFF、ERDAS IMAGE等,這幾種柵格數據的工作空間也是所在的文件夾。打開柵格數據時需要使用柵格工作空間工廠(RasterWorkspaceFactory),然后再使用IRasterWorkspace接口的打開柵格數據集方法即可打開一個柵格數據集。在打開柵格數據集時,如果數據格式為是ESRI GRID,那么OpenRasterDataset()方法的參數為柵格要素集的名稱,如果數據格式為TIFF格式,那么該方法的參數為完整的文件名,即要加上.tif擴展名,例如OpenRasterDataset("hillshade.tif")。下面代碼為打開GRID格式的柵格數據。
7.CAD
CAD數據也可以通過AO直接訪問,訪問CAD數據的方式與Coverage類似,但是注意要使用CAD的工作空間工廠,以下是打開一個dxf的CAD數據,在打開要素類時使用"cad文件名:要素類名稱" , 注意cad 文件名要包含擴展名, 否則會報錯。以下代碼是打開位于D:\ArcTutor\Editor\ExerciseData\EditingFeatures文件夾下的buildings.dxf中的多邊形要素類。
8.RDBMS
一般關系表中的數據也可以通過ArcGIS直接讀取,這為數據的共享提供了極大的便利,對于一些業務上的非空間數據,通過使用OLE方式可以很方便的實現數據訪問,業務數據可以位于各種關系數據庫中,以下代碼是訪問位于Microsoft Access中的Custom表,當然也可以訪問Oralce或SQL Server中的數據,只要變化以下連接字符串(CONNECTSTRING)就可以了。
總結
以上為ArcGIS最常用的幾種數據的訪問方法,訪問數據進行GIS分析、數據處理和空間可視化的,在獲取到數據以后可以把數據加到圖層里,也可以對數據進行檢索或維護等工作。
浙公網安備 33010602011771號