arcgis打開常用數(shù)據(jù)的源碼

上傳人:陽*** 文檔編號(hào):40075692 上傳時(shí)間:2021-11-13 格式:DOC 頁數(shù):7 大小:25.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
arcgis打開常用數(shù)據(jù)的源碼_第1頁
第1頁 / 共7頁
arcgis打開常用數(shù)據(jù)的源碼_第2頁
第2頁 / 共7頁
arcgis打開常用數(shù)據(jù)的源碼_第3頁
第3頁 / 共7頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《arcgis打開常用數(shù)據(jù)的源碼》由會(huì)員分享,可在線閱讀,更多相關(guān)《arcgis打開常用數(shù)據(jù)的源碼(7頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、數(shù)據(jù)是GIS的血液,訪問數(shù)據(jù)也是進(jìn)行任何復(fù)雜的空間分析及空間可視化表達(dá)的前提。ArcGIS支持的數(shù)據(jù)格式比較豐富,對(duì)不同的數(shù)據(jù)格式支持的程度也有很大差異。本文主要以C#作為示例代碼介紹工作中常用的八種數(shù)據(jù)格式(Shape,Personal Geodatabase,Enterprise Geodatabase,Tin,Raster,CAD,RDBMS)在ArcGIS Engine中的訪問方法。 在通過ArcGIS訪問數(shù)據(jù)之前,需要首先明確一下什么是"工作空間"。在ArcGIS中工作空間指存放數(shù)據(jù)的位置,ArcGIS訪問數(shù)據(jù)的機(jī)制是先打開數(shù)據(jù)對(duì)應(yīng)的工作空間,然后用工作空間訪問數(shù)據(jù)。對(duì)于不同的數(shù)據(jù)

2、格式,工作空間的具體情況也是不一樣的,下面分別進(jìn)行闡述。 Shapefile Shapefile是文件型的空間數(shù)據(jù)格式,以文件的形式在磁盤上進(jìn)行存儲(chǔ)空間數(shù)據(jù)和屬性數(shù)據(jù)。下面的示例代碼是打開位于D:/Data文件夾下的文件名為Cities的Shapefile要素類。對(duì)于Shapefile來說工作空間就是它所在的文件夾,打開工作空間需要使用對(duì)應(yīng)的工作空間工廠,即Shape,然后再調(diào)用IWorkspaceFactory的OpenFromFile方法就可以得到一個(gè)工作空間了,這也是設(shè)計(jì)模式中工廠方法的體現(xiàn)。工作空間工廠的打開方法返回的是一般意義的工作空間,根據(jù)具體數(shù)據(jù)還需要進(jìn)行接口轉(zhuǎn)換,因

3、為Shapefile是矢量數(shù)據(jù),所以把工作空間接口跳轉(zhuǎn)到IFeatureWorkspace,從而讀取其中的要素類,這一點(diǎn)對(duì)于接下來的幾個(gè)數(shù)據(jù)格式也是同樣的打開方式。 IWorkspaceFactory pWorkspaceFactory; pWorkspaceFactory = new Shape(); IFeatureWorkspace pFeatWS; pFeatWS = pWorkspaceFactory.OpenFromFile(@"D:/Data/", 0) as IFeatureWorkspace; //打開一個(gè)要素類 IFeatureClass pFeatureCla

4、ss = pFeatWS.OpenFeatureClass("Cities"); Coverage Coverage是ArcInfo workstation的原生數(shù)據(jù)格式。該格式是基于文件夾存儲(chǔ)的,是因?yàn)樵趙indows資源管理器下,它的空間信息和屬性信息是分別存放在兩個(gè)文件夾里。coverage是一個(gè)非常成功的早期地理數(shù)據(jù)模型,二十多年來深受用戶歡迎,很多早期的數(shù)據(jù)都是coverage格式的。ESRI不公開coverage的數(shù)據(jù)格式,但是提供了coverage格式轉(zhuǎn)換的一個(gè)交換文件(interchange file,即E00),并公開數(shù)據(jù)格式。但是ESRI為推廣其第三代數(shù)據(jù)模型g

