基于ArcGIS10.0和Oracle10g的空間數(shù)據(jù)管理平臺(tái)六(C#開(kāi)發(fā))-空間數(shù)據(jù)操作類
本系統(tǒng)的一個(gè)重點(diǎn)功能就是管理空間數(shù)據(jù),所以很多空間數(shù)據(jù)的操作,而且這些操作可能隨時(shí)都可能用到,所以單獨(dú)封裝為一個(gè)獨(dú)立的空間數(shù)據(jù)操作類(地圖操作類)。封裝的函數(shù)都是一些最基本的操作功能,具體實(shí)現(xiàn)基于ArcGIS平臺(tái)的空間數(shù)據(jù)管理還需要很多復(fù)雜的功能和邏輯,后面介紹空間數(shù)據(jù)管理和編輯的時(shí)候會(huì)詳細(xì)介紹。
1.首先我們需要介紹的是連接空間數(shù)據(jù)庫(kù)的代碼函數(shù),具體實(shí)現(xiàn)如下:
上面這個(gè)函數(shù)是采用SDE連接方式,也可以采用直接連接的方式,下面一個(gè)函數(shù)通過(guò)一個(gè)if分支語(yǔ)句來(lái)判斷可以采用SDE也可以采用直接連接的方式實(shí)現(xiàn),具體請(qǐng)看代碼及詳細(xì)的注釋:
代碼注釋里面提到的工作空間就相當(dāng)于一個(gè)數(shù)據(jù)庫(kù),里面包含了各種可以操作的圖層(相當(dāng)于數(shù)據(jù)庫(kù)中的表)。
2.在一個(gè)指定的工作空間中查詢一個(gè)要素類
然后利用這個(gè)函數(shù)實(shí)現(xiàn)了另外一個(gè)函數(shù):通過(guò)要素類名和數(shù)據(jù)集名在指定的工作空間中尋找要素類
3.在數(shù)據(jù)集中查找要素類,一個(gè)數(shù)據(jù)集可能包含多個(gè)要素類,數(shù)據(jù)集就是把一些具有共同特征(共同的數(shù)據(jù)結(jié)構(gòu)類型,空間參考相同等)的數(shù)據(jù)(要素類)劃分成一個(gè)一個(gè)的集合。
4.將一個(gè)要素類從一個(gè)工作空間轉(zhuǎn)移到另外一個(gè)工作空間:例如文件系統(tǒng)目錄(Shape格式文件組成)、mdb或其他格式,文件系統(tǒng)目錄下的所有Shape文件(一個(gè)等同于表結(jié)構(gòu)的數(shù)據(jù)文件,內(nèi)容等同于表里面的數(shù)據(jù))構(gòu)成一個(gè)工作空間。
5.將mdb或Shape文件中要素類轉(zhuǎn)換追加到sde數(shù)據(jù)庫(kù)已有的要素類中,追加的mdb和Shape格式必須同SDE(空間數(shù)據(jù)庫(kù)插件)數(shù)據(jù)庫(kù)中表結(jié)構(gòu)的數(shù)據(jù)格式相同
函數(shù)通過(guò)各自的工作空間和要素類名稱等到具體需要轉(zhuǎn)換的要素類(包括源要素類:mdb或shape格式中的表結(jié)構(gòu)和目標(biāo)要素類:SDE中的表結(jié)構(gòu)),然后調(diào)用mdb2fc完成具體的轉(zhuǎn)換工作,實(shí)現(xiàn)代碼如下:
上面根據(jù)源要素類的每一個(gè)字段的每一個(gè)值依次遍歷并且插入SDE的目的要素類(表)中。
6.在圖層中搜索要素
7.從選擇集中創(chuàng)建要素集
8.得到一個(gè)要素類和數(shù)據(jù)集的空間參考系
9.改變要素類的空間參考
10.根據(jù)各種信息創(chuàng)建要素類
11.導(dǎo)入一個(gè)要素類到目標(biāo)工作空間中
12.編輯空間參照和設(shè)置IFeatureDataset空間參照
這里實(shí)現(xiàn)所有的函數(shù)都是在類MapOperation中,要看懂上面的所有代碼必須要有一些ArcObejct編程的基礎(chǔ)知識(shí),當(dāng)然還包括我前一篇博文介紹的有關(guān)于ArcGIS的相關(guān)知識(shí),為了給大家提供一些ArcObject的編程知識(shí),特別是用C#講解的,我上傳一本電子書,這本書我覺(jué)得很不錯(cuò),講到了很多關(guān)于ArcGIS二次開(kāi)發(fā)的各個(gè)方面。電子書的下載地址:
http://download.csdn.net/detail/wanweiaiaqiang/3824454;或在下載頁(yè)搜索:ArcGIS Engine+C#實(shí)例開(kāi)發(fā)教程。
凌晨1:50,睡覺(jué)了。昨天晚上我們整個(gè)項(xiàng)目組在公司加班到晚上10點(diǎn)以后哦!
浙公網(wǎng)安備 33010602011771號(hào)