5、eodatabase,從ArcGIS 8.3版本開始,屏蔽了對(duì)coverage的編輯功能。如果需要使用coverage格式的數(shù)據(jù),可以安裝ArcInfo workstation,或者將coverage數(shù)據(jù)轉(zhuǎn)換為其他可編輯的數(shù)據(jù)格式。Coverage是一個(gè)集合,它可以包含一個(gè)或多個(gè)要素類。Coverage數(shù)據(jù)的工作空間也是它所在的文件夾;由于Coverage可以包含多個(gè)要素類,得到工作空間后在打開具體的要素類時(shí)可以用"Coverage名稱:要素類名稱",例如下面代碼中的"basin:polygon"。 IWorkspaceFactory pFactory = new ArcInfoWorksp

6、aceFactoryClass(); IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:/ArcTutor/TopologyData", 0); IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("basin:polygon"); Personal Geodatabase Geodatabase作為ArcGIS的原生數(shù)據(jù)

7、格式,體現(xiàn)了很多第三代地理數(shù)據(jù)模型的優(yōu)勢(shì)。Personal Geodatabase基于Microsoft Access一體化存儲(chǔ)空間數(shù)據(jù)和屬性數(shù)據(jù)。Enterprise Geodatabase通過大型關(guān)系數(shù)據(jù)庫(kù)+ArcSDE實(shí)現(xiàn),ArcSDE作為中間件把關(guān)系數(shù)據(jù)庫(kù)中的普通表轉(zhuǎn)化為空間對(duì)象。Personal Geodatabase數(shù)據(jù)的工作空間指的是擴(kuò)展名為mdb的文件。以下是打開位于Monto.mdb中的Water要素類的代碼。 IWorkspaceFactory pFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorks

8、pace = pFactory.OpenFromFile(@"D:/ArcTutor/Monto.mdb", 0); IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("Water") EnterpriseGeodatabase ArcSDE(Enterprise Geodatabase)對(duì)應(yīng)的工作空間為數(shù)據(jù)庫(kù)連接,關(guān)系數(shù)據(jù)庫(kù)是Oracle時(shí)連接參數(shù)需要五個(gè),分別是SER

9、VER、INSTANCE、USER、PASSWORD、VERSION。SERVER指服務(wù)器的主機(jī)名,INSTANCE指服務(wù)名或端口號(hào),USER是數(shù)據(jù)庫(kù)的用戶名,PASSWORD數(shù)據(jù)庫(kù)對(duì)應(yīng)用戶的密碼,VERSION指Enterprise Geodatabase多版本機(jī)制中的某個(gè)版本,默認(rèn)的一個(gè)版本是"SDE.DEFAULT",如果關(guān)系數(shù)據(jù)庫(kù)是SQL Server,那么連接參數(shù)還需要Database參數(shù)。下面是打開Enterprise Geodatabase中ControlPoint點(diǎn)要素類的代碼,關(guān)系數(shù)據(jù)庫(kù)為Oracle9i。 IWorkspaceFactory pWorkspaceFacto

10、ry = new SdeWorkspaceFactoryClass(); IPropertySet propSet = new PropertySetClass(); propSet.SetProperty("SERVER", "actc");propSet.SetProperty("INSTANCE", "5151"); propSet.SetProperty("USER", "apdm"); propSet.SetProperty("PASSWORD", "apdm"); propSet.SetProperty("VERSION", "SDE.DEFAULT"); IWorks

11、pace pWorkspace = pWorkspaceFactory.Open(propSet, 0); IFeatureWorkspace pFeatWS = pWorkspace as IFeatureWorkspace; IFeatureClass pFeatureClass= pFeatWS.OpenFeatureClass("ControlPoint"); TIN TIN全稱不規(guī)則三角網(wǎng),也叫不規(guī)則三角表面,采用一系列不規(guī)則的三角點(diǎn)來建立表面。例如,每一個(gè)采樣點(diǎn)有一對(duì)x,y坐標(biāo)和一個(gè)表面值(z值),這些點(diǎn)被一組互不重疊的三角形的邊所連接,從而構(gòu)成一個(gè)表面。TIN數(shù)據(jù)是空

12、間分析和三維分析重要的數(shù)據(jù)格式,以文件的形式在磁盤上存儲(chǔ)。TIN的工作空間是所在的文件夾,下面代碼是打開D:/ArcTutor/3DAnalyst文件夾下名稱為mal的TIN。 IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); IWorkspace pWS = pWSFact.OpenFromFile(@"D:/ArcTutor/3DAnalyst/", 0); ITinWorkspace pTinWS = pWS as ITinWorkspace; ITin pTin = pTinWS.OpenTin("mal")

13、; Raster 柵格數(shù)據(jù)也是GIS數(shù)據(jù)中很重要的一部分,ArcGIS中最常用的文件型有GRID、TIFF、ERDAS IMAGE等,這幾種柵格數(shù)據(jù)的工作空間也是所在的文件夾。打開柵格數(shù)據(jù)時(shí)需要使用柵格工作空間工廠(RasterWorkspaceFactory),然后再使用IRasterWorkspace接口的打開柵格數(shù)據(jù)集方法即可打開一個(gè)柵格數(shù)據(jù)集。在打開柵格數(shù)據(jù)集時(shí),如果數(shù)據(jù)格式為是ESRI GRID,那么OpenRasterDataset()方法的參數(shù)為柵格要素集的名稱,如果數(shù)據(jù)格式為TIFF格式,那么該方法的參數(shù)為完整的文件名,即要加上.tif擴(kuò)展名,例如OpenRaste

14、rDataset("hillshade.tif")。下面代碼為打開GRID格式的柵格數(shù)據(jù)。 IWorkspaceFactory rasterWorkspaceFactory = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWorkspace = rasterWorkspaceFactory.OpenFromFile(@"D:/data/grid", 0) as IRasterWorkspace; IRasterDataset rasterDataset= rasterWorkspace.OpenRasterDatas

15、et("ca_hillshade") CAD CAD數(shù)據(jù)也可以通過AO直接訪問,訪問CAD數(shù)據(jù)的方式與Coverage類似,但是注意要使用CAD的工作空間工廠,以下是打開一個(gè)dxf的CAD數(shù)據(jù),在打開要素類時(shí)使用"cad文件名:要素類名稱",注意cad文件名要包含擴(kuò)展名,否則會(huì)報(bào)錯(cuò)。以下代碼是打開位于D:/ArcTutor /Editor/ExerciseData/EditingFeatures文件夾下的buildings.dxf中的多邊形要素類。 IWorkspaceFactory pCadwf = new CadWorkspaceFactoryClass(); IWorks

16、pace pWS = pCadwf.OpenFromFile(@"D:/ArcTutor/Editor/ExerciseData/EditingFeatures", 0); IFeatureWorkspace pCadFWS = pWS as IFeatureWorkspace; IFeatureClass pFeatClass = pCadFWS.OpenFeatureClass("buildings.dxf:polygon"); RDBMS 一般關(guān)系表中的數(shù)據(jù)也可以通過ArcGIS直接讀取,這為數(shù)據(jù)的共享提供了極大的便利,對(duì)于一些業(yè)務(wù)上的非空間數(shù)據(jù),通過使用OLE方式可以很方便

17、的實(shí)現(xiàn)數(shù)據(jù)訪問,業(yè)務(wù)數(shù)據(jù)可以位于各種關(guān)系數(shù)據(jù)庫(kù)中,以下代碼是訪問位于Microsoft Access中的Custom表,當(dāng)然也可以訪問Oralce或SQL Server中的數(shù)據(jù),只要變化以下連接字符串(CONNECTSTRING)就可以了。 //創(chuàng)建一個(gè)連接 IPropertySet pPropset;pPropset = new PropertySetClass(); pPropset.SetProperty("CONNECTSTRING",@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/Company.mdbl/ersist Sec

18、urity Info=False"); //創(chuàng)建一個(gè)新的OleDB工作空間并打開 IWorkspaceFactory pWorkspaceFact; IFeatureWorkspace pFeatWorkspace; pWorkspaceFact = new OLEDBWorkspaceFactoryClass(); pFeatWorkspace = pWorkspaceFact.Open(pPropset, 0) as IFeatureWorkspace; ITable pTTable = pFeatWorkspace.OpenTable("Custom"); 以上為幾種ArcGIS中常用的數(shù)據(jù)格式訪問方法,用以訪問數(shù)據(jù)進(jìn)行GIS分析、數(shù)據(jù)處理和空間可視化,在獲取到數(shù)據(jù)以后可以把數(shù)據(jù)添加到圖層中,也可以對(duì)數(shù)據(jù)進(jìn)行檢索或維護(hù)等工作。 7 / 7文檔可自由編輯打印

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!